T5
题意:
给你一个(n imes 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]迷宫
不会不会自闭了