訓練賽後補題 05

2022-09-09 19:03:16 字數 3545 閱讀 7853

2020-06-29 個人訓練賽後補題

我真的欠下了好多題啊,唉,f題補得太久了。

qaq我好菜

廢話不多說,下面是題目:

突然自信jpg……所以,我當時為毛不寫?

//////------------寫**ing

……qaq我還是太天真了,超時了。

以下是我的超時**

1

#pragma warning (disable:4996)

2 #include 3 #include4

#pragma warning (disable:4996)

5 #include 6 #include7 #include8 #include9 #include

10 #include

11#define max1 100005 /*1e5 + 5*/

12#define max2 1000000005 /*le9 + 5*/

13#define max3 200005 /*1e5 + 5*/

14#define max4 5005 /*5e3 + 5*/

15#define max5 1005 /*1e3 + 5*/

16#define t1 27

17#define t2 27

18#define t3 18

19using

namespace

std;

20 typedef long

long

intll;

21#define mol 998244353

2223

char

num1[max3], num2[max3];

24int

main() ;

34int l2y =l2;

35char* p =num2;

36int

i;37

while

(l2) 42}

43else47}

48//

cout << "b:" << p << endl;

49//

"對ans增加s1&s2所代表的的十進位制數的值"

50 p = p + 1

;51 l2--;

52//

"之後s2的值變為原來的一半(向下取整)"53}

54int turn2 = 1;55

int sum = 0;56

for (int k = 0; k < (l1 > l2y ? l1 : l2y); ++k)

63 printf("

%d\n

", sum);64}

65return0;

66 }

行叭修一修我的**

//////----------修**ing

我先簡化了一下自己的**語言邏輯,這樣子看起來乾淨多了【捂臉】

1

//簡化**語言後的主函式:

2int

main() ;

12int l2y =l2;

13char* p =num2;

14int

i;15

while

(l2)

20//

cout << "b:" << p << endl;

21//

"對ans增加s1&s2所代表的的十進位制數的值"

22 p = p + 1

;23 l2--;

24//

"之後s2的值變為原來的一半(向下取整)"25}

26int turn2 = 1;27

int sum = 0;28

for (int k = 0; k < (l1 > l2y ? l1 : l2y); ++k)

35 printf("

%d\n

", sum);36}

37return0;

38 }

然後再是思維優化:

①從a的個位起到a第l2位上,與運算要經過l2到1次,但一旦某一次出現結果為0,那麼後續次次為零。也就是說只要討論a某位是1的時候加了b的幾個1就行,0不用管。

②a與b的與運算僅涉及公有位數的計算,也就是說以短的乙個為基礎次數就夠了。

優化後就是ac**了:如下

1

#pragma warning (disable:4996)

2 #include 3 #include4

#pragma warning (disable:4996)

5 #include 6 #include7 #include8 #include9 #include

10 #include

11#define max1 100005 /*1e5 + 5*/

12#define max2 1000000005 /*le9 + 5*/

13#define max3 200005 /*1e5 + 5*/

14#define max4 5005 /*5e3 + 5*/

15#define max5 1005 /*1e3 + 5*/

16#define t1 27

17#define t2 27

18#define t3 18

19using

namespace

std;

20 typedef long

long

intll;

21#define mol 998244353

2223

char

num1[max3], num2[max3];

24int

main() ;

33for (ll x = 0; x < l2; ++x)

37strrev(num1);

38strrev(num2);

39 ll l2y =l2;

40char* p =num2;

41ll i, j;

42 ll turn2 = 1

;43 ll sum = 0;44

for (i = 0; i < (l1 < l2y ? l1 : l2y); ++i)

49 turn2 *= 2

;50 turn2 %=mol;

51 l2--;52}

53 printf("

%lld\n

", sum);54}

55return0;

56 }

不用longlong也會報錯,因為資料比較大。

訓練賽後補題 10

摘要 2020 07 01 個人訓練賽後補題 題號g,原題codechef ecjn208 題目梗概 已知一堆小朋友的期末成績,要求即時得出一部分平均成績 向上取整 當時沒看懂題,看樣例以為是矩陣或圖我就跳了 我恨英文 超時了超時 1 pragma warning disable 4996 2 in...

訓練賽後補題 07

2020 07 01 個人訓練賽後補題 放題 題面翻譯 chef,chefu和chefina在為了爭論他們三人中誰是石頭剪刀布玩得最好的人吵架。現在為了得出這個答案,他們決定主持一場比賽來找出他們中最好的玩家。他們決定玩n局遊戲。但是他們沒有裁判員來追蹤 分數表 意思大概是沒人幫他們判分吧 幫助他們...

2018 CCPC WFINAL賽後補題

奢侈的旅行 老部落格關了之後就再也沒有寫過科學的dijstra heap,稍微mark一下 include include include include include include define ll long long define n 404040 using namespace std ...