North America - East Central NA 2013

转载请注明出处,谢谢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

你可能感兴趣的:(North America - East Central NA 2013)