随笔分类 -  OJ--POJ

摘要:链接这叫树形DP吗。。?断开某条边 求剩下两颗树数权值和的差最小dfs一遍 枚举边 查了n久 wa n次 dp数组没初始化。。在poj上1A感觉应该挺爽 1 #include 2 #include 3 #include 4 #include 5 #include 6 using namespace std; 7 #define N 100010 8 #define M 1000010 9 #define LL long long10 LL dp[Mdp[i])69 o = s-dp[i]-dp[i];70 else71 ... 阅读全文
posted @ 2013-08-25 11:12 _雨 阅读(178) 评论(0) 推荐(0)
摘要:链接刚接触 树上背包。。有点抽象化 找好父亲和儿子的关系 及状态转移方程代码里有详细的注释 就不解释了 1 #include 2 #include 3 #include 4 #include 5 #include 6 using namespace std; 7 #define N 155 8 #define INF 0xfffffff 9 int n,m;10 int w[N][N],o[N],dp[N][N];11 void add(int u,int v)12 {13 w[u][o[u]++] = v;//不在乎内存的邻接表14 }15 void dfs(int root)16... 阅读全文
posted @ 2013-08-24 16:35 _雨 阅读(207) 评论(0) 推荐(0)
摘要:链接与上题类似 预处理一下各字符串之间最大的相同字符数就可以 注意dp要初始为负无穷 1 #include 2 #include 3 #include 4 #include 5 #include 6 using namespace std; 7 #define N 1050 8 int dp[N][11],k[11],q[2][N],w[12][12],f[N]; 9 char s[11][11];10 int compare(int x,int y)11 {12 int i,j,maxz=0;13 for(i = 0 ; i < k[x] ; i++)14 ... 阅读全文
posted @ 2013-08-19 15:11 _雨 阅读(306) 评论(0) 推荐(0)
摘要:http://poj.org/problem?id=1185刚开始思路就错了 想着用保存这一行的状态 然后再去枚举前面两行的状态 这样不能保证前面两行的状态同时满足要求正解:保存两行的状态 再依次枚举前面的各种小错误不断啊 改的一个纠结。。 1 #include 2 #include 3 #include 4 #include 5 #include 6 using namespace std; 7 char c; 8 int p[12],o[1050],dp[2][1050][1050],f[110],x[1050]; 9 int main() 10 { 11 in... 阅读全文
posted @ 2013-08-18 14:26 _雨 阅读(348) 评论(0) 推荐(0)
摘要:http://poj.org/problem?id=2411下次还是去学习下dfs的写法吧 自己乱写的好像有点乱 乱七八糟改了一通过了以1 1 表示横着的 1 0 表示竖着的 枚举每一行的状态 再枚举前一行的状态判断是否可以同存注意最后一行要特殊判断一下 0夹着着的1必须为偶数 1 #include 2 #include 3 #include 4 #include 5 #include 6 using namespace std; 7 #define N 3010 8 #define LL __int64 9 LL dp[15][N],o[2][N],k[15];10 int main()1. 阅读全文
posted @ 2013-08-17 19:42 _雨 阅读(331) 评论(0) 推荐(0)
摘要:http://poj.org/problem?id=1191黑书上P116 想了挺久 没想出来 想推出一公式来着 退不出来。。想偏了 正解:递归 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 using namespace std; 8 #define INF 0xfffffff 9 #define LL long long10 int dp[20][10][10][10][10];11 int aa[10][10],n;12 int divide(int k,int a,int b,int c,int. 阅读全文
posted @ 2013-08-16 18:33 _雨 阅读(238) 评论(0) 推荐(0)
摘要:http://poj.org/problem?id=1160算水过的吧 四重循环没优化 CZ说爆可过 就爆了dp[i][j] = min(dp[i][j],dp[i-1][g]-s) 第i个点建在第j个村庄上 s 是这个点比上个点少的距离 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 using namespace std; 8 #define N 1010 9 #define INF 0xfffffff10 int h[N],dp[40][N];11 int main()12 {13 int ... 阅读全文
posted @ 2013-08-15 22:52 _雨 阅读(200) 评论(0) 推荐(0)