日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Codeforces Round #409 (Div. 2)

發布時間:2024/10/12 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Codeforces Round #409 (Div. 2) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

這是一次血崩的cf,腦子不好使了。讀題讀錯...代碼寫錯...查不出錯...WAWAWA

這次題比較常規。前二題很簡單,第三題二分,第四題數學。

?

A - Vicious Keyboard【暴力模擬】

題意:

改變最多一個字符,讓字符串中出現最多的"VK"。

PS:

比賽時做法是先走一遍字符串找"VK“,標記已經構成"VK"的位置。再跑一遍字符串,

如果出現a[i]和a[i-1]都沒標記過,而且a[i-1]=='V' 或a[i]=='K'時,結果+1并跳出循環。

結果 || 寫成了&&,WA了,然后堅信C可做,就放棄檢查了...

做法:

字符串長最多是100,直接O(n2)暴力最保險最容易寫。

版本1:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 #include?<bits/stdc++.h> #define?pii?pair<int,int> #define?MEM(a,b)?memset(a,?b,?sizeof(a)) #define?ll?long?long const?double?pi?=?acos(-1.0); using?namespace?std; int?main()?{ ????string?a; ????cin?>>?a; ????int?len?=?a.size(); ????bool?flag?=?true; ????bool?f[1000]; ????memset(f,?false,?sizeof(f)); ????int?ans?=?0; ????for(int?i?=?1;?i?<?a.size();?i++)?{ ????????if(a[i]?==?'K'?&&?a[i-1]?==?'V')?{ ????????????ans++; ????????????f[i]?=?f[i-1]?=?true; ????????} ????} ????for(int?i?=?1;?i?<?a.size();?i++)?{ ????????if(f[i]?==?true?||?f[i-1]?==?true)?continue; ????????if(a[i]?==?'K'?||?a[i-1]?==?'V')?{ ????????????ans++; ????????????break; ????????} ????} ????cout?<<?ans?<<?endl; }

?版本2:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 #include?<bits/stdc++.h> #define?pii?pair<int,int> #define?MEM(a,b)?memset(a,?b,?sizeof(a)) #define?ll?long?long const?double?pi?=?acos(-1.0); using?namespace?std; int?solve(string?a)?{ ????int?ans?=?0; ????for(int?i?=?1;?i?<?a.size();?i++)?{ ????????if(a[i]?==?'K'?&&?a[i-1]?==?'V')?ans++; ????} ????return?ans; } int?main()?{ ????string?a; ????cin?>>?a; ????int?ans?=?solve(a); ????for(int?i?=?0;?i?<?a.size();?i++)?{ ????????if(a[i]?==?'V')?a[i]?=?'K';?else?a[i]?=?'V';??//改變一個字符 ????????ans?=?max(ans,?solve(a)); ????????if(a[i]?==?'V')?a[i]?=?'K';?else?a[i]?=?'V';??//改回來 ????} ????cout?<<?ans?<<?endl; }

?

B - Valued Keys【模擬】

題意:

a, b, c三個字符串等長, c = f(a,b) 。

函數的意義是取a, b對應字符的最小值 ( 即 c[i] = min ( a[i], b[i] )。

給你a和c,讓你構造一個可行b,如果不存在輸出-1。

做法:

兩種情況:

1.存在則輸出c,因為f(a,c)一定等于c

2.若不存在,即存在任意一個c[i] > a[i],則輸出-1。

1 2 3 4 5 6 7 8 9 10 11 12 13 #include?<bits/stdc++.h> using?namespace?std; int?main()?{ ????string?a,?b; ????cin?>>?a?>>?b; ????for(int?i?=?0;?i?<?a.size();?i++)?{ ????????if(b[i]?>?a[i])?{ ????????????puts("-1"); ????????????return?0; ????????} ????} ????cout?<<?b?<<?endl; }

?

C - Voltage Keepsake【二分求最大化結果】

?題意:

給你N個設備和1個充電器。充電器每單位時間可以沖p份電量。接下來給你N個設備每單位時間的耗電量和初始電量。

所有設備都要保持有電,問你怎么充電使得設備維持時間最長,如果可以無限使用,輸出-1。

做法:

二分時間。根據judge算出每個設備維持mid時間的話,至少需要充多少電。

根據等式 y + t * p = mid * x 累加 t 值, 如果 t 值大于 mid 值說明充電時間不夠,返回false。

如果最終結果超過1e17,說明無限長。

也能通過計算來判斷是否無限長,累加所有設備的耗電量sum,如果 sum <= p,說明可以無限使用。

PS:

?

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 #include?<bits/stdc++.h> #define?pii?pair<int,int> #define?MEM(a,b)?memset(a,?b,?sizeof(a)) #define?ll?long?long const?double?pi?=?acos(-1.0); const?double?eps?=?1e-9; using?namespace?std; struct?Node?{ ????double?x,?y; }node[100100]; int?n; double?p; bool?judge(double?mid)?{ ????double?ans?=?0; ????for(int?i?=?0;?i?<?n;?i++)?{ ????????if(mid?*?node[i].x?<?node[i].y)?continue;??//?y?>?mid?*?x?說明不用充電 ????????double?tp?=?(mid?*?node[i].x?-?node[i].y)?/?p;?//?y?+?t?*?p?=?mid?*?x??根據這個等式累加t ????????ans?+=?tp; ????????if(ans?>?mid)?return?false; ????} ????return?true; } int?main()?{ ????scanf("%d%lf",?&n,?&p); ????for(int?i?=?0;?i?<?n;?i++)?{ ????????scanf("%lf%lf",&node[i].x,?&node[i].y); ????} ????double?mid; ????double?low?=?0,?high?=?1e18;?//注意極值 ????for(int?i?=?0;?i?<?100;?i++)?{??//二分100次 ????????mid?=?(low?+?high)?/?2; ????????if(judge(mid))?low?=?mid; ????????else?high?=?mid; ????} ????if(mid?>?1e17)?puts("-1");??//注意不要1e18-2,浮點數丟精度 ????else?printf("%.10f\n",?mid); }

轉載于:https://www.cnblogs.com/bestwzh/p/6724402.html

總結

以上是生活随笔為你收集整理的Codeforces Round #409 (Div. 2)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。