摘要: 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4528思路:结构体里面不仅要记录x,y,time,还要有2个bool型来记录是否看到二明和大明,因此,对于状态判重,开个4位数组mark[x][y][tag1][tag2],因为根据看到的人不同,我这个点(x,y)还是可以 重复走的,最后就是关于怎么来判断看到的人了,这儿我用了最暴力的方法,就是一开始的时候记录二明和大明所在的位置,然后将其改为'X',因为这两个位置小明是不能走的。然后就是如果横坐标相同,就y方向上看能否看到(同理)。如果对于当前节点p有p.tag1=p.tag2=t 阅读全文
posted @ 2013-05-22 23:28 ihge2k 阅读(236) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1422 1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 #include<algorithm> 5 using namespace std; 6 #define MAXN 222222 7 int level[MAXN]; 8 int dp[MAXN]; 9 int n,w,l;10 11 int main(){12 while(~scanf("%d",&a 阅读全文
posted @ 2013-05-22 21:50 ihge2k 阅读(200) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1300思路:直接写递推方程式:dp[i]=min{dp[j]+value}(0<=j<i,value为第j+1类珠宝到第i类全部以i类买入的价值; );然后我们可以用一个数组记录一下0-i的花费 1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 #include<algorithm> 5 using namespace std; 6 #define MAXN 1111 阅读全文
posted @ 2013-05-22 17:37 ihge2k 阅读(246) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1503思路:如何求最长公共子序列就不说了,另外如果有str2[j]==str1[i],那就mark[i]=j,相当于一个标记。 1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 #include<algorithm> 5 using namespace std; 6 #define MAXN 111 7 int dp[MAXN][MAXN]; 8 char str1[MAXN], 阅读全文
posted @ 2013-05-22 17:02 ihge2k 阅读(458) 评论(0) 推荐(0) 编辑