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不用longlong也會報錯,因為資料比較大。#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 }
訓練賽後補題 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 ...