題解 Codeforces Round #621 (Div. 1 + Div. 2) (CF1307)


沒水平沒能力只會\(ABCD\),十二點多隨便寫完就爬了。其他補的。\(E\)考場降智,后面兩道神仙題真的不看題解寫不出來。

\(ABC\)懶得放代碼了,反正也沒保存,要的話博客園私信我,評論也行。后面寫題解可能\(ABC\)代碼都不放了,沒意義。

\[A : Cow\ and\ Haybales \]

難度評分:入門難度

發現第\(i\)堆移到第\(1\)堆需要\(a[i]*(i-1)\)的貢獻;隨便算一下特判好了。

\[B : Cow\ and\ Friend \]

難度評分:入門難度

走最大的即可,注意特判\(a[i]=d\ (ans=1)\)以及\(mx>d\ (ans=2)\)的;其它情況\(ans=d/mx+(d\%mx!=0)\)

\[C : Cow\ and\ Message \]

難度評分:普及-

題意是求出現次數最多的子序列,且這個子序列不同的元素不超過\(2\)個。

\(cn[i]\)表示字母i出現的次數,\(c[i][j]\)表示子序列\((i,j)\)出現的次數。讀入的時候處理一下,設現在處理到\(s[i]\),那我們枚舉所有的\(x\),把\(c[x][s[i]]+=cnt[x]\)。這個就是表示所有在\(s[i]\)之前的\(x\)都對這個子串有了貢獻,貢獻是\(cnt[x]\),因為每個\(x\)和這個\(s[i]\)都能組成一個新的子串\((x,s[i])\)。然后再把\(cnt[s[i]]++\)。最后\(ans=Max(Max\{cnt[i]\},Max\{c[i][j]\})\)

\[D : Cow\ and\ Fields \]

難度評分:普及+

題意是選出兩個關鍵點加邊,最大化最短路。

首先明確,加邊只會使最短路變小或不變;因為兩點之間最短距離肯定是\(1\)。所以我們肯定是找到兩點\(i,j\)連個邊,使得這個新值最大;而這個新值又取決於原來1i,jn的最短路。

想到這個之后這個題就非常套路了。正反跑\(dijkstra\),然后就是求\(Min(mindis,Max(D_i+D2_j+1))\)。其中\(D_i\)表示1i的最短路,$D2_i$表示ni的最短路,\(mindis\)表示之前求出來的1~n的最短路(其實就是\(Dn\))。可以對第一維排個序,維護一下第二維的\(Max\)即可。

\(Code-D\)

\[E : Cow\ and\ Treats \]

難度評分:提高-

本來准備看萌神代碼學\(E\),意識到強者的碼風不是蒟蒻可以讀懂的。。最后去請教萌神了QwQ

題意是給你\(n\)頭牛,它們喜歡吃的草甜度為\(s_i\),要吃掉的草的數量為\(h_i\),當一頭牛吃掉\(s_i\)的草之后就躺那里不動了,其他牛看到她就不爽。現要求選出一些牛排在左右兩邊,讓大家都開心。求最大化選出的牛數量以及方案數\((\%1e9+7)\)

觀察一下,發現如果有兩頭牛喜歡同一個甜度的草,她們又排在同一邊,那她們是不會同時獲得快樂的。所以如果有兩頭以上的奶牛喜歡上了同一個甜度的草,她們只能各排一邊。

從這里開始都是萌神教我的(stO 萌神 Orz!):

對於每種草,用vector記錄喜歡它的牛,兩邊不能放超過\(1\)頭。記錄有多少頭可以放左邊,多少頭可以放右邊,多少頭兩邊都可以放。然后看左邊放哪一類右邊放哪一類,乘起來,注意判斷邊界只能給左邊的牛吃。

\(Code-E\)

\[F : Cow\ and\ Vacation \]

難度評分:省選/省選+

\(gugugu\)

\[G : Cow\ and\ Exercise \]

難度評分:省選/省選+

聽萌神說是裸的線性規划轉費用流,可我沒看出來QAQ......(3100的題在萌神那就是模板題難怪人家進隊)

\(gugugu\)

爭取今天更完剩下的,奧利給!

還是鴿讓人快樂。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM