2012年9月6日
摘要: HDU_3647 一开始不知道暴力搜就能过,后来看别人的题解说直接暴搜加回溯,于是自己也就直接写了个回溯,基本都是写好一段之后直接不停地cpoy、改参数,所以导致代码比较搓……#include<stdio.h>#include<string.h>int N, M;char a[15];void init(){ for(int i = 0; i < 10; i ++) scanf("%s", a + i);}int dfs(int cur, int *H){ if(cur == 10) return 1; int i, h[40]; memcpy 阅读全文
posted @ 2012-09-06 14:45 Staginner 阅读(212) 评论(0) 推荐(0) 编辑
摘要: HDU_3475 由于每个灯的状态有可能控制周围八个灯的状态,这样在dp的时候就要记录至少两行灯的状态的信息,通过枚举对当前行的操作使上一行的灯全部熄灭来完成状态的转移。 如果裸着做的话必然超时,因此要对dp进行优化。 首先,虽然至多有2^10*2^10种不同的状态,但这些状态绝大多数是不合法的,因此我们在dp的过程中可以用一个哈希表记录下来当前拓展出的所有合法的状态,每次只取哈希表中的状态进行决策、转移,这样无论是在空间上还是时间上都优化了很多。 尽管用哈希表解决了空间上的问题,也优化掉了很多无用的状态,但还是会超时,因为对于每一个状态,如果我们都枚举当前行的所有操作的话,那么每次都相当于乘 阅读全文
posted @ 2012-09-06 13:51 Staginner 阅读(254) 评论(0) 推荐(0) 编辑