- 博客(395)
- 收藏
- 关注
原创 【BZOJ3439】Kpm的MC密码 Trie+dfs序+可持久化线段树
题解:咳咳。首先补全数据范围:对于100%的数据,1然后乍一看题(BZ少数据范围),直接排个序,然后插入点信息来一发可持久化线段树求区间第K大、显然存不下,那么我们可以用Trie存一下这些字符串,然后dfs序扫一遍,确定一个字符串的可查询范围。话说用Trie树存的是反串(后缀么)呃,今天生病了,有点犯浑,语文能力可能下降了许多。。所以还是看代码吧。完了我
2015-01-15 22:05:07 1649
原创 【BZOJ3238】【Ahoi2013】差异 后缀自动机
首先 秦神QY Orz 题解:这道题后缀数组过于鬼畜(wo’tai’ruo’bu’gan’xie)所以写了简单好写易于理解不用分治不用RMQ的SAM大叔。题解:首先其实我们需要一个后缀树,然后两个后缀的lcp就是它们lca的len。后缀树可以通过反序后缀自动机得到,这个很水。然后len的性质就是后缀自动机的那个len(我写的‘deep’)。后缀树上DP就水了
2015-01-14 23:35:46 2188
原创 【BZOJ3172】【Tjoi2013】单词 AC自动机模板题
题解:水爆了,直接AC自动机瞎写就行。坑:……时隔一个半月的感动AC,竟然是因为这道题可以有重复单词233。代码:#include #include #include #include #include #define N 1001000#define M 205#define T 27#define inf 0x3f3f3f3fusing namespace
2015-01-14 16:16:05 1989
原创 【POJ3415】Common Substrings 后缀自动机
题意:给两个串,问有多少长度大于等于K的公共子串(位置不同也算一对)题解:后缀自动机DP对第一个串建立后缀自动机,然后做一些预处理,然后拿第二个串在后缀自动机上跑,到每个节点加一次贡献。但是这样需要每个点往parent树上跑一遍,会TLE,所以可以加个lazy。然后代码中有两次运用到拓扑序来从子向父推DP值。呃,说得乱糟糟的。Orz No_stop不
2015-01-14 15:00:18 2344
原创 【POJ3693】Maximum repetition substring 后缀数组恶心题
题意:给一个字符串,然后找一个子串,使子串满足其中连续重复子串最多。比如ababab,重复次数为3,ababa,重复次数为1(abab是两次)恶心在于还要输出最小字典序。题解网上都有,不发了。代码:#include #include #include #include #define N 101000#define LOGN 20#define
2015-01-13 15:31:13 1515
原创 【POJ3710】Christmas Game 博弈 有限制的图上删边游戏(树形删边游戏进化1)
题意:一个树图,然后1永远是根,两人轮流删边,不能删者输。删边限制:只能删跟1连通的边。树图限制:它首先是一棵树,然后某些点上可能带一个环原描述:最开始的图是一颗带有一些简单环的树,然后任何边都至多在一个多边形上。每个多边形最多有一个节点出现在主树上。给个神犇论文地址:石家庄二中·贾志豪——《组合游戏略述——浅谈SG游戏的若干拓展及变》http://we
2015-01-13 08:46:28 1788
原创 【POJ1523】SPF tarjan求点-双连通分量 裸题模板题
题意:求哪些点是割点,割掉以后能把图分成几块。太水不欲发题解。tarjan就好,不懂看代码。代码:#include #include #include #include #define N 1005using namespace std;int map[N][N];bool exist[N];int dfn[N],low[N],cnt;int stk[N],top
2015-01-13 08:43:09 1795
原创 【POJ3352】Road Construction tarjan求边-双连通分量,裸题模板题
裸题只给模板。tarjan可以实现。太水不发题解。代码:#include #include #include #include #define N 1010#define M 2020using namespace std;struct KSD{ int v,next;}e[M];int head[N],cnt;inline void add(int u,i
2015-01-13 08:39:44 1671
原创 【POJ3480】John 博弈 Anti-SG misère规则尼姆游戏
题意:跟NIM游戏差不多,不过是谁不能操作了,谁赢。定理:NIM游戏规则取最后一个石子输适用范围:对于任意一个Anti-SG游戏,当局面中所有的单一游戏的SG值为0时,游戏结束。(1)SG==0,有某单一游戏的SG>1。(败)(2)SG!=0,有某单一游戏的SG>1。(胜)(3)SG==0,无某单一游戏的SG>1。(胜)(4)SG!=0,无某单一游戏的S
2015-01-13 08:36:42 2005
原创 【POJ3537】Crosses and Crosses 博弈,SG函数,Multi-SG博弈
转载请注明出处:http://blog.csdn.net/vmurder/article/details/42654067其实我就是觉得原创的访问量比未授权盗版多有点不爽233。。。题意:有个一维棋盘,两人轮流下棋,然后谁连成三个谁赢。题解:我们考虑到一个长度为n的棋盘,在i处下子,相当于把游戏转化成两个游戏GAME(x-i-2)和GAME(i-3)。原因:左边
2015-01-12 23:06:02 1388 2
原创 【POJ2425】A Chess Game 博弈,SG函数,裸题,模板题
转载请注明出处:http://blog.csdn.net/vmurder/article/details/42653921其实我就是觉得原创的访问量比未授权盗版多有点不爽233。。。题意:给一个有向无环图(拓扑图),有若干个棋子,两人轮流操作,每次可以把其中某棋子沿图走一步,无法操作者输。题解:SG函数裸题,模板题代码:#include #include #incl
2015-01-12 23:01:56 1293
原创 【POJ2960】S-Nim SG函数 博弈 裸题模板题
转载请注明出处:http://blog.csdn.net/vmurder/article/details/42612069其实我就是觉得原创的访问量比未授权盗版多有点不爽233。。。题意:两人轮流从若干堆石子中某堆取k个石子,k∈集合S, 就是每次取的数量被限定成某几个数的意思!然后跟正常Nim一样谁不能操作就输。题解:SG函数裸题。SG函数:首先需
2015-01-12 22:53:00 1416
原创 【HDU3094】A tree game 博弈,树形删边游戏
题意:给一颗树,每次可以删掉一条与节点1(root)的连通的边,两人轮流操作,谁不能操作谁输。题解:只能套公式:Colon原理:SG(x)=XOR{SG(y)+1|y是x的子结点}。好了。水了。代码:#include #include #include #include #define N 101000using namespace std;
2015-01-12 22:41:50 1479
原创 【HDU3032】【Lasker's Nim(一种Nim游戏)】Nim or not Nim? Multi-SG博弈、打表
题意:n堆石子,每次可以从某堆中拿走若干,也可以把此堆分成两个非空堆,谁无法操作了谁输。题解:首先我们可以打个SG函数来暴力出解,但是显然这会T。但是不要害怕,我们打完以后发现了一个貌似对的规律:对于所有的k >= 0,有 sg( 4k+1 ) = 4k+1; sg( 4k+2 ) = 4k+2; sg( 4k+3 ) = 4k+4; sg( 4k+4 ) = 4k+3。
2015-01-12 22:39:48 1444
原创 【BZOJ2039】【2009国家集训队】employ人员雇佣 最小割
最小割心得:首先需要一定的功底来发现这道题是最小割,并且投入思考。然后想怎么建图:最小割都是先算上所有收益,然后再通过网络图进行割边减去部分权值。收益有时候可能带上负值。然后我们需要思考什么能带来权值,什么会有权值冲突。而最小割图一般都是拆成S集和T集考虑,即取与不取,某人/点选A或者选B等等,这样就会带来冲突,也就是需要割的边。然后我们需要把所有权值的得与失列出来
2015-01-12 22:09:05 1825
原创 【BZOJ3866】The Romantic Hero “再不刷它就土了”系列
话说其实我并不知道它会不会变成土豪题。应该会吧?先刷了吧。题意:给出一个数列,然后取一个两个子序列A、B,使得A严格在B前面。然后要求A的异或和(^)等于B的与和(&)。题解:动规。注意判重。。没什么好注意的,不判重样例都过不去233。啊。下午好颓废~~~不爽啊~~~这道题算是随便签个到吧?代码:#include #in
2015-01-11 16:27:49 1175
原创 【POJ2975】Nim 博弈
题意:多组数据。问先手有多少种取法使自己必胜。题解:首先Nim游戏的异或思想就不说了。然后我们发现对于某个数,如果其它数的异或和比它小,那么先手拿掉这个数的一部分就可以使所有数异或为0,先求出所有数异或和,然后再枚举每个数,异或一下就相当于其它所有数的异或和了,然后可以进行判断出解。长姿势:^的优先级竟然比以后但凡涉及位运算都要怒写()啊!
2015-01-11 14:33:29 1151
原创 【BZOJ1093】【ZJOI2007】最大半连通子图 强连通分量缩点+sort去重边+拓扑排序
题解:首先缩个点是必然,然后随便想想就知道缩点后需要最后是一条链,也就是——缩点后求拓扑图最长路以及方案数。呃,去重的部分我重标号排了个序水过。代码:#include #include #include #include #define N 101000#define M 1001000#define inf 0x3f3f3f3fusing n
2015-01-11 14:02:13 1994
原创 【BZOJ2127】happiness 最小割 自己YY出来的建图、
那个一看就觉得不是费用流就是最小割。想想就确定最小割了。 考虑到一个人,文理不可兼得,不妨先建点,然后向源点(文科),汇点(理科)连边,流量(也就是割)是对应喜悦值。(这里的想法是先建个差不多的,有漏洞再拆点啊,建辅助点啊什么的) 然后再考虑一对朋友之间的共文理喜悦值:如果都选文,那么需要割掉双方都选理的喜悦值,如果都选理,那么需要割掉双方都选文的喜
2015-01-11 11:18:26 2383 1
原创 【BZOJ1832】【AHOI2008】聚会 倍增lca
这道题写不了tarjanlca。50W的询问,也就是150W次lca查询,每次加三条边,内存妥妥要爆。只能退求logn的倍增lca了。sad story. 还好一遍AC。题解:就是发现每次询问三个点之间有唯一的路径集,那么我们选其中两个取lca,然后另一个点自己走到这个lca,就可以贪心取得答案。代码:#include #include #inc
2015-01-11 09:07:00 2154
原创 【BZOJ1052】【HAOI2007】覆盖问题 二分+深搜check
题解:乱搞。就是搜每个正方形的位置(一定在一个角,证明自己想想吧,很容易但是不算太好写)代码:#include #include #include #include #define N 20100#define inf 0x3f3f3f3fusing namespace std;struct Point { int x,y; Point(int _x=0,
2015-01-11 08:25:27 1212
原创 【BZOJ1202】【HNOI2005】狡猾的商人 并查集
题解:呃,这个题太耿直了。还能有负收益,也就是一个区间只需要有某段时间没有确定,或者有重叠,那就“一切皆有可能”。只有边界完全重合的一些区间神马的才能判错。于是写个耿直的并查集就好了。(可以a~b收益为c,a>b,反正有负收益233)代码:#include #include #include #include #define N 105using na
2015-01-10 22:16:50 1033
原创 【BZOJ1266】【AHOI2006】上学路线route 最短路建图转最小割
题解:首先那个裸的单源最短路过程就过了吧。然后说转的最小割。就是我们考虑到从源点到汇点有多条最短路,我们需要切断一些边,使得所有的最短路都被切断。首先这是个很裸的模型,切断?最小割!如果你想不到,那不妨这么想:我们切断所有最短路,那么每条最短路都有一个路径,上面有若干条边,那么我们需要至少切断其中的一部分。而所有的局部最短路都满足一个性质:就是从源点
2015-01-10 21:39:53 1197
原创 【POJ1067】取石子游戏 威佐夫博弈 这种题真的有意义么?
题意:default是汉语,自己看去。题解:威佐夫博弈这种恶心东西,“正常”解法是打表找规律。但是我自认为找不出来这种规律,考试要是出了这种题……就随便输出一个来期望50分吧。。要是每个测点都多组数据……那……就随机输出0/1期望10分吧。要是多组数据的组数太多,那就按照表来乱搞。小数据打表输出,大数据233。威佐夫用的是黄金分割数。(网上查的)下面是代
2015-01-10 16:20:52 1243
原创 【POJ2068】Nim DP博弈
题意:多组数据两人轮流操作,n轮一循环,给出总石子数和这n轮每次两人能取的石子上限(下限为1)。取到最后一颗者输。比如3 97 8 7 6 5 4 3表示一循环有三轮,可取的个数为:第一轮 先手8 后手7第二轮 先手6 后手5第三轮 先手4 后手3然后三轮每取完的话就进入下次循环。数据范围自己看去吧。题解:
2015-01-10 15:49:35 1111
原创 【POJ1740】A New Stone Game 构造博弈
题意:多组数据,每组数据一个先n,然后给出n堆石子的数目。两人轮流操作,每次可以从某数量为xi的石子堆中扔掉k个石子(k∈[1,xi]),然后剩余xi-k个,可以把g个石子随意分给其他堆(不能凭空建堆出来,g∈(0,xi-k))。题解:首先构造平衡状态:有偶数堆,且可以两两配对。这样可以理解为先手玩一下,后手可以有同样的应对策略。(脑洞开一下就好了,这不是难点少年)
2015-01-10 15:17:10 945
原创 【BZOJ1179】【Apio2009】Atm 强连通分量缩点+拓扑DP/拓扑最长路 kosaraju+tarjan+dfs转非递归三种代码
kosaraju、tarjan、kosaraju dfs转非递归,三种代码。。。可以有效对付卡系统栈的管理员。。。
2015-01-10 14:43:07 2058
原创 【BZOJ2460】【Beijing2011】元素 线性基
思想都在我的这篇博客里面。呃,那道题懂差不多之后随便水水这道题就过了。#include #include #include #include #define N 1010using namespace std;struct KSD{ long long a; int b; bool operator d.a:b>d.b;}}x[N];long long ins[70
2015-01-10 07:52:34 1972
原创 【BZOJ2595】【Wc2008】游览计划、斯坦纳树
题解:斯坦纳树,实现神马的在代码里面有还看得过去的注释。代码:#include #include #include #include #include #define N 15#define inf 0x3f3f3f3fusing namespace std;const int dx[]={0,0,1,-1};const int dy[]={1,-1,0,0};stru
2015-01-09 18:13:05 1463
原创 【BZOJ3611】【HEOI2014】大工程 LCA单调性 构造虚树
题解:虚树部分参见上一篇博客然后DP部分随便乱搞就过了。代码:#include #include #include #include #define N 1001000#define LOGN 22#define inf 0x3f3f3f3f#define INF 0x3f3f3f3f3f3f3f3fLLusing namespace std;struct K
2015-01-09 17:53:58 1487
原创 【BZOJ2286】【SDOI2011】消耗战 LCA单调性(构建虚树)+树形DP
题解:首先我们考虑每次都做一遍树形DP(树形DP自己脑补去,随便乱搞就过了)。显然这是TLE无疑的。所以可以利用LCA单调性构建虚树。思想:我们发现每次树形DP有很多点用不到,但是却需要被扫过,让他们见鬼去吧!实现:我们只对每次扫的图插入本次询问需要的节点,以及它们的LCA。这样询问了m个点,虚树就至多只需要2m个点(so quick)。而插入顺
2015-01-09 15:36:02 2262
原创 【BZOJ3612】【HEOI2014】平衡 整数划分、
题意:有一个杠杆,半长为n,在(2n+1)个整数坐标各有一个质量相同的砝码。现在给出n,然后再给出要取走的砝码个数,问使得最终杠杆依然平衡的最终方案数是多少。(文末会给出原题帽)分析:数据范围不大,我们可以写整数划分。f[i][j]表示将i划分成j个互不相同的正整数,且最大不超过n 的划分方案数。这里说一下这道题的整数划分。我们不妨先来反向思考一下。
2015-01-09 10:22:47 2106
原创 【BZOJ1002】【FJOI2007】轮状病毒 生成树计数推导。 Python代码
突然学了一小下Python算是勉强会写点了。至于这道题的题解,就是根据Matrix Tree定理,然后Kirchhoff矩阵高斯消元就好了,不过这道题如果消去中心点的行和列做的话,矩阵会很规矩,然后貌似“手算”可以推出公式(VFK Orz,手算……)VFK’s blog:http://vfleaking.blog.163.com/blog/static/1748076342
2015-01-09 09:05:35 1779
原创 【BZOJ1513】【POI2006】Tet-Tetris 3D 二维线段树+标记永久化
题解:题意很裸啊~~~培训的时候说要写标记永久化,反正永久化很水,就直接写了。但是我并不知道为什么要永久化,或者说理解不深刻,但是再遇上肯定能分析出来233。大概应该可能或许就是:直接原因:下传标记传不下去。根本原因:线段树有两层,这样它的传递可能就有点像拓扑了就是外层线段树需要往内层线段树传,然后内层线段树还要下传这样扫到某处时发现,****,还需
2015-01-08 23:24:25 1946 2
原创 【BZOJ2756】【SCOI2012】奇怪的游戏 最大流、
题解:首先我并不知道这个怎么才能想出来正解。只能说以后遇到这种题就往黑白染色以及大体关系上靠靠了。好了,说这道题题解。首先要相邻格子黑白染色,然后发现每次加权都会让黑白集合总权值各+1。我们设最终所有格子的权值都为x这个时候我们就可以讨论, 如果黑色格子和白色格子的数量不同,那么最后就可以发现当所有格子都为x时,两个集合的总权值差就是x(设cnta
2015-01-08 19:04:11 2674
原创 【BZOJ2229】【ZJOI2011】最小割 {没有错,这道题的算法跟题帽是一样的!!!}
题解:分治求最小割。【l……r】里任意找两个作为s、t(不妨把s设为l位置上的点,t设为r位置上的点)求最小割,两层for循环枚举修改map[i][j]即两点间最小割值。然后一部分属于S集,一部分属于T集,分治【l,L】,【R,r】,每次求完最小割值都全局进行修改。最后每次询问暴力做就好了,无需任何优化即可AC。代码:#include #include
2015-01-08 14:59:08 1844
原创 【BZOJ1058】【ZJOI2007】报表统计 stl模板
题意题解不多说,以前从来不{屑于}写stl,,今天学一学。。我就是来贴一份{banlakeji的}stl模板的。代码:#include #include #include #include #include #define N 501000#define inf 0x3f3f3f3fusing namespace std;int n,m;int src[N],l
2015-01-08 11:05:31 1684
原创 【BZOJ3831】【POI2014】Little Bird 单调队列,''再不刷它就土了''系列。
题意:我直接粘bzoj的黑版翻译吧~有一排n棵树,第i棵树的高度是Di。MHY要从第一棵树到第n棵树去找他的妹子玩。如果MHY在第i棵树,那么他可以跳到第i+1,i+2,...,i+k棵树。如果MHY跳到一棵不矮于当前树的树,那么他的劳累值会+1,否则不会。为了有体力和妹子玩,MHY要最小化劳累值。题解:单调队列破题水,没了。话说BZOJ的POI一向土豪
2015-01-08 08:56:15 2086
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人