2012年10月13日

摘要: View Code 1 //Result:wizmann 3905 Accepted 16516K 1985MS G++ 2170B 2012-10-08 16:19:01 2 #include <cstdio> 3 #include <cstdlib> 4 #include <cstring> 5 #include <iostream> 6 #include <algorithm> 7 #include <stack> 8 9 using namespace std; 10 11 #define print(x) cou 阅读全文
posted @ 2012-10-13 14:04 Wizmann 阅读(216) 评论(0) 推荐(0) 编辑

2012年9月22日

摘要: 2-SAT是一种神奇的算法问题。具体是什么我也不想细说,因为细说不了。。。只是讨论一下建图。2-SAT存在两种关系,互斥与共生。比如此题,对于x[i],不能既为0,又为1。这就是一种互斥关系。又由于如果c[i]==0,则x[a[i]]为0的话,x[b[i]]必为1,这就是共生关系。解决2-SAT问题的方法就是将共生关系连边,然后求出强连通分量。再用互斥关系寻找是否矛盾。这个其实很好理解,如果两个互斥条件共生,必然是一个错误解。到现在我才做过两道2-SAT,只是个人心得,错了请指出。。。View Code 1 //Result:2012-09-22 10:23:11 Accepted ... 阅读全文
posted @ 2012-09-22 10:41 Wizmann 阅读(318) 评论(0) 推荐(0) 编辑

2012年9月1日

摘要: 数学推演没思路。。。更坑的是。。。give you a permutation of 1 to N。。。居然不是数列,是排列。。。这个太坑了吧。。。。不带这么玩的。。。#include <cstdio>#include <cstdlib>#include <cstring>#include <iostream>#include <algorithm>using namespace std;#define print(x) cout<<x<<endl#define input(x) cin>>x#de 阅读全文
posted @ 2012-09-01 13:19 Wizmann 阅读(242) 评论(0) 推荐(0) 编辑

2012年8月18日

摘要: 事实证明,我也可以把代码写的像屎一样。这题的关键点是在于把更新操作离线化,对于每次更新,仅仅保存add的值,并不对数列进行修改。这样就可以保护原数列的性质不变改变。我们先把每一个数拆解成16个后辍对于每一个后辍num[0...i],若num[i]==0,保存在bit[0][i]中,位置为int(num[0...i])若num[i]==1,保存在bit[1][i]中,位置为int(num[0...i])在查询与修改操作中,对于每一次修改C a,我们将add+=a对于Q a,我们分情况讨论。因为Q a仅仅被add[0...a]这一部分影响,所以我们只需要考虑后辍num[0...a]这一个分支而in 阅读全文
posted @ 2012-08-18 14:48 Wizmann 阅读(309) 评论(0) 推荐(0) 编辑

2012年8月12日

摘要: http://acm.hdu.edu.cn/showproblem.php?pid=4358如图所示,当k==3时,如果我们扫描到红线所在的位置。则符合条件的区间就是从红线到两条紫线所包含的区间(左开右闭,图上表现的不好,注意)所以我们可以在“数轴”上进行标记,从而对于query进行正确的回答。当然,我们先要把树转换成数组才行。#include <cstdio>#include <cstring>#include <iostream>#include <algorithm>#include <cstdlib>#include < 阅读全文
posted @ 2012-08-12 21:50 Wizmann 阅读(1160) 评论(0) 推荐(0) 编辑
摘要: View Code 1 //Result:2012-08-12 13:44:40 Accepted 4351 812MS 11016K 3495 B C++ Wizmann 2 #include <cstdio> 3 #include <cstring> 4 #include <algorithm> 5 #include <iostream> 6 #include <algorithm> 7 8 using namespace std; 9 10 #define print(x) cout<<x<<endl 1 阅读全文
posted @ 2012-08-12 13:45 Wizmann 阅读(266) 评论(0) 推荐(0) 编辑

2012年7月31日

摘要: 此题有一个比较可爱的性质,题目中有说,我就不重复了。如上图。A爱(B,C,D)E爱A我们只需要搜索A->(B,C,D...)->(E)中没有三元环就可以了,因为(B,C,D)都不爱A。如果有E爱(B,C,D)中的任一,如B,即有环A->B->E->A,这个不难理解。所以一次DFS就可以。大概是O(n^2)的算法(是么?)。如果E不爱(B,C,D)中的任一。则只需要搜索(B,C,D)中的自环。搜索过后,将(B,C,D)抛弃,因为不能再成环了。只要再搜索(E)中是否有环就可以。 阅读全文
posted @ 2012-07-31 21:49 Wizmann 阅读(137) 评论(0) 推荐(0) 编辑

2012年7月27日

摘要: 今天在知道STL::set居然是可以在线调整的,瞬间给跪了啊。。。这TM都是怎么样的设计思想。。。//Result:2012-07-27 15:09:17 Accepted 3511 687MS 8964K 2667 B G++ #include <cstdio>#include <cstdlib>#include <cstring>#include <cmath>#include <iostream>#include <algorithm>#include <set>#include <bitset&g 阅读全文
posted @ 2012-07-27 15:15 Wizmann 阅读(291) 评论(0) 推荐(0) 编辑

2012年7月25日

摘要: View Code 1 //Result:wizmann 1699 Accepted 732K 469MS G++ 1738B 2012-07-25 20:00:55 2 #include <cstdio> 3 #include <cstdlib> 4 #include <cstring> 5 #include <iostream> 6 #include <algorithm> 7 #include <vector> 8 #include <bitset> 9 10 using namespace std; 1 阅读全文
posted @ 2012-07-25 20:06 Wizmann 阅读(215) 评论(0) 推荐(0) 编辑
摘要: 雪姐无敌~这题传说是一个扩展KMP的应用,不过我不会exKMP,只好先用KMP乱搞一下了。KMP我TMD也不会啊。。。这题就当加深理解了。。我们将原串称为MIA,将解密后的串称为STR我们要找到的的是MIA的后辍与STR的前辍的最长的交。解题的方法就是以MIA为母串,以STR为模式串,做一次KMP匹配。从而求得当母串完全匹配之后,模式串的匹配位置。如M:abcdab T:abcdab (样例,没有加密)最后的匹配位置就是ab < ...所以M的前4个是加密串,后4个可以由前4个解密得到。但是,有特殊情况是abababa这样的。匹配位置是len,而题目中给出的信息是M[0...n-1]+S 阅读全文
posted @ 2012-07-25 00:03 Wizmann 阅读(465) 评论(0) 推荐(0) 编辑

导航