自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

无尽

The road ahead will be long. Our climb will be steep.

  • 博客(34)
  • 收藏
  • 关注

原创 BZOJ 4813 [Cqoi2017]小Q的棋盘

树形DP记f[i][j]f[i][j]表示在i的子树里走j步最多能走多少个点。实际上的决策一定是先进一个i的儿子节点的子树,然后出来,再进一个子树,再出来……最后进一颗子树,也许还会出来。枚举在外面走多少步,转移到最后进去的子树即可。#include<cstdio>#include<algorithm>#define N 105using namespace std;namespace ru

2017-04-28 20:54:35 656

原创 BZOJ 3992 [SDOI2015]序列统计

NTT+矩阵快速幂懒得写了,orz链接:http://blog.csdn.net/ied98/article/details/46852805#include<cstdio>#include<cstring>#include<algorithm>#define N 17005#define MOD 1004535809using namespace std;namespace runzh

2017-04-27 23:47:01 325

原创 BZOJ 3489 A simple rmq problem

可持久化树套树发现这是一个多维偏序,可持久化树套树即可。#include<cstdio>#include<algorithm> #define N 100005using namespace std;namespace runzhe2000{ int read() { int r = 0; char c = getchar(); for(;

2017-04-27 23:42:08 339

原创 AtCoder agc007_f Shik and Copying String

贪心+队列画出折线图,每一列表示一个位置,每一行表示一次copy,折线段表示覆盖。一个过程就相当于从第一行开始不断向下画折线来覆盖最后一行。根据贪心,显然折线应贴着上面来画,且转移一定是从最近的转移过来。瞎JB感受一下就会发现折线每次至多增加一格,因此只要维护这些折线的拐点,也就是差分点就可以了,用一个队列维护即可。以上口胡,目测讲不清楚。详情还是去看题解吧。#include<cstdio>#in

2017-04-27 23:37:19 669 1

原创 洛谷 2480 [SDOI2010]古代猪文

中国剩余定理+Lucas定理题目就是要求G∑i|nCinmodpG^{\sum_{i|n}C_n^i} \mod p 然后费马小定理一下,变成求指数modp−1\mod p-1模数是合数,拆开来对每一个小质因数做一遍,最后CRT合并一下即可。注意费马小定理ap−1≡1(modp)a^{p-1} \equiv 1 \pmod p成立,当且仅当pp是质数,且a,pa,p互质,然而GG=模数虽然不满足定理

2017-04-27 23:36:27 402

原创 BZOJ 4161 Shlw loves matrixI

特征多项式优化常系数线性递推详细内容请见《线性递推关系与矩阵乘法 》—叉姐常见的矩阵乘法可以在O(k3logn)O(k^3\log n)的时间复杂度内算出k k 阶常系数线性递推数列第 nn 项的精确值。我们来研究一下矩阵的特征多项式怎么优化这个东西。设这个矩阵是MM,把这个矩阵的特征多项式搞出来,根据Cayley-hamilton定理以及一些推导,可以得到:∀i\forall i,MiM^i 都可

2017-04-27 23:35:33 452

原创 BZOJ 3682 Phorni

后缀平衡树考虑如果可以离线,只需构出后缀数组套上线段树。在线的话我们需要一个在线的后缀数组,结合题意中后缀的含义,用后缀平衡树即可。#include<set>#include<cstdio>#include<algorithm>#define N 800005using namespace std;namespace runzhe2000{ typedef double db;

2017-04-27 23:34:32 500

原创 HDU 4344 Mark the Rope

Miller-Rabin关于Miller-Rabin算法,可以看http://www.matrix67.com/blog/archives/234主要是用了费马小定理+二次探测,随机选取k个底数进行测试算法的失误率大概为4−k4^ {-k}。多随机几次就不太容易挂了。下面代码里的work是用来对拍的根号暴力。#include<cmath>#include<cstdio>#include<cstd

2017-04-27 23:33:22 430

原创 HDU 2138 How many prime numbers

Miller-Rabin关于Miller-Rabin算法,可以看http://www.matrix67.com/blog/archives/234主要是用了费马小定理+二次探测,随机选取k个底数进行测试算法的失误率大概为4−k4^ {-k}。多随机几次就不太容易挂了。下面代码里的work是用来对拍的根号暴力。#include<cmath>#include<cstdio>#include<cstd

2017-04-27 23:32:48 457

原创 51Nod 1600 Simple KMP

SAM+LCT/树剖线段树一个点的深度就是有多少个以这个点结尾的后缀等于前缀。fail树性质不太够,不好下手,直接考虑答案的贡献。对于两个相等的区间[l,r]&[x,y]其中l#include<cstdio>#include<cstring>#include<iostream>#define N 100005#define MOD 1000000007#define A 28#defin

2017-04-27 23:31:05 523

原创 洛谷 3338 [ZJOI2014]力

FFT把qi​q_i​除掉之后,发现所有Ei​E_i​的形式很有趣,都差不多,而且像卷积。考虑构造两个多项式来满足Ei​E_i​的答案就是两个多项式相乘的第i​i​个系数,乱构一下然后FFT即可。#include<cmath>#include<cstdio>#include<algorithm>#define N 400005using namespace std;namespace ru

2017-04-27 23:30:10 261

原创 BZOJ 4774 修路

斯坦纳树DP斯坦纳树经典DP方程:f[s][i]f[s][i] 表示当前需连通点的连通情况至少为ss,且路径上一定经过点ii的代价。为什么说是至少为ss,因为可能方案里的路径经过了别的点,然而在当前状态下我们只考察这ss个点,所以可以忽视别的点。经典的两步转移:f[s][i]=f[s′][i]+f[s−s′][i](无条件)f[s][i] = f[s'][i] + f[s-s'][i](无条件)f[

2017-04-27 23:28:00 502

原创 BZOJ 3698 XWW的难题

上下界最大流好久没写上下界的网络流了,赶快复习一遍。对于这道题建图不难,就是把行、列当成点,一个连S,一个连T。一个格子当成行到列的边,上下取整当成上下界即可。先说一下上下界可行流怎么搞。我们只要考虑把下界填平使得图流量平衡即可。对于入下界大于出下界的点,因为要填平下界,而出去的流量少了,因此要给它补充一些流量,S’向它连差值的边即可,反之连T’。 然后考虑上下界最大流怎么搞。一个办法是按照论文里说

2017-04-27 23:26:41 382

原创 BZOJ 3616 War

KD树+bitset对于一个联盟s,设会打它的个数为t,那它对答案的贡献就是 (n−tn)m(\frac{n-t}{n})^m考虑怎么得到t。对于一个点,我们希望在它能打到的所有点上面打上这个点的标记。直接打标记不行,考虑用KD树即可。然后联盟里的所有点用bitset或起来即可得到所有能打到这个联盟的点。题目保证了坐标随机,因此KD树的复杂度是期望 n‾√\sqrt n 的。#include<cma

2017-04-27 23:25:33 294

原创 BZOJ 3436 小K的农场

差分约束裸的差分约束,没什么好说的。大概说一下DFS版的SPFA为什么可以找得到负环。 前提是每一个点都被访问到至少一次。一个负环上一定存在一个点p,使得从p开始绕着环走出来的距离总是负数。反证,即假设每一个点出发绕环走都存在一次让走的距离为正,则可以构造一种方案使得可以无限次绕环走而总是非负,显然与负环矛盾。然后随便设一个源点向每一个点连边判SPFA负环即可。#include<bits/stdc

2017-04-27 23:24:28 318

原创 BZOJ 2618 [Cqoi2006]凸多边形

半平面交裸的,注意事项在代码里。#include<cmath>#include<cstdio>#include<cstdlib>#include<algorithm>#define N 505using namespace std;namespace runzhe2000{ typedef double db; const db eps = 1e-5; stru

2017-04-27 23:23:39 367

原创 BZOJ 1927 [Sdoi2010]星际竞速

费用流我只是想考前复习一下费用流……显然一个点只会进一次,出一次。那就考虑每一个点的出点抵达哪个点的入点。可以画成一个二分图的形式。一个特别操作的是可以直接跳到一个点上,那就建一个附加点使得所有出点连它,它连所有入点即可。#include<cstdio>#include<cstring>#include<algorithm>#define N 1605#define M 15005#def

2017-04-27 23:22:15 264

原创 UOJ 210 [UER #6]寻找罪犯

2-SAT首先2-SAT的tarjan做适用于一类如果A->B,则一定有B’->A’的对称的图。一个强联通分量里的所有点,要么一起选要么一起不选,那就缩起来。一个重要的结论是如果一个强联通分量里同时有A和A’,则此图无解,否则一定有解。无解的情况显然正确。有解的情况考虑构造。每次随便从点集里抓一个点A出来,选中A的所有可达点,删去所有可达A’的点。显然这是可以做到的。那这样会不会把图弄成无解?考虑如

2017-04-27 23:21:18 641

原创 黑吉辽沪冀晋六省联考 2017 BZOJ 4868&4869&4870&4871&4872&4873

这套题在BZOJ上的题号是4868~4873。 感觉还不错,就是有一些题弄起来有一点小恶心…… 这套题的部分分给得都很多,很良心的QAQBZOJ 4868 [Shoi2017]期末考试枚举+贪心枚举i表示第i天出完,把i之后的贪心挪到i即可。#include<cstdio>#include<algorithm>#define N 100005using namespace std;nam

2017-04-27 23:03:49 1437 1

原创 BZOJ 2631 tree

LCT好智障啊,update的条件设成判null了,其实应该是判isroot的……#include<cstdio>#include<algorithm>#define N 100005#define MOD 51061using namespace std;namespace runzhe2000{ typedef unsigned uint; int n, q;

2017-04-22 20:00:26 239

原创 BZOJ 4816 [Sdoi2017]数字表格

莫比乌斯反演题目就是要求,不妨设 n<mn<m ∏ni=1∏mj=1f[(i,j)]\prod _{i=1} ^n \prod_{j=1}^mf[(i,j)] 考虑一个ff的贡献,也就是变成 ∏nd=1f[d]∑ni=1∑mj=1[(i,j)=1]\prod _{d=1}^n f[d]^{\sum_{i=1}^n\sum_{j=1}^m[(i,j)=1]} 然后上面那个就是区间内gcd为定值

2017-04-17 22:27:29 684

原创 BZOJ 3786 星系探索

DFS序+平衡树刚开始在想平衡树维护树剖,发现这样并不能资瓷删点。而且好像复杂度还很劣。然后LCT目测搞不了子树修改。仔细观察, 一个点的答案只能贡献给所有子树里的询问,无视子树外的询问。也就是子树内和子树外是两回事,那就对一个点维护进入它的DFS序位置和从它子树出去的DFS序位置,一正一负,子树内的询问贡献一个正的,子树外的询问上负的直接抵消,这样就可以直接询问前缀和了。#include<cstd

2017-04-15 23:57:20 351

原创 Ural 2040 Palindromes and Super Abilities 2

回文自动机我只是想敲个板子复习一下啦……一个串的本质不同回文子串最多n个,因为新加一个字符的时候至多增加一个回文串,用border证即可。 好像BZOJ已经陷入了无法评测的境地......好气啊 #include<cstdio>#include<cstring>#define N 5000005#define A 2using namespace std;namespace runzhe2

2017-04-15 19:30:04 281

原创 BZOJ 4349 最小树形图

最小树形图+朱刘算法朱刘算法:http://acm.nudt.edu.cn/~twcourse/Tree.html#a17 啊虽然是繁体的不过写的挺详细的, 还有啊那个不叫水母叫环套树...... 为什么网上的朱刘算法都没有正确性证明啊,好气噢……感性理解一下吧这题的话,显然先把全部的都打一遍再把每一个打完,不会比其他方法更劣,因为其他方法通过交换打的过程都能变成前者。那就变成我们要找到最小的代价能

2017-04-15 14:23:44 637

原创 BZOJ 4316 小C的独立集

仙人掌DP记f[i][0/1]表示i取不取,子仙人掌的最大答案。树边直接转移,环边扫一圈转移。感觉自己很智障,DP方程没什么问题,倒是tarjan写挂了???直接把栈里剩下的东西拿来当环上的东西也是没救了……#include<cstdio>#include<algorithm>#define N 500005#define cmin(u,v) ((u)>(v)?(u)=(v):0)using

2017-04-13 14:25:43 447

原创 BZOJ 4596 [Shoi2016]黑暗前的幻想乡

容斥原理+矩阵树定理要求每一个公司都恰好选一条边出来,计数生成树。不太好做,考虑这个问题的反面,即存在一些公司选了多条边出来,然而这样也不太好做。这个反面等价于有一些公司没选,就好做了。话说我也不知道为什么 O(2n∗173)O(2^n*17^3) 能过。#include<cstdio> #include<cstring>#include<algorithm>#define mkp(_i, _

2017-04-08 19:51:09 371

原创 POJ 3648 Wedding

2-SAT关于了解2-SAT,推荐两个地方:《由对称性解2-SAT问题》、【研究总结】2-sat问题每次找到一个未被确定的Si,使得不存在Si Si’,选择Si及其后代节点而删除Si’及Si‘的前代节点。一定可以构造出一组可行解。一个重要的性质是不管怎么加限制,对于任意一对Si, Si’ , Si的后代节点与Si’ 的前代节点相互对称总成立。一类奇怪的加边是形如Si->Si’的,这条边保证了逆拓扑序

2017-04-03 23:20:52 250

原创 51Nod 算法马拉松23

A : 打表找规律 B : 数学期望 C : 拓扑排序+DP D : 状压DP E : 莫队+树状数组+卡常数 F : Unfinished听说省选推迟了一个月,整个人都不好了。放假打了一场51Nod,感觉整个人更不好了。A 1718 “多项式”能出在第一题的多项式肯定是有奇技淫巧的,打表找了一发规律,发现它的循环节是-1,-2,-1,1,2,1,…#include<cstdio>usi

2017-04-03 00:04:53 1593 2

原创 51Nod 1555 布丁怪

分治分治的方法很巧妙,就是写起来有一点小恶心先放CF题解:http://codeforces.com/blog/entry/17281题意就是问有多少连续区间满足区间内数字连续,这类序列计数一般考虑分治。一个分治区间[l,r],考虑怎么统计过mid的答案。暴力枚举左端点,然而右端点并不单调,不太好维护,考虑其他方法。出现上述情况,当且仅当已经有合法的跨mid的区间[a,b],然后b右边下一个元素可以

2017-04-02 00:31:37 410

原创 BZOJ 4553 [Tjoi2016&Heoi2016]序列

分治+线段树记l[i]表示i可能变成的最小值(包括a[i]),同理r[i]最大值。显然i能从j转移当且仅当i#include<cstdio>#include<algorithm>#define cmin(u,v) ((u)>(v)?(u)=(v):0)#define cmax(u,v) ((u)<(v)?(u)=(v):0)#define N 100005using namespace s

2017-04-02 00:31:09 366

原创 51Nod 1608 管道安装

一道观察性质好题- -。一个朴素的做法是插头DP,然而这题数据范围太大,考虑题目性质。 来个例子”L12”,其中12表示还没有填,L表示这个位置放了一个L形的管道。仔细观察可知此时1必有左插头,2不能有左插头因此必有右插头。类似地我们可以完全把一整行的左右插头确定下来。确定完之后我们可以保证这一行不会在左右插头的位置发生泄漏。同理做一下上下。最后答案就是2^(没确定的行和列)#include<cst

2017-04-02 00:30:03 354

原创 51Nod 1559 车和矩形

线段树+扫描线考虑符合题意的充要条件,是每一行每一列都有一个车?并不,显然可以构造出一行没有的合法情况,但此时必须是每一列都有车,因此充要条件是每一行都有车或每一列都有车。两种情况分开来做,考虑怎么判断每一行都有车。扫描线,按y轴排序,每一个矩形就相当于区间询问,只需判断区间里此时每一行的最近的车中最远的在哪,如果落在矩形外就不行了,于是只需求区间最小值。#include<cstdio>#incl

2017-04-02 00:28:57 499

原创 BZOJ 3620 似乎在梦中见过的样子

KMP显然给出的东西看起来就像border,因此有一个n^2的暴力KMP做法。我以为过不了,脑补了半天也没什么想法,然后发现题解就是n^2暴力???#include<cstdio>#include<cstring>#define N 15555using namespace std;namespace runzhe2000{ char s[N]; int n, k, nex

2017-04-02 00:27:36 322

原创 SPOJ 1812 LCS2

后缀自动机对于其中一个串建出SAM,把别的串S放在上面跑。对于每一个经过的节点记录串S能贡献给这个节点的max,再对每一个跑过的串在这个节点上取min,最终节点里min贡献的max就是答案。显然一个串能贡献一个节点,就能贡献这个节点的所有祖先,即fail树上到祖先的链都要更新。#include<cstdio>#include<algorithm>#include<cstring>#define

2017-04-02 00:27:01 284

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除