随笔分类 -  acm解题报告

poj 1185 炮兵阵地 状压dp
摘要:分析:因为每一行的状态和上两行的状态有关,因此dp[i][r][p]代表第i行状态为state[r]以及第i-1行为state[p]时的最大炮台数目;状态是有限的,可以dfs出来代码:#include#include#include#include#include#include#include#include//#define DEBUG //todousing namespace std; int nn;int ans;int m,n,cnt,bin[11],dp[110][110][110],state[100],t,gra[110],_cnt,sum[110];char c;v... 阅读全文

posted @ 2013-12-04 14:16 uestc小田 阅读(162) 评论(0) 推荐(0)

cdoj1365 木杆上的蚂蚁
摘要:Description在一根细木杆上,有一些速度相同蚂蚁,它们有的往左走,有的往右走,木杆很细,只允许一只蚂蚁通过,所以当两只蚂蚁碰头的时候,它们会掉头继续前进,直到走出边界,掉下木杆。已知木杆的长度和每只蚂蚁的名字、位置和初始方向,问依次掉下木杆的蚂蚁花费的时间以及它的名字。分析:对于杆上的蚂蚁,当两个蚂蚁碰头后,它们互换方向,但是我们仍然可以看成它们的方向没有改变,只是一只蚂蚁的路程让另外一只来走而已,所以对于每一只蚂蚁,如果不区分它们,那么它们的时间是可以求出来的,即它们所在的位置到终点的位移。由于每一只蚂蚁的相对位置没有改变,因此根据时间的先后和对应那只蚂蚁的方向,我们就知道了每只蚂蚁 阅读全文

posted @ 2013-11-27 20:02 uestc小田 阅读(1449) 评论(0) 推荐(1)

hdu 2222 Keywords Search(AC自动机入门题)
摘要:初学ac自动机。还要努力。参考了许多代码,仿佛是拷贝的一样了。。。。// hdu Aho-Corasick automation.cpp : 定义控制台应用程序的入口点。//#include #include #include #include #include #include #include using namespace std;int n;char str[1100000];int ans;struct node{ int f; node *fail,*next[26]; node() { f=false; fail=NULL; ... 阅读全文

posted @ 2013-11-07 17:28 uestc小田 阅读(204) 评论(0) 推荐(0)

cdoj 1488 flip game解题报告
摘要:ALGORITHM ANALYSE:bfs+位运算//每个方格里的棋子只有两种状态,因此可用0,1表示,而整个棋盘则可以表示为一个十六位的二进制整数//若要对某个位置做翻转操作,可对整数进行异或操作,棋盘上每个位置上的翻转二进制数是可以预先求得的//bfs对每个位置进行翻转,因为整个棋盘只有十六个位置,因此所有的状态是不超过2^16的,对每个扩展进行标记后可以避免重复的状态//因为状态是有限的,因此队列可以为空CODE:#include #include #include int myqueue[500000],step[500000],qback=0,qfront=0;int flag[50 阅读全文

posted @ 2013-05-17 00:29 uestc小田 阅读(177) 评论(0) 推荐(0)

导航