04 2014 档案

摘要:待做。 阅读全文
posted @ 2014-04-30 23:57 e0e1e 阅读(89) 评论(0) 推荐(0)
摘要:待做。 阅读全文
posted @ 2014-04-30 23:52 e0e1e 阅读(85) 评论(0) 推荐(0)
摘要:注意变换思维,然后就是水题。(如果卡时还可以进一步二分优化。)#include long existed[10000][32];int main(void){ int N;// freopen("poj2443.txt", "r", stdin); scanf("%d", &N);... 阅读全文
posted @ 2014-04-30 23:51 e0e1e 阅读(185) 评论(0) 推荐(0)
摘要:裸的树的重心,要注意的问题是此题的边并没有给出准确的父子拓扑关系,所以需要建双向的边,所以以后要看清题意做仔细分析。可以知道一个结点的子树必定是 它的拓扑子树 和 根树去掉这个拓扑结点树本身,思路也就很明显了。 1 // poj1655 Balancing Act 2 #include 3 #in... 阅读全文
posted @ 2014-04-30 21:36 e0e1e 阅读(179) 评论(0) 推荐(0)
摘要:寄存器分配,是通过将程序变量尽可能地分配到寄存器,从而提高程序执行速度的一种方法。寄存器是编译器优化中最为重要的问题之一(好的寄存器分配能够提高程序执行速度超过250%);也是编译器理论中最热点的研究领域之一(研究界已经提出来大量寄存器分配相关的算法)。1. 图着色(graph coloring)方... 阅读全文
posted @ 2014-04-29 03:51 e0e1e 阅读(3047) 评论(0) 推荐(1)
摘要:树的重心定义1:找到一个点,其所有的子树中最大的子树节点数最少,那么这个点就是这棵树的重心。定义2:以这个点为根,那么所有的子树(不算整个树自身)的大小都不超过整个树大小的一半。性质1:树中所有点到某个点的距离和中,到重心的距离和是最小的;如果有两个重心,那么他们的距离和一样。性质2:把两个树通过一... 阅读全文
posted @ 2014-04-19 03:00 e0e1e 阅读(184) 评论(0) 推荐(0)
摘要:即求树上每点的最长路,先求出树的直径上的一点(dfs、bfs均可,寻找第一点我用的bfs),然后再从这点搜出树直径的另一点。可以证明每点的最长路是到这两点的距离之一(因为树是连通的,因为是树的直径,如果某点s到直径某点t的距离小于到另一点u的距离,那么u就可以代替t成为树的直径了。本题恶心的是内存限... 阅读全文
posted @ 2014-04-13 16:11 e0e1e 阅读(184) 评论(0) 推荐(0)
摘要:treedp, 选取节点使得不能具有父子节点的同时被选中并统计满足条件树的rating和最大值。#include using namespace std;#define max(a,b) ((a)>(b)?(a):(b))int rating[6005];int tree[6005][6005], N;int dp[6005][2];void dfs(int n){ dp[n][0] = 0, dp[n][1] = rating[n]; for(int i=1; i 0) { int i; for(i=0; i<N; ++i) { ... 阅读全文
posted @ 2014-04-12 14:25 e0e1e 阅读(123) 评论(0) 推荐(0)
摘要:TOJ1068 商务旅行Time Limit:1s Memory Limit:10000kProblem某首都城市的商人要经常到各城镇去做生意,他们按自己的路线去做,目的是为了更好的节约时间。假设有N个城镇,首都编号为1,商人从首都出发,其他各城镇之间都有道路连接,任意两个城镇之间如果有直连道路,在他们之间行驶需要花费单位时间。该国公路网络发达,从首都出发能到达任意一个城镇,并且公路网络不会存在环。你的任务是帮助该商人计算一下他的最短旅行时间。Input该题含有多组测试数据。每组数据的第一行有一个整数N,1<=n<=30 000,为城镇的数目。下面N-1行,每行由两个整数a 和b 阅读全文
posted @ 2014-04-12 03:04 e0e1e 阅读(225) 评论(0) 推荐(0)
摘要:原题:聪明的猴子Time Limit: 2000/1000 MS (Java/Others)Memory Limit: 32768/32768 K (Java/Others)Problem Description森林中有一排香蕉树(无限长),一只猴子站在其中一棵树上,猴子在跳跃前要先抽取一张卡片,卡片上写有A+1个自然数,其中最后一个是B,前A个数只能小于等于B,卡片上的数字可以相同。猴子每次跳跃先从卡片上任选一个自然数C,然后向左、或向右跳C棵树。猴子的任务是:跳到与它左边相邻的香蕉树上时,就可以吃掉上面的香蕉。例如,当A=2,B=4时,对于卡片(2, 3, 4),猴子就可以吃到香蕉:它可以 阅读全文
posted @ 2014-04-11 23:45 e0e1e 阅读(202) 评论(0) 推荐(0)
摘要:搜索加各种剪枝,很悲剧写了N个小时还是超时,只好弃坑了。(P.S. 谁能再告诉我一些优化思路。。。感激不尽。。。)测试数据:------- test 1 ----11 2------- test 2 ----11 1------- test 3 ----17 7------- test 4 ----29 2------- test 5 ----19 8------- test 6 ----17 1------- test 7 ----19 5------- test 8 ----23 7------- test 9 ----23 1------- test 10 ----23 3有毒的代码。。 阅读全文
posted @ 2014-04-11 23:13 e0e1e 阅读(226) 评论(0) 推荐(0)
摘要:比赛水了,这是第二题括号匹配水题。经典问题。 1 #include 2 #include 3 using namespace std; 4 5 int N; 6 int dp[100][100]; 7 char s[101]; 8 9 #define min(a,b) ((a)>(b)?(b):(a))10 11 12 int main(void)13 {14 int l;15 for(cin >> N; N; --N) {16 cin >> s; l = strlen(s);17 int i, j, k;18 for(j... 阅读全文
posted @ 2014-04-10 21:09 e0e1e 阅读(321) 评论(0) 推荐(0)
摘要:树,一种十分优美的数据结构,因为它本身就具有的递归性,所以它和子树见能相互传递很多信息,还因为它作为被限制的图在上面可进行的操作更多,所以各种用于不同地方的树都出现了,二叉树、三叉树、静态搜索树、AVL树,线段树、SPLAY树,后缀树等等.. 枚举那么多种数据结构只是想说树方面的内容相当多,本专辑只针对在树上的动态规划,即树形DP.做树形DP一般步骤是先将树转换为有根树,然后在树上进行深搜操作,从子节点或子树中返回信息层层往上更新至根节点。这里面的关键就是返回的信息部分,这个也没一般性的东西可讲,因为每道题目要求做的事都不尽相同。 这个专辑暂时氛围3个部分,分的可能不是很好,后面题目做... 阅读全文
posted @ 2014-04-10 21:07 e0e1e 阅读(234) 评论(0) 推荐(0)
摘要:线性DP, 笨得WA了10次才AC,而且高精度加法还是借用的别人的,自己的压位高精度大数算的好奇怪。。。本题的重点在于第二问的判重。可以证明,对于相同price的i, j(ii那么就表明j是最后一个。然后就很简单了,把所有的最后一个加起来就行了。不过本题要使用高精度算法,总时间复杂度为O(N2)。C... 阅读全文
posted @ 2014-04-10 05:00 e0e1e 阅读(252) 评论(0) 推荐(0)
摘要:#2, 类似前缀和的思想,以前OI的确用过这种思想,但昨天一时竟然没反应过来,太笨了。需要注意的情况是如果0,1相同时要特殊处理,其下标就是长度(即若串是从1算起的话是0)。评测结果编译成功测试数据 #0: Accepted, time = 15 ms, mem = 1252 KiB, score = 10测试数据 #1: Accepted, time = 0 ms, mem = 1248 KiB, score = 10测试数据 #2: Accepted, time = 0 ms, mem = 1256 KiB, score = 10测试数据 #3: Accepted, time = 0 ms 阅读全文
posted @ 2014-04-09 16:58 e0e1e 阅读(190) 评论(0) 推荐(0)