第7次练习部分题解
lzh的传送带(eszy vreosn)
题意
现有一个的方格,每个方格有两个方向,分别是向右和向下,起始是方向都是向右。起始时被标记,接下来进行t步操作,每一步对于每一个被标记的方格,将它身上的标记传给它的方向的那一个,且自身转换成另一种方向,重新被标记。最后询问是否被标记。
做法
数据范围都在之内,放心的暴力跑每一步,对于每一步,对内所有方块进行操作,可以写一个结构体的二维数组,分别存放当前位置的方向和当前位置是否被标记。时间复杂度为。
lzh的传送带(herd vreosn)
题意
现有一个的方格,每个方格有两个方向,分别是向右和向下,起始是方向都是向右。起始时被标记,接下来进行t步操作,每一步对于每一个被标记的方格,将它身上的标记传给它的方向的那一个,且自身转换成另一种方向。最后询问是否被标记。
做法
我们发现t的数据范围到达了,我们没有办法直接枚举步数,但是和都是以内。
考虑第的格子如果经过了次标记,那么第经过了次标记,第经过了次标记。
那么我们只需要知道总共经过几次,通过递推就可以知道总共经过几次。递推需要的时间复杂度为。
我们需要注意,不是第秒时经过次标记,在实际过程中可能有一部分还未能到达,因为一部分格子标记在转移过程中的步数不足(曼哈顿距离)。所以我们可以理解为在某一步之后,不再被重新标记能够正好保证正确性。这一步刚好是。
我们现在知道了第步之后经过多少次标记和如何计算,我们同样也可以算出第步之后经过多少次标记。如果第步之后经过多少次标记和第步之后经过多少次标记不相等(刚好差)。那就说明步之后上刚好被标记。
我们设函数f(int t,int n,int m)
的返回值为第步之后经过多少次标记,我们只需要判断f(t,n,m)-f(t-1,n,m)
得到的是否为,设置此函数,巧妙的避免了重复运算。总时间复杂度为。
lzh摆椅子
题意
构造一个矩阵,使得每行每列的椅子的数量的的奇偶符合要求,且椅子个数尽量最多。
做法
定位是简单思维题,为什么没人做。
考虑全是的矩阵,这样每行每列的奇偶和的奇偶一致,我们需要最少次数的修改使得奇偶符合要求。
我们每修改一个点,就会改变当前位置的行和列的奇偶,如果行和列的要求刚好有相等的和的奇偶不一致的数量,那么我们只需要记录下来这些坐标,然后修改这部分的点即可。
如果行和列的要求和的奇偶不一致的数量不相等,考虑到每修改一个点就能改变当前行列的奇偶,如果行或列里修改过两次,那么行或列的奇偶相当于没变,而列或行有两个地方的奇偶被修改。
可证,行和列的要求和的奇偶不一致的数量的差刚好为偶数时,可以按要求修改,否则不能。
如果不能,直接输出NO。
如果能,对于多余的行或者列,随便找一个列或行,对其中对应的地方修改。
时间复杂度