第十七屆中國計量大學程式設計競賽(同步賽)

2021-10-09 20:10:26 字數 3494 閱讀 7448

比賽位址

b題意:求使得兩個字串相同的最小操作次數

思路:分兩種情況,第一種如果原來sb就是全0字串,那麼只需要打擊一次空格即可操作完成,此時次數最少;第二種通過當前字元對應的已經翻轉的次數及當前字元與目標字元異同來判斷是否需要進行翻轉,分奇數次和偶數次情況,具體見下方**注釋,這裡還需要注意一下,還得判斷一下通過單擊空格以後進行對應字串的翻轉匹配是否會比前一種得到的操作次數更少,更少的話就採取這種,否則去前一種更優

//前面cnt是奇數那當前卡片狀態肯定是已經改變了的,如果這個時候sa=sb,毫無疑問當前卡片是要改變的,cnt++,存下下標,否則的話

//無需改變;如果前面cnt是偶數,當前狀態相同就是相同,無需改變,否則需要改變,儲存下標,cnt++;0的時候要特殊判斷

//注意單擊使得全0的操作也可能使得次數最少,需要進行比較

#include

#include

#include

using

namespace std;

const

int n=

1e5+10;

int loca[n]

,locb[n]

;int

main()

}if(flag)

sc.(len,

'0')

;memset

(loca,0,

sizeof

(loca));

memset

(locb,0,

sizeof

(locb));

int cnt1=

0,cnt2=

0,ta=

0,tb=0;

locb[tb++]=

0;for(

int i=

0;i)else

if(cnt1%2==

0&&cnt1)

if(sa[i]

!=sb[i])}

for(

int i=

0;i)else

if(cnt2%2==

0&&cnt2)

if(sc[i]

!=sb[i])}

if(ta>tb)

else

}return0;

}

c

思路:區間查詢,對每個區間盡可能選擇距當前溫度近的,貪心

#include

#include

using

namespace std;

typedef

long

long ll;

const

int n=

1e5+10;

ll l[n]

,r[n]

;int

main()

else

if(r[i]

}printf

("%lld\n"

,ans);}

return0;

}

f 簽到題

#include

#include

#include

using

namespace std;

intmain()

h

題意:每次讀入乙個區間,刪除對應區間內的數,輸出此時序列中剩下的數中的最大值

思路:線段樹,因為這題資料範圍m到1e5如果每次詢問都遍歷一遍區間尋找答案的話肯定是不行的,想要實現對區間的快速修改以及結果詢問應當使用線段樹

#include

#include

#include

#include

#include

#define inf 0x3f3f3f3f

using

namespace std;

typedef

long

long ll;

const

int n=

4e5+10;

ll a[n]

;struct nodetree[n]

;void

pushup

(int root)

void

build

(int l,

int r,

int root)

int mid=

(l+r)

>>1;

build

(l,mid,root<<1)

;build

(mid+

1,r,root<<1|

1);pushup

(root);}

void

pushdown

(int root)

}void

update

(int l,

int r,

int root)

pushdown

(root)

;//下推標記

int mid=

(tree[root]

.l+tree[root]

.r)>>1;

if(l<=mid)

update

(l,r,root<<1)

;if(r>mid)

update

(l,r,root<<1|

1);pushup

(root);}

ll query

(int l,

int r,

int root)

intmain()

}return0;

}

i 簽到題

#include

using

namespace std;

intmain()

return0;

}

k

思路:暴力判斷回文串,在符合回文的情況下還要符合年月日要求,注意判斷閏年和2月

#include

#include

#include

#include

using

namespace std;

//判斷閏年,閏年2月29天,平年28天

bool

is_leap

(int year)

//判斷月份,大月31天,小月30天,2月特判

intdays

(int month,

int year)

else day=30;

return day;

}int

main()

len++;}

if(len!=

8)flag=

false

;int y=

0,m=

0,d=0;

if(flag)

} cout<}return0;

}

中國計量大學「中競盃」程式設計競賽補題

f 爬塔 高川最喜歡的遊戲當屬 slay the spire,這是一款爬塔遊戲,你需要從一座塔的底部一直爬到頂部,在爬塔的過程中,塔的每一層都有許多的寶物等你來拿。高川從塔的左側開始攀爬,從底部爬到頂部,再從右側從頂部逐步下到底部。塔總共有 n 層,每一層都有很多寶物從左到右排列。在左側攀爬時,他只...

第十七章 Cach 變數大全 TEST 變數

示例注意 包含使用timeout選項的最後乙個命令產生的真值。test t test包含帶有超時的最後乙個命令產生的真值 1或0 test由以下命令設定,無論它們是從終端提示符輸入還是在例程 中遇到 在沒有超時的情況下發出這些命令不會設定 test。注意 test也是由舊版本的if命令設定的。當前塊...

「科大訊飛杯」第十七屆同濟大學 F 排列計算

題目傳送門 天才程式設計師菜哭武和石頭組隊參加乙個叫做國際排列計算競賽 international competition of permutation calculation,icpc 的比賽,這個比賽的規則是這樣的 乙個選手給出乙個長度為 n的排列,另乙個選手給出 m 個詢問,每次詢問是乙個形如...