转载请注明出处,谢谢http://blog.csdn.net/ACM_cxlove?viewmode=contents by---cxlove
做题打发时间!
UPD:题目其实还不错,当时的ranklist打不开,只能看到题数,三个队7题,然后若干6题。
UPD:还有两个几何,有空补吧。。。
A:10 * 10网格里放10个battleship,给出每一行,每一列有多少个格子被占,而且不能有不同的battleship在处于八连通。问有多少种可能,确定<=2个位置能够使得解唯一。
解法 :暴搜。加点剪枝,当前行剩下的位置在还剩下那么多船的情况下最多能够占多少格(这部分DP了一下)。但是似乎这个剪枝不明显。。。勉强28S卡过。。。
B:暴力,不断迭代就行。
C:也不难。先把密码表搞出来,然后就开始暴力解析。。。
D:留个坑
大意是有一些格子,绕着边缘着一圈,输出路径。
E:n * n的网格,有一些是障碍 ,第一列有n个物体,每一秒可以同时操作n个物体,最少的时间将物体全部移动到第n列。n个物体的移动方向可以不一样,不能进入 障碍,也不可以有两个物体在同一时刻占同一个格子。
感谢WXF巨巨的指导。
枚举所需时间t,建图,判断最大流。
从源点到第一列的点流量为1,从时刻t - 1的n * n个点到时刻t的n * n个点建边,表示一秒可以到达。然后从所有的最后一列到汇点流量为1。
还是比较巧妙的,流量控制限制,流量为1,也不会出现在某一时刻有两个物体在同一个点。同样从源点到汇点n个流量表示n个物体。
但是我比较SB,不怎么会图论。从时刻t到时刻t + 1每次暴力最大流。。。只要在残留网络上加边,然后跑最大流,叠加之前就行了。
这个题目还是很赞的。。。
F:求一下传递闭包,然后枚举边,如果有额外的路径,就把原先的边删掉。
G:留个坑
点光源,10面镜子(有些反射,有些不反射)。问最后在投影面上有多少被光照到。。。一看就是略坑的几何题。。。
H:3 * n的网格,每次选两个相邻的合并,价值是乘积,求最大的价值。
明显的状态压缩DP,记录之前两行的状态,然后DFS更新。比较烂大街?
I:略神棍,其实n * m都已经溢出了。。。数据中应该没有n * m溢出的,勇敢的写吧。
其实就是求字典序第k大的。
首先求出长度为len的串有多少个,枚举a , ab , bb分别有多少个,然后组合计数一下,就是对于一个合法序列,都双射于一个唯一的划分。
然后就知道结果要求的串的长度 了。
之后从高位开始枚举,可以发现合法串可以分为两类,如果以b开头,那么肯定是以若干个bb开头,然后接下来是a。
或者是直接a开头。如果是以a开头的话,那么后面的串是可以a,b任意的序列。
所以从高位开始枚举,check一下以a开头的串有多少个,如果目标串在范围内,那么首位是a,后面的按位来就行了。或者就是以bb开头,继续枚举。
code:https://github.com/cxlove/ACM_ICPC/tree/master/Regional/East_Central_NA_2013