TC SRM 655 DIV1 250,500pt

250:

给一个n*n的格子图,每个格子颜色为白色或者红色。假设刚开始都是白色,每次可以涂k*k的一块正方形格子区域,涂成红色或白色,后面涂的可以覆盖前面涂的。给你最终状态,问从初始状态涂任意次数,可不可以涂成最终状态。

挺不错的题,感觉比500有意思。刚开始想简单了,就从前往后枚举,碰到跟最终状态不同就涂。很显然错了。其实实质还是贪心,因为后涂的覆盖前面涂的,所以从最后开始考虑,每次选一块完整颜色相同的出来,涂成该颜色,然后以后该区域的颜色就不会变了,这样贪心的每次选一块可以涂的区域出来,直到没有了为止。最后判断是否涂成最终状态。

500:

实质就是多元线性方程组的解,取模的。还久没碰这种题了,刚开始就去找这方面的陈题来看,推了半天,发现不过不是这题0和9一样的话,只要看化简一下就完了,剩下就是10的XX次方了。但是这里0和9这两个数跟其他数不一样。然后我就往化简、高斯消元方向想了。其实最土的DP也想过,就是记录9^5个状态,扫一遍5000,枚举状态9,总复杂度9^6*5000,不靠谱。看别人代码后才发现,就是这最土的DP的方向,然后关键要看出每列状态最多32种,所以不用扫描5000,大概就是预处理下,32*9^6的级别吧。

原文地址:https://www.cnblogs.com/seen1020/p/4414326.html