Codeforces Round #692 (Div. 1, based on Technocup 2021 Elimination Round 3) 题解&总结 A~F

目前人生中最惨的一次CF……

被B卡住了,过了之后几乎没什么时间搞后面的题了。最后B还FST了。

rating暴跌。

改题的时候发现A~E都水爆了。

%%%gmh77重新拿回红名体验卡。


A

答案上限设置为(2n),后面操作时将其缩小。

本来就在对角线上的不理它,答案减(2)。剩下的点每个至少有(1)的代价,至多有(2)的代价。

每个点((x,y),x eq y)((x,x),(y,y))连边。这样形成了个图,其中((x,y))一定两条出边,((i,i))至多有两条出边。

可以发现形成了若干条链或环。如果是链,那么其中包含的所有((x,y))都只需要(1)的代价;如果是环,其中包含的((x,y))中只有一个需要(2)的代价。


B

一开始推了个错的结论推推式子感觉是对的,写出来之后发现它假了。

重新推式子发现之前推错了,然后找到了比较正确的结论。然而没有注意(x-y)的正负导致FST。(pretest竟然过了)

先计算非问号之间的贡献。

在每个问号位求出(a_i,b_i)分别为它选(0)和选(1)的贡献(和非问号之间)。求这个东西需要借助数组(l_{i,0/1},r_{i,0/1})表示左右的(0)(1)的个数。

考虑两个位置(i<j)分别选(01)(10)的贡献,列出式子做个差。发现差((dots)(x-y))的形式,其中((dots))的东西用(l)(r)表示,它大于等于(0)

所以当(x-y>0)时,(10)更优。所以问号位一定不存在(01),即前面一段都是(1)后面一段都是(0)

反之同理。


C

其实最后三分钟想出来了但是没有时间写。

不过后来改题的时候也确实用了三分钟左右就切了。

https://www.cnblogs.com/jz-597/p/14170193.html


D

这种题放到D真是有些奇怪。不过我也不清楚它该放到哪里。

显然要分出尽量多的(3)。最后可能剩个(2),或者剩个(1)(这时候要舍弃一个(3),换成(2,2)(4)

算出第一问之后,对于第二问贪心处理。

具体就是求出环的大小,比较大的环就一直分(3)出去。最终分为(c_1,c_2,c_3,c_4)四类。

然后按照(nmod 3)分类讨论,分别搞一搞。如果只有(c_1,c_2)(记为(query(c_1,c_2))),那么就先配(1,2),最后再自己配。所有的情况都可以先搞掉那个特殊部分然后转化成这个(query)。为了避免太多的分析所以对于特殊的那个部分我直接分类讨论都做一遍了。


E

比赛的时候瞄了一眼题意看错题认为是神仙题。读懂题意之后秒切。

可以发现(mex_ile sqrt m),所以直接(O(m^{frac{3}{2}}))高斯消元搞是没有问题的。

其实也可以集合幂级数直接做。其中有一部分(frac{1}{1-A}),发现由于(sum A_i=frac{n}{n+1}),所以(FWT(1-A))没有(0)。于是可以通过(FWT)搞出逆元了。

时间复杂度是(O(sqrt mlg m))

于是将这题题面改一下就可以加强了。


F

https://www.cnblogs.com/jz-597/p/14181723.html


最难受的就是搞B好久最终还FST了,害得我没有搞后面的题的机会。

以后打CF前面几题的时候推出阴间的东西需要警惕一下。

原文地址:https://www.cnblogs.com/jz-597/p/14175268.html