题解-CF1270
这篇题解就当是 CF1466 Good Bye 2020 前磨的最后一把剑。
啊,时间真快啊,打了一年 CF
了。
CF1270A Card Game
一个人无赖,不停出最大的牌即可。所以比最大的牌的大小。
CF1270B Interesting Subarray
很多时候一个序列很难处理的问题,看看两个数是否就能解决。
易证,如果存在多个数的解就存在两个数的解,枚举相邻两个数即可。
CF1270C Make Good
设当前和为 \(s\),异或和为 \(x\),有两个巧妙的做法:
-
考虑异或的性质,用两个数解决这道题:\(x,x+s\)。
-
如果用一个数解的话,这个数应该是固定存在的。分析这个数的性质:
- 如果 \(s\) 是奇数,先用这个数把它填成偶数。
- 否则对于每个 \(i\),如果 \(x\) 的第 \(i\) 位和 \(s\) 的第 \(i+1\) 位不等,就填充 \(i+1\) 位。
CF1270D Strange Device
10
分钟难度。在什么信息都没有的时候,考虑先询问 \(1\to k\)。
然后重复 \(n-k\) 次:把得到的数换成下一个没有询问过的数,然后询问。
思考我们得到了哪 \(n-k+1\) 个不同的数。
这不好想,反过来想有哪 \(k-1\) 个数没有被选到。
设 \(r_i\) 为 \(a_i\) 的全场排名,很明显 \(r_i<m\) 的选不到,
还有 \(r_i>n-k+m\) 的也选不到。正好 \(k-1\) 个。
所以要求 \(m\),只需要求未知的数中 \(r_i<m\) 的个数即可。
所以可以从已知的数中选两: \(x<y\)。
然后先把询问的前 \(k-1\) 个填充为未知数,处理到一个未知数的时候,把它和空位替换成 \(x,y\),然后询问。如果得到 \(y\),说明这个数 \(r_i<m\)。
CF1270E Divide Points
做完题知道了:从图论下手这题是不可做的。
现在需要一个固定的准则,把同长的边不染不同色。
以第一个点为原点,考虑每个点两维的奇偶性。
如果都是偶数,全 \(\div 2\)。
-
如果只有 \((0,0)\) 和 \((1,1)\):那么两个集合划开即可。
-
如果有 \((0,1)\) 或 \((1,0)\):\((0,0),(1,1)\) 一个集合,其余一个集合。
CF1270F Awesome Substrings
挺 zz
一题,告诉我们打比赛不要顺序开题/卡题。
根号分治,一维几个 \(1\),一维几倍。
后者用 u_map
/map
要 TLE
的,要数组。
CF1270G Subset with Zero Sum
感觉这种是最非人类的题了:约束问题转图论。
就是 \(1\le i-a_i\le n\),然后连边 \((i,i-a_i)\)。
形成基环树,输出一个连通块的环 \(R\) 即可,证明: