上一页 1 ··· 11 12 13 14 15 16 17 18 19 ··· 25 下一页
摘要: 一开始读漏了很多细节,用递推写死活跑不出样例。把题目中的细节列一下吧,状态方程很好推,改成记忆化搜索之后代码也很清晰。1.蜜蜂需要到最高的塔去,最高的塔可能不止一个,抵达任意一个即可。2.蜜蜂每次只能到达相邻的塔,满足的条件为横向移动距离 2 #include 3 #include 4 #include 5 6 using namespace std; 7 8 const int MAXN = 60; 9 const int INF = 1 = addr - W && j > 0; --j ) 41 { 42 res = min( res, D... 阅读全文
posted @ 2013-07-19 22:17 冰鸮 阅读(258) 评论(0) 推荐(0)
摘要: Wrong Answer思路:1.先枚举4的全排列,即球赛的所有可能结果,一共4!=24种情况2.对于每种情况,DFS 未确定的比赛 的结果,判断这种情况是否可达。剪枝:1.对于每种全排列,只需要找到一种满足这个全排列的情况即可,如果有一种情况满足,则不必再枚举其他可能。2.因为在每种情况下,球队之间的排名已经确定了,所以在DFS的过程中,凡是不满足此排名的情况统统可以剪掉。这样就可以少很多情况,即使在n=0的情况下也跑出了不错的效率,但是它Wrong Answer on test 17了。。。求指点T^T 1 #include 2 #include 3 #include 4 #... 阅读全文
posted @ 2013-07-19 01:09 冰鸮 阅读(332) 评论(0) 推荐(0)
摘要: 同 HDU 2836只不过改成了求最长子串。DP+线段树单点修改+区间查最值。 1 #include 2 #include 3 #include 4 #include 5 6 #define lson l, m, rt > 1;35 if ( L > 1;47 48 int res = 0;49 if ( L m ) res = max( res, Query( L, R, rson ) );51 52 return res;53 }54 55 int main()56 {57 while ( ~scanf( "%d%d", &n, &d ... 阅读全文
posted @ 2013-07-18 14:34 冰鸮 阅读(350) 评论(4) 推荐(0)
摘要: 题意:给你一个序列,问相邻两数高度差绝对值小于等于H的子序列有多少个。dp[i]表示以i为结尾的子序列有多少,易知状态转移方程为:dp[i] = sum( dp[j] ) + 1;( abs( height[i] - height[j] ) 2 #include 3 #include 4 #include 5 6 using namespace std; 7 8 const int MAXN = 100100; 9 const int MOD = 9901;10 11 int dp[MAXN];12 int height[MAXN];13 int num[MAXN];14 int ... 阅读全文
posted @ 2013-07-18 12:36 冰鸮 阅读(315) 评论(0) 推荐(0)
摘要: Runtime Error 到现在连样例也跑不出来!!!调试了一晚上快要死了……知道错在哪里但是不会改,代码先扔在这里吧。看来不能太依赖模板啊orz…… 1 #include 2 #include 3 #include 4 #include 5 6 using namespace std; 7 8 struct Node 9 { 10 Node *ch[2]; 11 int v; //节点编号 12 int s; //节点域 13 int flip; 14 Node( int v ):v(v)... 阅读全文
posted @ 2013-07-17 23:55 冰鸮 阅读(463) 评论(0) 推荐(0)
摘要: 第一棵伸展树,各种调试模板……TVT对于 1 n 这种查询我处理的不太好,之前序列前后没有添加冗余节点,一直Runtime Error。后来加上冗余节点之后又出了别的状况,因为多了 0 和 n+1 这两个节点,并且每次截取翻转添加到序列最后,因此无法确定 n+1 这个节点在序列的哪个位置。比如(括号中的为添加的冗余节点):(0) 1 2 3 4 5 (6)我把[3,4]截取翻转添加到序列尾部,会变成这样:(0)1 2 5 (6)4 3此时我如果再希望截取[3,4],期望的结果应该是:1 2 3 4 5而实际上会变成:(0)1 2 4 3 (6) 5我用了一种挺麻烦的方式解决的这个问题:就是让伸 阅读全文
posted @ 2013-07-17 11:26 冰鸮 阅读(318) 评论(0) 推荐(0)
摘要: 研究了整整一天orz……直接上官方题解神思路 1 #include 2 #include 3 #include 4 #include 5 #include 6 7 using namespace std; 8 9 const int MAXN = 100100; 10 11 struct node 12 { 13 int v, next; 14 }; 15 16 struct subTree 17 { 18 int st, ed; 19 }; 20 21 struct Queryy 22 { 23 int i; 24 int... 阅读全文
posted @ 2013-07-16 15:40 冰鸮 阅读(254) 评论(0) 推荐(0)
摘要: 依然不是十分理解……待考虑…… 1 #include 2 #include 3 #include 4 #include 5 6 #define lson l, m, rt > 1; 74 build( lson ); 75 build( rson ); 76 PushUp( rt ); 77 return; 78 } 79 80 node Query( int L, int R, int l, int r, int rt ) 81 { 82 if ( L > 1; 93 94 if ( R m ) return Que... 阅读全文
posted @ 2013-07-15 22:47 冰鸮 阅读(222) 评论(0) 推荐(0)
摘要: 只有一个地方需要注意:设节点a的根为u,b的跟为v,则:a = u + d[a]; b = v + d[b];已知:b-a=w。所以v - u = d[a] - d[b] + w;在合并两个集合修改根节点时,把v的根改为u,同时v到根的距离为d[a] - d[b] + w; 1 #include 2 #include 3 4 const int MAXN = 100010; 5 6 int pa[MAXN]; 7 long long int d[MAXN]; 8 9 int findset( int x )10 {11 if ( pa[x] == x ) return x;1... 阅读全文
posted @ 2013-07-15 17:31 冰鸮 阅读(323) 评论(0) 推荐(0)
摘要: Problem H:Boring CountingTime Limit : 6000/3000ms (Java/Other)Memory Limit : 65535/32768K (Java/Other)Problem DescriptionIn this problem you are given a number sequence P consisting of N integer and Pi is the ith element in the sequence. Now you task is to answer a list of queries, for each query, p 阅读全文
posted @ 2013-06-20 23:36 冰鸮 阅读(585) 评论(0) 推荐(0)
上一页 1 ··· 11 12 13 14 15 16 17 18 19 ··· 25 下一页