yyb博客的几道神仙题

该比赛链接

T5

题意:

给你一个\(n\times n\)的网格,开始有\(m\)个被涂成黑色的格子,如果存在三个格子\((x,y)\)\((y,z)\)\((z,x)\)满足\((x,y)\)\((y,z)\)均为黑格子且\((z,x)\)为白格子,那么就将\((z,x)\)涂黑,问最后会有多少个被涂黑的格子。

题解
关键词:构造 染色(hint: 不是原矩阵的染色)

T2

给定一个塔状结构,从上往下的第i层有2i−1个位置。
在最底层有一个(2n−1)的排列,然后往上的每一个格子都等于正下方,左下方,右下方三个数中第二大的那个。
显然已知顶端的数,构造一个满足条件的排列。无解输出"No"

把要的数放在中间,然后让它到达上一层的个数最多,剩下的空位置按照顺序搞就行了。
。。。。(x + 2)(x - 1)(x)(x + 1)(x - 2)。。。。

T3

C - Rabbit Exercise
转自yyb的blog

数轴上有n个点,一开始第i个点在位置ai。
现在按照次序进行m次操作,每次给定一个x,
然后从x−1和x+1两个点中等概率随机选择一个点,将x的坐标关于这个点对称。
这m次操作重复进行K轮,求最终每个点所在位置的期望。

无论怎么样任何一个点每次操作一定是变成\(2a_{x−1}(a_{x+1})−a_x\)
设fx表示x这个点当前的期望,假设当前点要进行依次变换,那么期望为\(\frac{1}{2}((2f_{x−1}−f_x)+(2f_{x+1}−f_x))=f_x+1+f_{x−1}−f_x\)
好的,然后进行K轮就不会了。怎么办呢?(当然是点开题解了啊)。闲着无聊来差分一下(菊开:差分是人类智慧),
\(d_i=f_i−f_{i−1}\),那么执行完一次操作之后:\(di=(f_{i−1}+f_{i+1}−f_i)−f_{i−1}=f_{i+1}−f_i\)\(d_{i+1}=f_{i+1}−(f_{i−1}+f_{i+1}−f_i)=f_i−f_{i−1}\)
好啊,一次操作等价于交换\(d_i,d_{i+1}\),那么我们只要记录一下做完一轮操作之后di都到哪里去了,然后就可以倍增了。

T4

T2的逆向版
给定一个序列 2*n + 1项 还是第二大(中位数)向上传递
求最后顶端那个点的值

中位数套路操作 -> 01转换
二分一个值 序列中的每个数大于等于它为1 小于它的为0
如果有两个连续的0或1 那他们可以直接向上传递(不信你手玩一下)
位置偏中间的那组必然能撑到最后(因为到后来就是直接剪裁两端的值了,不信你手玩一下)
如果没有连续?你手玩一下就知道奇数位都一样,并且他们能撑到最后

【BZOJ5285】[HNOI2018]寻宝游戏
那么把or写成0, and写成1
那么,如果当前操作数前面的运算符和某一位上相同,那么就等价于没有进行操作,否则直接知道了运算结果。
假如只有一个二进制位的话,那么就是一个长度为n的01串x,和一个长度为n的操作串opt。设最后一位为最高位。
如果最终的结果是1,那么意味着\(x>opt\),否则最终结果为0。可以手玩验证。

[ZJOI2018]迷宫
不会不会自闭了

猜你喜欢

转载自www.cnblogs.com/hjmmm/p/10663163.html