2011年9月27日
摘要: //9368182 NKHelloWorld 2528 Accepted 1180K 79MS C++ 2792B 2011-09-27 22:07:26//9368188 NKHelloWorld 2528 Accepted 1712K 63MS G++ 2792B 2011-09-27 22:08:48#include <cstdio>#include <iostream>#include <cstring>#include <algorithm>using namespace std;struct STNODE//线段树中的节点{ int 阅读全文
posted @ 2011-09-27 22:51 NKHe!!oWor!d 阅读(172) 评论(0) 推荐(0) 编辑
  2011年9月18日
摘要: 数据有点多有点乱的一道题,需要一些预处理,但是把思路层层理顺后DP思路就很显然了,用n位2进制数表示剩下的人的状态,第i位为1时表示有这人,为0时表示没有这个人。则状态有m*(2^n)个,状态转移比较容易。这题可能测试数据很多,第一次超时了,1400ms左右,优化了输入降至1100ms,然后发现一个早该发现的优化,就是如果j状态能到达i状态,那么j>i是一定的。改过交,3A。这个应该可以早发现的,没有1A就是失败。#include <cstdio>#include <cstring>int n,m;int cost[12][2048];int bonus[2048 阅读全文
posted @ 2011-09-18 23:10 NKHe!!oWor!d 阅读(220) 评论(0) 推荐(0) 编辑
  2011年8月20日
摘要: //7021#9198299 helloworld 3368 Accepted 5412K 500MS C++ 2996B 2011-08-20 11:10:37//9198356 NKHelloWorld 3368 Accepted 5616K 1110MS G++ 2537B 2011-08-20 11:17:51//9198361 NKHelloWorld 3368 Accepted 5412K 500MS C++ 2537B 2011-08-20 11:18:15//9198392 NKHelloWorld 3368 Accepted 5412K 469MS C++ 2967B 201 阅读全文
posted @ 2011-08-20 11:25 NKHe!!oWor!d 阅读(208) 评论(0) 推荐(0) 编辑
  2011年8月18日
摘要: 树的直径题目。两次BFS//9186307 NKHelloWorld 1985 Accepted 1824K 141MS C++ 1490B 2011-08-18 10:56:49//9186317 NKHelloWorld 1985 Accepted 1824K 110MS C++ 1565B 2011-08-18 10:57:21//9186348 NKHelloWorld 1985 Accepted 1888K 141MS G++ 1644B 2011-08-18 10:59:14#include <cstdio>#include <cstring>#define 阅读全文
posted @ 2011-08-18 11:01 NKHe!!oWor!d 阅读(255) 评论(0) 推荐(0) 编辑
  2011年8月9日
摘要: 求树的直径树的直径是指树的最长简单路。求法: 两遍BFS :先任选一个起点BFS找到最长路的终点,再从终点进行BFS,则第二次BFS找到的最长路即为树的直径;原理: 设起点为u,第一次BFS找到的终点v一定是树的直径的一个端点证明: 1) 如果u 是直径上的点,则v显然是直径的终点(因为如果v不是的话,则必定存在另一个点w使得u到w的距离更长,则于BFS找到了v矛盾)2) 如果u不是直径上的点,则u到v必然于树的直径相交(反证),那么交点到v 必然就是直径的后半段了所以v一定是直径的一个端点,所以从v进行BFS得到的一定是直径长度(引用http://beyrens.blog.163.com/b 阅读全文
posted @ 2011-08-09 18:02 NKHe!!oWor!d 阅读(379) 评论(0) 推荐(0) 编辑
  2011年8月2日
摘要: POJ1716的变形,数据规模增大,用了循环数组。//9063355 NKHelloWorld 1201 Accepted 30788K 469MS C++ 1825B 2011-08-02 19:12:01#include <cstdio>using namespace std;int n,maxb = 0,dis[51000];struct EDGE{ int from,to,d;};EDGE edge[51000][50];int pedge[51000];int spfa(int s){ int i,a,b,d; bool inque[51000]; int que[510 阅读全文
posted @ 2011-08-02 19:20 NKHe!!oWor!d 阅读(139) 评论(0) 推荐(0) 编辑
摘要: 参照网上的约束条件,设d[i]为[0,i)区间内需要取的元素个数,则条件有:对于每个[ai,bi],d[bi]-d[ai-1] >=2; 0=<d[i]-d[i-1]<=1,d[0]=0;当全部归为>=时求最长路,<=时求最短路。本题可以以0为源点求最短路,原因我还没理解。为保险起见,也是我的习惯,设置一个超级源点,到每个点都有一条边,权值为0.结果这样做时间反而比直接以0为源点还要快200ms,至今无法解释。。。第一个版本用vector和queue写的,时间都在900+,甚至有一次幸运的卡在了1000ms。改掉queue,时间基本不变,改掉vector,时间瞬间 阅读全文
posted @ 2011-08-02 18:58 NKHe!!oWor!d 阅读(290) 评论(0) 推荐(0) 编辑
摘要: 本想练习差分约束,搜到了这道题,暂时没能想出构图方法,//6973#9056660 helloworld 1716 Accepted 432K 16MS G++ 973B 2011-08-02 09:32:52//6974#9056670 helloworld 1716 Accepted 208K 0MS C++ 1056B 2011-08-02 09:34:01//9056812 NKHelloWorld 1716 Accepted 432K 16MS G++ 1088B 2011-08-02 09:50:53#include <cstdio>#include <algor 阅读全文
posted @ 2011-08-02 09:51 NKHe!!oWor!d 阅读(156) 评论(0) 推荐(0) 编辑
  2011年8月1日
摘要: 单源最短路问题,SPFA解法//9050848 NKHelloWorld 2387 Accepted 272K 63MS C++ 1194B 2011-08-01 14:19:20//9050982 NKHelloWorld 2387 Accepted 276K 63MS C++ 1559B 2011-08-01 14:30:19//9050987 NKHelloWorld 2387 Accepted 680K 47MS G++ 1638B 2011-08-01 14:30:41//1A µÚÒ»µÀSPFA#include < 阅读全文
posted @ 2011-08-01 19:29 NKHe!!oWor!d 阅读(200) 评论(0) 推荐(0) 编辑
  2011年7月31日
摘要: 搜索floodfill相关题目时找到的这题,题目可抽象为:一个WxH大小的方块,每个单元为一块,每个单元有一个高度,从正上方向下注水,问最多能装住多少水。解题思路为,首先最外一圈能装的水量都是0,找出其中最低的,那么与之相邻的(最多四个)方块中,如果比他低,那必可装水至这个块的高度,同时这个装水块的高度上升为那个块的高度。如果比他高或相等,则这块不可装水。然后再找次小的,依次进行,可用优先队列priority_queue来实现,也可以手写堆。//6935#9044110 helloworld 2227 Accepted 1640K 266MS G++ 2107B 2011-07-31 14:5 阅读全文
posted @ 2011-07-31 15:06 NKHe!!oWor!d 阅读(340) 评论(0) 推荐(0) 编辑