Loading

题解-CF1270

CF1270 Good Bye 2019

这篇题解就当是 CF1466 Good Bye 2020 前磨的最后一把剑。

啊,时间真快啊,打了一年 CF 了。


CF1270A Card Game

luogu

一个人无赖,不停出最大的牌即可。所以比最大的牌的大小。

aclink


CF1270B Interesting Subarray

luogu

很多时候一个序列很难处理的问题,看看两个数是否就能解决。

易证,如果存在多个数的解就存在两个数的解,枚举相邻两个数即可。

aclink


CF1270C Make Good

luogu

设当前和为 \(s\),异或和为 \(x\),有两个巧妙的做法:

  1. 考虑异或的性质,用两个数解决这道题:\(x,x+s\)

  2. 如果用一个数解的话,这个数应该是固定存在的。分析这个数的性质:

    • 如果 \(s\) 是奇数,先用这个数把它填成偶数。
    • 否则对于每个 \(i\),如果 \(x\) 的第 \(i\) 位和 \(s\) 的第 \(i+1\) 位不等,就填充 \(i+1\) 位。

aclink


CF1270D Strange Device

luogu

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\)

aclink


CF1270E Divide Points

luogu

做完题知道了:从图论下手这题是不可做的。

现在需要一个固定的准则,把同长的边不染不同色。

以第一个点为原点,考虑每个点两维的奇偶性。

如果都是偶数,全 \(\div 2\)

  1. 如果只有 \((0,0)\)\((1,1)\):那么两个集合划开即可。

  2. 如果有 \((0,1)\)\((1,0)\)\((0,0),(1,1)\) 一个集合,其余一个集合。

aclink


CF1270F Awesome Substrings

luogu

zz 一题,告诉我们打比赛不要顺序开题/卡题。

根号分治,一维几个 \(1\),一维几倍。

后者用 u_map/mapTLE 的,要数组。

aclink


CF1270G Subset with Zero Sum

luogu

感觉这种是最非人类的题了:约束问题转图论。

就是 \(1\le i-a_i\le n\),然后连边 \((i,i-a_i)\)

形成基环树,输出一个连通块的环 \(R\) 即可,证明:

\[\sum_{i\in R} i=\sum_{i\in R}i-a_i\Longleftrightarrow \sum_{i\in R} a_i=0 \]

aclink


\[\Huge\rm Good\ Bye\ 2020 \]

posted @ 2020-12-30 22:04  George1123  阅读(163)  评论(0编辑  收藏  举报