2012年2月18日
摘要: http://acm.hdu.edu.cn/showproblem.php?pid=1011一个寒假没做题了 手生了 对于树形DP我一般用孩子兄弟的思路还是英语不行呀 读题读不懂是所走路径的叶子结点的话 需留下一个兵才能获得洞中brain#include<iostream>#include<stdio.h>#include<string.h>#include<string>#include<algorithm>using namespace std;struct node{ struct next *next;}head[101]; 阅读全文
posted @ 2012-02-18 16:50 夜-> 阅读(194) 评论(0) 推荐(0) 编辑
  2011年12月8日
摘要: 树形DP 此代码还可以优化ans[i][j] 代表以i节点的子树 攻j个城堡 的最优值详解见代码注释http://acm.hdu.edu.cn/showproblem.php?pid=1561#include<iostream>#include<string>#include<string.h>#include<queue>#include<math.h>#include<algorithm>#include<vector>#include<stdio.h>#define Max 0x7ffffff 阅读全文
posted @ 2011-12-08 13:04 夜-> 阅读(167) 评论(0) 推荐(0) 编辑
  2011年12月2日
摘要: ans[i][j]表示 第i个马厩放到第j只马时的最小不高兴值blacksum[i]表示到第i只马时的黑马数详解见代码注释http://acm.timus.ru/problem.aspx?space=1&num=1167#include<iostream>#include<string>#include<string.h>#include<queue>#include<math.h>#include<algorithm>#include<vector>#include<stdio.h>#de 阅读全文
posted @ 2011-12-02 16:49 夜-> 阅读(485) 评论(0) 推荐(0) 编辑
  2011年11月29日
摘要: 树形DP所有DP的思想应该都是一样的 只是换了形式而已用邻接表储存领导和下属的关系 表头表示领导从树根开始递归 以叶子节点为截止点joinsum[i] 表示 第 i 个人参加时最大高兴值 若i参加 他的下属则不能参加unjoinsum[i] 表示 第 i 个人不参加的最大高兴值 若i不参加 他的下属有参加和不参加两种情况 选较大的情况http://acm.timus.ru/problem.aspx?space=1&num=1039#include<iostream>#include<stdio.h>#include<string.h>#include 阅读全文
posted @ 2011-11-29 14:58 夜-> 阅读(273) 评论(1) 推荐(0) 编辑
  2011年11月28日
摘要: 二维DP先把四种字符映射成整数 空格为 4 然后将对应的相似程度值存入sim 数组中以便查找ans[i][j] 表示 a 中第 i 个与 b 中第 j 个为最后时的最大相似程度值其中包括 a[i] 与b[j]成对 a[i]与 空格成对 空格与b[j]成对三种情况要取最大的一种情况以 0 0 为截止点http://acm.hdu.edu.cn/showproblem.php?pid=1080#include<iostream>#include<stdio.h>#include<string.h>#include<algorithm>#include 阅读全文
posted @ 2011-11-28 21:00 夜-> 阅读(160) 评论(0) 推荐(0) 编辑
  2011年11月24日
摘要: 此题使用并查集将多余的航班删去(有环时) 少的航班加上 使得全图联通答案不唯一 所以自己写的和题中实例输出不一样也不一定错还有就是花费最大会超过 long 所以直接用 64位http://acm.timus.ru/problem.aspx?space=1&num=1709#include<iostream>#include<string.h>#include<algorithm>#include<stdio.h>using namespace std;char ans[101][101];int f[101];inline int fin 阅读全文
posted @ 2011-11-24 16:23 夜-> 阅读(679) 评论(0) 推荐(0) 编辑
  2011年11月23日
摘要: 二维DP我感觉DP最重要就是找到递推公式和截止点ans[i][j]表是n为i 时 组合成i的若干个数中最大为j(至少有一个为j)的 种数不知数据多大 直接用了64位http://acm.hdu.edu.cn/showproblem.php?pid=1028#include<iostream>#include<string.h>#include<algorithm>#include<stdio.h>using namespace std;__int64 ans[121][121];__int64 dp(int i,int j){ if(ans[i] 阅读全文
posted @ 2011-11-23 20:24 夜-> 阅读(143) 评论(0) 推荐(0) 编辑
摘要: 简单DPhttp://acm.timus.ru/problem.aspx?space=1&num=1203#include<iostream>#include<string.h>#include<algorithm>using namespace std;int f[30001];//下标表示结束点 所存数据为最晚开始的那个int ans[30001];//ans[i]表示到这个点时最多参加数int main(){ int n,i,l,T; cin>>n; for(i=0;i<30001;i++) f[i]=i;//f[i]==i 阅读全文
posted @ 2011-11-23 19:34 夜-> 阅读(239) 评论(0) 推荐(0) 编辑
摘要: 这题刚开始没想到要用并查集 结果没做出来最后堕落了 查了一下别人的答案才知道的先把边排序 由于边不多所以可以枚举任意两边和他们中间的边(排序后的)如果使得两地点连接 则求出最大差 所以符合的情况的最大差中最小的便是答案http://acm.hdu.edu.cn/showproblem.php?pid=1598#include<iostream>#include<stdio.h>#include<string.h>#include<algorithm>#include<math.h>using namespace std;struct 阅读全文
posted @ 2011-11-23 16:17 夜-> 阅读(147) 评论(0) 推荐(0) 编辑
  2011年11月22日
摘要: http://acm.hdu.edu.cn/showproblem.php?pid=2571二维数组 简单 递推 阅读全文
posted @ 2011-11-22 15:39 夜-> 阅读(128) 评论(0) 推荐(0) 编辑