CodeForces 乱写 1
不过是在打Div2而已
不过CF的题有些性质不是那么明显
仔细想想性质还是挺有意思的
Lex String
这个题字典序要求先对原串排个序
然后就是他咋说咋来的模拟
Mystic Permutation
这个题是个深搜题
所以直接DFS,维护一个是否确定答案就行
写个bool函数就好了
Infected Tree
这个是个树形DP
这个的解法就是封不同点的决策导致不同的子问题
封掉一个点可以保护一整个子树
如果到另一边,就是一个子问题了
然后就是状态设计
定义\(f[i]\)为当前子问题的解,\(c[i]\)为\(i\)的子树大小(不包含\(i\))
阶段就是\(i\),状态一样
决策就是封左和右,记为\(son[i][0]\)和\(son[i][1]\)
状态转移方程就是
\(f[i]=max(f[son[i][1]]+c[son[i][0]],f[son[i][0]]+c[son[i][1]]\)
Lena And Matrix
这个是性质比较好的题
赛时没啥思路就写了暴力
首先枚举每个黑点,然后更新每个方格
时间复杂度为\(O(N^2M^2)\)
但是这个跑\(N*M=10^6\)
真·\(N^2\)过百万
考虑优化
实际上对于每个格子来说,被考虑的格子仅有
左上,右上,左下和右下4种情况
画个正方形就可以感性理解一下
然后就可以以\(O(NM)\)的时间复杂度过掉了
Cirno's Perfect Bitmasks Classroom
大水题*1
首先满足按位与的性质:
答案在二进制表示下至少有一个1同原数在二进制表示的下的一个1位置相同
要求答案尽可能小,于是取个\(lowbit\)就是答案的一部分
然后满足按位异或的性质:
答案在二进制表示下至少有一个1同原数在二进制表示的下的一个0位置相同
要求答案尽可能小,于是取个最低位0也是答案的一部分
然后加到一块就行了
但是加之前还有就是按位与的答案也可以满足按位异或的情况,就不用再按位异或了
Patchouli's Magical Talisman
把一个偶数转换成奇数的最小步数为1,就是一个奇数和它相加
如果有奇数,答案就是偶数的个数,
因为奇数+偶数=奇数,所以可以在不改变奇数性质前提下减少一个偶数
如果没有奇数,可以把一个偶数通过操作2变成奇数
显然最后所有都要加一个\(n-1\),于是贪心选择操作2次数最少的加入答案就行了
Manipulating History
观察样例就会有一个奇妙的性质,就是:
答案一定只出现奇数次!
如果把添加一个作为\(+1\),消除一个作为\(-1\)
如果最后仅剩下一个字符,那么别的必定会被消除,也就是说:
答案一定只出现奇数次

浙公网安备 33010602011771号