摘要: 题意:有两种人,一种人只会说真话,另一种人只会说假话。只会说真话的人有p1个,另一种人有p2个。给出m个指令,每个指令为a b yes/no,意思是,如果为yes,a说b是只说真话的人,如果为no,a说b是只说假话的人。注意,a可以为b。保证每个指令都是正确的,且相互之间不矛盾。问,能不能确定哪些人是说真话的人,如果能,输出所有只说真话的人;如果不能,输出no。解法:首先,用并查集建树,每个节点有两个参数,f和r,f表示父亲节点的编号,r表示与父亲节点是不是同一种人。r为0表示该节点与父亲节点是一种人,r为1表示该节点与父亲节点不是一种人。则用并查集处理之后,就可以分为k棵树,每棵树上可能有x 阅读全文
posted @ 2013-11-28 14:58 Plumrain 阅读(449) 评论(0) 推荐(0) 编辑
摘要: 题意:对于一个整数序列,每次指令为a b c,表示序列中从第a项加到第b项的和为c。若某条指令与前面指令所传达的信息矛盾,则视为该指令错误,否则视为该指令正确。给出一串指令,问错误指令的数量为多少。解法:类似POJ 1182 食物链。用并查集做,每个节点有两个参数,比如对于节点x,一个是f,表示其根节点的编号;另一个是r,表示前x项之和减去前x.f项之和的差值。然后判定就好了。tag:并查集 1 /* 2 * Author: Plumrain 3 * Created Time: 2013-11-28 08:32 4 * File Name: DS-HDU-3038.cpp 5 */... 阅读全文
posted @ 2013-11-28 14:41 Plumrain 阅读(326) 评论(0) 推荐(0) 编辑
摘要: 题意:对一个只由1和0组成的字符串,给出指令,a b even/odd,表示字符串中第a位到第b位之间的1的个数为even/odd(偶数/奇数)。给出m个指令,a,b 7 #include 8 #include 9 #include 10 #include 11 12 using namespace std; 13 14 #define PB push_back 15 16 struct temp{ 17 int a, b; 18 bool x; 19 char s[10]; 20 }; 21 22 struct node{ 23 int... 阅读全文
posted @ 2013-11-28 01:06 Plumrain 阅读(544) 评论(0) 推荐(0) 编辑