摘要:
12232-Exclusive-OR题目大意是可以设定一个点Xp=v,或者Xp^Xq=v,然后查询Xa^Xb^Xc...等于多少。由于异或操作跟判连通性很类似,这里可以使用并查集来解决,对于Xp^Xq=v先判断Xp和Xq是否来自一颗树,若是来自一个棵树,则判相容性,否则连接这两棵树,而Xp=v是用来lock一棵树的,当一棵树未被lock时,这颗树中的所有值都不确定,当lock之后,就可以确定这颗树的所有值了。而最后求Xa^Xb^Xc...时,先按树进行分类,对于lock的树的X直接求解,都与非lock的树,若有偶数个则可以求解,否则得不到固定的值,算法应该没有问题,可是AC不了,不好debug 阅读全文
posted @ 2013-08-27 16:04
litstrong
阅读(362)
评论(0)
推荐(0)
摘要:
11988-Broken Keyboard (a.k.a. Beiju Text)可以用deque来模拟。#include #include #include #include #include using namespace std;const int MAX = 100005;char ch[MAX];int main() { while (scanf("%s", ch) != EOF) { deque Q; string buffer = ""; int toward = 1; int n = strlen(ch); ... 阅读全文
posted @ 2013-08-27 15:57
litstrong
阅读(317)
评论(0)
推荐(0)
摘要:
C. Xenia and Weights有1...10k的砝码,在天枰上,左右轮流放置砝码,要求之后左右轮流比另一侧重量要大,要求相邻两次砝码不能相同。解题报告给出(i,j,k)表示balance,j表示最后一次的砝码重量,k表示第几步,然后表示从点(0,0,0)->(x,y,m)的图论问题,跟动态规划是等价的,复杂度是O(w^3*m)。我给出了一个比上述算法更优的一个算法,做法是用dp[i][j]表示第i步balance达到j时的所有可能的砝码情况的二进制mask,复杂度是O(w^2*m),但要求w#include #include #include using namespace s 阅读全文
posted @ 2013-08-27 15:43
litstrong
阅读(4373)
评论(0)
推荐(0)
摘要:
早早得就学了线段树的一些基础应用,当时急于应用,对它的好多认识都比较肤浅,最近拿起来复习了下,加深了些对它的理解。我觉得重要的就是要理解,对于一条线段[L R]在线段树中插入或是更新或是查询,它的复杂度为什么是log级别的,我想了两个方法来证明:1. 对于线段[L R]对node[r].L及node[r].R的覆盖情况,可以分成三种情况,一种是node[r].L及node[r].R被线段[L R]覆盖;一种是node[r].L及node[r].R其中一个端点被[L R]覆盖;最后一种是两个端点都不被覆盖。第一种就直接返回了,第二种到下一层节点的时候,又转变成了第二种的问题,因此复杂度最高是树高 阅读全文
posted @ 2013-08-27 15:25
litstrong
阅读(205)
评论(0)
推荐(0)

浙公网安备 33010602011771号