摘要: 经典dp乍看好像是完全背包 因为无限个但是其实每个砖头只有三种情况 将这些情况都当成一个新的砖头放进brick里面就可以了这里要注意 一开始我的判断是下面砖头的x y 分别大于 上面的 x y 这样可以 但要在加入exchange 中做点修改使得每个brick 的 x 都小于 y例如 brickA 3 9 12 brickB 4 2 13则 brickA 会加入 9 12 3, 12 3 9 (旋转加入) brickB 2 13 4, 13 4 2如果不限制 x < y 将检测不到 3 9 12和 2 4 13这种合法情况其实就是 你check 判断的是 x y分别是否小于 但没判断 x 阅读全文
posted @ 2013-03-21 11:46 April_Tsui 阅读(203) 评论(0) 推荐(0) 编辑
摘要: 简单的树形dpdp[i] 表示以i为根的包括i 的最大欢乐度f[i] 表示以i为根不包括i 的最大欢乐度叶节点则为 f[i] = 0, dp[i] = w[i] 只要初始化 dp f 都全为0 就可以了 dfs会自动复制说实话我觉得这题很不严谨 他说欢乐度可以为负值 按理来说如果小于0 就应该将欢乐度设为0 表示那个人不参加最后是 无论设不设为0 都AC 证明根本没有欢乐度为负值的要注意的是1. 不是只有一个case 我一开始以为只有一个case 一直错 要处理到没有输入为止。。。 题目又没说明2. 有可能有多棵树 所以要多次dfs()View Code Anniversary partyTi 阅读全文
posted @ 2013-03-20 10:55 April_Tsui 阅读(155) 评论(0) 推荐(0) 编辑
摘要: 树形dpdp[i][j] 代表以i为根节点 包含根节点的 有j个城堡f[i][j] 代表以i为根节点 不包含根节点 的 j个城堡View Code The more, The BetterTime Limit : 6000/2000ms (Java/Other) Memory Limit : 32768/32768K (Java/Other)Total Submission(s) : 1 Accepted Submission(s) : 1Font: Times New Roman | Verdana | GeorgiaFont Size: ← →Problem Description... 阅读全文
posted @ 2013-03-19 21:46 April_Tsui 阅读(135) 评论(0) 推荐(0) 编辑
摘要: krusal 最小生成树 最最最最简单的!!但是我一开始总是忘了 把 r 的大小是n*(n-1)/2 WA了好多次!!!还有记得先排序噢~View Code 继续畅通工程Time Limit : 2000/1000ms (Java/Other) Memory Limit : 32768/32768K (Java/Other)Total Submission(s) : 9 Accepted Submission(s) : 2Font: Times New Roman | Verdana | GeorgiaFont Size: ← →Problem Description省政府“畅通工程”... 阅读全文
posted @ 2013-03-18 16:01 April_Tsui 阅读(161) 评论(0) 推荐(0) 编辑
摘要: krusal 其实只要连接强连通图的个数-1 就可以了 我还每次都find一下他们的父亲是否一样强连通图个数 = fa[i] == i 的个数prim 则最主要将连通了的边权值设为0题目:View Code Connect the CitiesTime Limit : 2000/1000ms (Java/Other) Memory Limit : 32768/32768K (Java/Other)Total Submission(s) : 19 Accepted Submission(s) : 2Font: Times New Roman | Verdana | GeorgiaFont... 阅读全文
posted @ 2013-03-17 21:54 April_Tsui 阅读(157) 评论(0) 推荐(0) 编辑
摘要: 并查集 + 贪心想了很久以变形的dijkstra实现 但发现不行 因为我们贪心的涉及两个数 最大值 最小值 不能将两者确定如果贪心当前的差值最小 显然是欠妥的并查集 中 的find 是回溯很关键 其实每次merge后 fa数组还没变化的 但要find了才会更新View Code find the most comfortable roadTime Limit : 1000/1000ms (Java/Other) Memory Limit : 32768/32768K (Java/Other)Total Submission(s) : 2 Accepted Submission(s) :... 阅读全文
posted @ 2013-03-16 00:12 April_Tsui 阅读(165) 评论(0) 推荐(0) 编辑
摘要: 方格取数(1)Time Limit : 10000/5000ms (Java/Other)Memory Limit : 32768/32768K (Java/Other)Total Submission(s) : 3Accepted Submission(s) : 1Font:Times New Roman|Verdana|GeorgiaFont Size:←→Problem Description给你一个n*n的格子的棋盘,每个格子里面有一个非负数。从中取出若干个数,使得任意的两个数所在的格子没有公共边,就是说所取的数所在的2个格子不能相邻,并且取出的数的和最大。Input包括多个测试实例, 阅读全文
posted @ 2013-03-13 17:55 April_Tsui 阅读(168) 评论(0) 推荐(0) 编辑
摘要: 非常好的状态DP 典型的状态DP// +/- > (<<) > == > |/&#include <stdio.h>#include <stack>using std::stack;const int INF = 0x3f3f3f3f ;struct node{ char name[105]; int deadline, time;}course[17];struct DP{ int point, time, pos, past;}dp[1<<17];stack<int> s;int main(){ int 阅读全文
posted @ 2013-03-13 16:10 April_Tsui 阅读(204) 评论(0) 推荐(0) 编辑
摘要: 翻译 字典树 和 map 都可以字典树265 MS63592 KB map 1906MS 36100 KBView Code /*scanf printf gets dont apply to stringcan only use cin or cout*/#pragma warning( disable: 4786 ) //防止stl里面的warning#include <stdio.h>#include <iostream>#include <string>#include <map>using namespace std; // cin / 阅读全文
posted @ 2013-03-12 16:53 April_Tsui 阅读(162) 评论(0) 推荐(0) 编辑
摘要: 其实就是求出现的次数最多的数因为输入有30位 我也不明白为毛用map就可以的 而且为毛可以scanf("%I64", &level)明明int64最多18位 会溢出 但一到map就算level溢出了 只要数是一样的他照样行=-=如 9999999999999999999999999999999999999999999999 虽然溢出level为负数但map神奇地找到 而且可以++ =-=可能与map里面以红黑树储存有关吧 。。。。View Code #include <stdio.h>#include <string.h>#include & 阅读全文
posted @ 2013-03-12 14:34 April_Tsui 阅读(84) 评论(0) 推荐(0) 编辑