
BZOJ
Mys_C_K
人生有许多道:曾经踏足的是道,即将踏往的也是道,那什么才是道呢?唯有脚下走的才是道。一切精神或者物质都归于虚无,然后从混沌中衍生出三万道。在悲喜间涉足一条无数前人经历过,且将有无数后人奔赴的道,无论是否已经或者将要到达彼岸,然后便不再回头或是左顾右盼,即使有些道繁盛至极,夜灯如昼,无数人一浪又一浪的涌去,造就了世人皆知的辉煌;即使有些道草木凋敝,荒草丛生,只等勇敢的开拓者斩开荆棘,创造一片天地;这些都无所关,无所在意,彼岸何如、来日何方甚至过往旧事都化作一缕云烟,飘渺碧霄,我自撷高山之月色,独随足落处往行。
展开
-
[HAOI2007]理想正方形-单调队列学习笔记
单调队列是一种限制条件比较多但是在某些问题上应用有意想不到的效果的数据结构。这种数据结构的核心思想也是减少不必要的比较。考虑luoguP1886 右转进入原题这个滑动窗口。以最大值为例,当一个窗口中的元素右边有一个比它更大的元素(也在窗口中),那么(当它右边的元素进入窗口中之后)无论何时这个元素都不能成为最大值。那我们就可以把它删除。入队实现起来就是这样的,如果队不空且要入队的元素比队原创 2017-01-18 13:58:38 · 686 阅读 · 0 评论 -
BZOJ2809 [APIO2012]dispatching-左偏树-左偏树学习笔记
题目链接:右转进入题目题目大意:自行参考原题题解:算法是不难想到的,主体是dfs一遍,对于第i个点为管理者的情况,先处理出以第i个点为根的子树中所有点为管理者的答案;(假设已经处理好了)那么要怎么做呢?显然,为了不超过预算,我们要把i这个人和i的子树中的人放到一块去,然后排个序,贪心的选取能力值较小的,能选多少是多少设选了sz个,那么以第i个人为管理者的答案就是sz*L[i]。原创 2017-04-03 16:06:40 · 552 阅读 · 0 评论 -
[AHOI2008] BZOJ 1787 Meet紧急集合-LCA
题目链接:右转进入题目题目大意:请自行参考题目;做法:其实注意到,三个点,两两搭配,会有三个LCA;可以证明,这三个LCA至少有两个是相同的;不妨设相同的是LCA1和LCA2,可以证明,如果选择LCA3作为答案,由于边权为1,那么花费达到最小值。更进一步的说,这个最小值就是虚树的边数。证明方法十分简单。先证至少有两个LCA相同。不妨设三个点是a,b,c。现在考虑原创 2017-04-09 14:20:07 · 395 阅读 · 0 评论 -
BZOJ 3585 mex 莫队算法+分块
BZOJ 3585 mex题目链接:右转进入题目题目大意:给定n,m,n个数(0每次询问一段区间[L,R],在aL,a(L+1),,,,aR中第一个没有出现的自然数是多少?n,m题解:裸的莫队算法。但是这个题有一些值得注意的地方:第零,由于莫队算法有nsqrt(n)次修改,m次询问,n和m同阶。可以看到修改次数比询问次数多得多。辣么说如果用线段树的话原创 2017-03-25 19:51:48 · 543 阅读 · 0 评论 -
BZOJ 3252攻略 dfs序+线段树
BZOJ 3252 攻略 dfs序+线段树题目链接:右转进入题目题目大意:给定一棵以1为根的n个点的树,树有点权且点权为正整数,可以选择k条以根作为起点的路径,每条路径的价值即这条路径上所有点的点权之和。但是选择一条路径之后,这条路径上的所有点的点权会变成0。(也就是说,这k条路径中被重复选择的点,其点权只能被计算一次)。求最大价值之和。n题解:一开始以为是原创 2017-03-26 13:42:12 · 689 阅读 · 0 评论 -
[SCOI2009]生日礼物-暴力-排序-双指针
题目链接:右转进入题目题目大意:请自行参见题目。表示完全把这个题当作普及阻难度做的题目有的条件没有用,没加任何优化都2000ms,比很多题解快。由于这道题非常简单,有很多中解法。首先来一个肯定会TLE的做法,二分区间长度,然后检查,这是网上一个人的做法。不用看也知道这复杂度肯定TLE,也不知道这位怎么想的竟然还真的写了写试了试……再来一个复杂度稍高但是能在BZO原创 2017-04-02 22:33:12 · 457 阅读 · 0 评论 -
[SDOI2010] BZOJ 1922 大陆争霸-图论-最短路径-dijkstra算法
题目链接:右转进入题目题目大意:给定一张有向带权图,但是到达一个点之前必须访问另一些点。求从点1到点n的最短路径。题解:用一个“伪状态转移方程”来描述(之所以是说伪,是因为这是个图而不是个树,所以仅仅用来表示逻辑)dist[x]=max{d[from[x]],min{dist[pre[x]]+e[i].wgt}}。这个意思是:到达一个点的真正用时,是在到达它之前必须到达的点原创 2017-04-14 21:14:12 · 651 阅读 · 0 评论 -
[POI2007] BZOJ 1102 山峰和山谷Grz-bfs-floodfill
题目链接:右转进入题目题目大意:请自行参考题目;题解:一眼望过去就是个O(n^2)的爆搜。但是有几个注意的地方:1,题目的联通是八联通;2,由于最多有10^6的点,所以dfs会爆栈;3,每次找一个合法的联通块,如果搜索到一半发现不合法也要把这个联通块全部填充完,否则下一次再次搜索到这个联通块会很麻烦;4,八个判断可以用dx和dy数组简化,这个常用技巧;5,由于每次填原创 2017-04-15 12:14:04 · 841 阅读 · 0 评论 -
POI2010 BZOJ2079 Guilds - 结论题
题目链接:右转进入题目题目大意:请自行阅读原题解:和cf风格类似的题,就是这种思路题。不难发现如果两个点是联通的,那么两个点都会满足条件。(因为发现这个点不涂色是不划算的,只要两个点涂上不同的颜色即可)所以任务变为图中是否有孤立的点。随便怎么判一下即可。这个题没有自环,如果有的话还需要特判一下。代码:#include#include#define MAXN 20原创 2017-05-11 09:35:18 · 580 阅读 · 0 评论 -
[CEOI2008] BZOJ 1391 order-最小割
题目链接:右转进入题目题目大意:请自行参考原题。解:SB最小割竟然还卡常卡内存QwQ第一遍MLE,第二遍TLE我也真是醉了。从s向机器连边,容量为购买价格从机器向任务连边,容量为租用价格从任务向t连边,容量为收益。统计出收益之和tot,跑一边网络流flow,tot-flow就是答案。这个题不需要开long long。代码:#include#include原创 2017-05-11 10:37:01 · 474 阅读 · 0 评论 -
[NOI2014] BZOJ 3671 随机数据生成器-贪心
可能我不适合做NOI题什么水题都做不了题目链接:右转进入题目题目大意:请自行参考原题题解:首先把前面随机数据生成的部分完全暴力的敲出来然而我这部分因为内存开小了不停地出各种奇奇怪怪的bug到最后都怀疑是不是不适合编程显然,敲完生成的棋盘之后,可以知道(1,1)和(n,m)是一定要选的。下一个选什么呢?显然,从1开始考虑到n*m(应该注意到T的值是从1~n*m),原创 2017-05-03 08:27:41 · 520 阅读 · 0 评论 -
BZOJ2127 happiness-最小割
题目链接:右转进入题目题目大意:请自行参考原题解:最小割经典题,有一种计算边权的方法并不会。直接建图:新建S表示文科,T表示理科。对于每个同学X,建立(S,X,X同学学习文科的喜悦度),(X,T,X同学学习理科的喜悦度)对于每对相邻的同学X和Y,其共同学习某文科的喜悦度为C,建立(S,新加一个节点,C),(新加的那个节点,X,无穷大),(新加的那个节点,Y,无穷大)原创 2017-05-11 13:30:02 · 373 阅读 · 0 评论 -
BZOJ2132 圈地计划-最小割
题目链接:右转进入题目题目大意:自行参考原题解:非常简单,限制有:不能同时有A和B,相邻的点同时A(或B)不能相连所以显然要黑白染色(就是把相邻的点染成不同的两种颜色,这样检出两派点来)左面的点x建(s,x,a),(x,t,b)右边的点y建(s,y,b),(y,t,a)相邻的点x,y建(x,y,c).(y,x,c)。每加一条边就ans+=此边边权最后ans-=最原创 2017-05-11 15:19:22 · 479 阅读 · 0 评论 -
BZOJ3275 Number-最小割
题目链接:右转进入题目这个题有一部非常好的转化。首先一眼看出这是一个带权最大独立团的问题。所以想到网络流但是网络流里面学的带权最大独立团问题必须要求是二分图啊怎么办!我承认我没有想到怎么二分QwQ真是太弱辣!发现两个奇数不满足a^2+b^2=c^2的条件(需要一点数学知识),两个偶数不满足gcd(a,b)=1的条件。所以分别把奇数和偶数看作两排点即可。如果两个不能同原创 2017-05-11 16:11:36 · 495 阅读 · 0 评论 -
BZOJ3158 千钧一发-最小割
题目链接:右转进入题目和[Number]这道题几乎一模一样。不多解释代码就是随便改了改//BZOJ3275 #include#include#include#include#include#include#define INF INT_MAX#define MAXN 1010#define MAXM 3000000#define ull long longus原创 2017-05-11 16:22:31 · 424 阅读 · 0 评论 -
[NOI2006]最大获利 BZOJ1497 - 最小割
题目链接:右转进入题目可能我不适合做NOI的题迄今为止做NOI的题有一半都是MLE 23333M的范围看小了,不停地RE建边:(S,中转站,p),(中转站A&B,用户群,inf),(用户群,T,C)跑一边最小割。所有用户群的获利之和减去最小割的值就是答案。代码:#include#include#include#include#include#defin原创 2017-05-11 16:59:58 · 363 阅读 · 0 评论 -
[ZJOI2007]BZOJ1060时态同步-贪心
题目链接:右转进入题目题目大意:请自行参考原题解:贪心。很明显最后每个叶节点的到达时间应该是一开始的到叶节点的时间的最大值。所以每个点增加的时间之和是确定的。越靠近根,使用一次增加的贡献就越大(相当于子树+1),所以贪心即可。代码://BZOJ 1060//ZJOI 2007#include#include#include#include#include#defi原创 2017-05-12 13:31:41 · 362 阅读 · 0 评论 -
BZOJ3511 土地划分-最小割
各种retle也真是不想说什么了这种类型的最小割模板题大全集题目链接:右转进入题目题目大意:请自行参考原题解:对第i个城市建点C=i,对第i条边两端点X和Y建点A=i+n和B=i+n+m,建源点S=0,汇点T=n+2*m+1。建边:(S,C,VA),(C,T,VB),(S,A,EA),(B,T,EB),(A,X,INF),(A,Y,INF),(X,B,INF),(Y,B,I原创 2017-05-12 14:15:53 · 785 阅读 · 0 评论 -
BZOJ3894文理分科-最小割
题目链接:右转进入题目题目大意:自行参考题解:和上一个“土地划分”一样。代码://BZOJ 3511 #include#include#include#include#include#include#define MAXN 60000#define MAXM 1000000#define INF INT_MAX#define build_edge(u,v,c) a原创 2017-05-12 14:48:54 · 380 阅读 · 0 评论 -
BZOJ1585 Earthquake Damage 2 地震伤害 - 最小割
题目链接:传送门题目大意:自行参考原题我承认这个题如果不告诉我是最小割我是想不到的QwQ这个题如果知道了是最小割就非常显然了:S=1,T=2n+1,对每个点x拆成x和x2=x+n,对于图上的每一条边(u,v),建边(u2,v,INF),(v2,u,INF)。对于报告的点u,建边(u,u2,INF),(u2,T,INF)。对于其它不是1的点u,建边(u,u2,1)对于原创 2017-05-12 15:33:09 · 557 阅读 · 0 评论 -
[AHOI2006] BZOJ1266 上学路线route-图论-最短路树-最小割
题目链接:传送门题目大意:自行参考题解:首先,观察得知肯定要先求一个最短路(这不是废话么)然后可以求出最短路网(就是在s到某个点x的某一条最短路上的边的集合)其中最短路网上的边(u,v,w)满足dist[u]+w=dist[v]。然后,如果你割掉的不是最短路网上的边,那么显然无论割多少都不会影响答案(因为你总是只沿着最短路网上的边走),所以只考虑这些边。如果你割了一些最短路原创 2017-05-13 10:34:49 · 633 阅读 · 0 评论 -
BZOJ3774 最优选择-最小割
题目链接:传送门题目大意:自行参考题解:这个题也非常简单首先黑白染色,以白色连S(S=0),黑色连T(T=2*m*n+1),容量为A。对于每个点P(i,j)=(x-1)*m+y新建点C(i,j)=P(i,j)+m*n。以P(i,j)是白色的为例,其相邻的点Q(i',j')是黑色的。建边(P,C,B),(C,Q,INF)。answer=sigma(B)-最小割代码原创 2017-05-13 12:32:40 · 560 阅读 · 0 评论 -
BZOJ3438 小M的作物-最小割
题目链接:右转进入题目题目大意:自行参考题解:同土地划分//BZOJ 3834 #include#include#include#include#include#include#define MAXN 100000#define MAXM 5000000#define INF INT_MAX#define build_edge(u,v,c) add_edge(u,原创 2017-05-12 15:04:10 · 1364 阅读 · 0 评论 -
[NOI2015] BZOJ4195 程序自动分析-离散化-并查集
传送门:右转进入题目题目大意:给定n个式子形如xi=xj或者xi!=xj。问是否可能?首先这个题数据范围大,先离散化一下。然后发现输入顺序不影响答案,所以先考虑等号,就是并查集维护一下即可。对于不等号,如果find出来是在同一个集合里就是NO并退出。最后输出YES。水题……QwQ//NOI 2015//BZOJ 4195#include#include#inc原创 2017-05-13 14:43:20 · 511 阅读 · 0 评论 -
BZOJ2039 人员雇佣-最小割
题目链接:传送门题目大意:自行参考解:这么SB题读错意思了,然后不停的输出0……QwQ建边(S,x,Ax),(x,y,Exy)(y,x,Exy),(x,T,sigma(Exi))。ans=sigma(sigma(Eij))-最小割代码://BZOJ 2039#include#include#include#include#include#include#d原创 2017-05-13 09:20:45 · 432 阅读 · 0 评论 -
CTSC2014 BZOJ3555 企鹅QQ-哈希
题目链接:传送门题目大意:自行参考题目题解:我可能什么也不会做了QwQ哈希一遍,枚举不一样的是哪一位,把这一位减去,然后排个序,扫一遍即可直接用unsigned long long自然溢出即可不会被卡2333代码://CTSC 2014//BZOJ 3555#include#include#include#include#define ull unsigned原创 2017-05-15 13:43:01 · 479 阅读 · 0 评论 -
[JLOI2768]冠军调查 BZOJ2768-最小割
传送门题目和之前SHOI2007的善意的投票一模一样,源代码提交上去就能AC代码://BZOJ1934 SHOI2007//BZOJ2768 JLOI2010#include#include#include#include#include#include#define MAXN 1000#define MAXM 200000#define INF INT_MAX#de原创 2017-05-15 20:01:14 · 459 阅读 · 0 评论 -
[SHOI2007]BZOJ1934 Vote善意的投票-最小割
题目链接:传送门题目大意:请自行参考原题题解:我承认如果不告诉我这是个最小割我是想不到的QWQ一个同学i的意见是x如果x=1就建边(S,i,1)否则建边(i,T,1)。如果xy是朋友就建边(x,y,INF)&(y,x,INF)。最小割就是答案(割掉某一边表示违背初始意愿)代码://BZOJ1934//SHOI2007 #include#include#include原创 2017-05-12 15:12:36 · 481 阅读 · 0 评论 -
POI2008 BZOJ 1116 CLO -并查集-基环树
题目链接:右转进入题目题目大意:给定一个无向图,选择若干条边,并变成有向的,使每个点的入度为1.题解:因为最后是有向图,点的入度=1意味着图的入度为n意味着图的出度=n意味着图的度为2n意味着图中有n条边意味着这是个基环树森林。显然对于每一个联通块,都检查是否能组成基环树即可。显然如果组成基环树,那么一定有符合题目要求的做法。则么检查呢?非常简单。先生成这个联通块的生成树(有块原创 2017-04-25 10:35:43 · 641 阅读 · 0 评论 -
[SDOI2010]BZOJ 1924所驼门王的宝藏-强连通分量-缩点-拓扑排序-dp
题目链接:右转进入题目题目大意:自行参考题目题解:tarjan缩点后拓排一下dp乱搞即可。代码://BZOJ 1924//SDOI 2010#include#include#include#include#include#include#include#define MAXN 100010#define MAXRC 1000010using namespace s原创 2017-04-25 16:59:18 · 536 阅读 · 0 评论 -
BZOJ1671 骑士-bfs
传送门题目大意:自行参考题解:暴力搜索,把每个点拆成“有灌木”和“没灌木”两个点,bfs一下即可。代码://BZOJ1671#include#include#include#include#define MAXN 1100#define MAXM 1100#define inrange(x,y) (1<=(x)&&(x)<=n&&1<=(y)&&(y)<=m)#de原创 2017-05-16 21:18:16 · 446 阅读 · 0 评论 -
BZOJ1458 士兵占领-最大流
传送门题目大意:自行参考题解:首先一看方格图最值问题就是网络流(尽管我是知道了网络流才做的QwQ)肯定是对每一行建一排点,每一列建一排点,建成一个二分图。显然行和列连边容量为1.首先注意到要求最小值,发现最小割没办法处理(因为从s对每一行的连边割去是没有意义的,因为可能只“割去”一部分)然后注意到,如果s和每一行连边的容量表示“最多/最少能放多少个士兵的时候”,这就是个有上原创 2017-05-17 19:11:11 · 407 阅读 · 0 评论 -
[ZJOI2009]BZOJ1412 狼和羊的故事-最小割
传送门题目大意:自行参考题解:SB最小割任意两个相邻格子之间连边容量为1,a[i][j]=1的(i,j)和s相连,=2和t相连,这两个容量都是正无穷。跑最小割即可。//BZOJ 1412 //ZJOI 2009 #include#include#include#include#include#include#define MAXN 11000#define原创 2017-05-17 20:22:30 · 397 阅读 · 0 评论 -
[SDOI2016] BZOJ4602 齿轮-dfs-带权并查集-数论逆元-质因数分解
传送门题解:总结几种做法,并指出其中的优劣;主要是两种算法,一种是暴力dfs,另一种是并查集。事实上这种“每条边都考虑”大概都可以用上述两种办法处理,并查集复杂度略高,但是其实近乎线性。暴力dfs就是,建一张无向图(不能是有向的),然后对于每个联通块,第一个元素设为1,然后通过第一个元素,算出其它元素的值,然后对于点x,以及边(x,y),如果y也访问过了,就判断一下通过原创 2017-05-19 18:24:58 · 592 阅读 · 0 评论 -
[AHOI2009] BZOJ2431 逆序对数列-动态规划-前缀和优化
传送门题目大意:求逆序对数为k的长为n的排列有多少?n,k题解:这显然是个DP(废话)而且dp[n][k]表示长为n逆序对数为k的方案数。而且状态转移显然要从dp[n-1][...]推过来。考虑如果把n插入到1~(n-1)的某个逆序对数为x的排列的第p个数的后面,那么会新产生(n-1)-(p+1)+1=n-p-1对新的逆序对,其中0因此如果当前状态dp[n][k],那么原创 2017-05-19 19:40:48 · 751 阅读 · 0 评论 -
BZOJ4300 绝世好题
传送门题目大意,给定n,{an},求a的一个最大子序列bn,使得bi&b(i-1)!=0.求最大的|b|题解:显然是DP,状态转移方程显然是dp[n]=max{dp[k]+1},a[n]&a[k]!=0考虑优化,发现和LIS有点类似。LIS有个线段树优化就是暴力的记录最后的数字(显然是最大的)对应的最长的序列是多长,这样离散化一下每次询问前缀最大值。这个题的优化类似,发现a&b原创 2017-05-19 20:47:01 · 1016 阅读 · 0 评论 -
BZOJ3036-绿豆蛙的归宿-概率与期望-DP
传送门题解:略。printf("%.2f")是四舍五入么QwQ//BZOJ 3036 #include#include#include#include#define MAXN 100010using namespace std;struct node{ int to,val; node(int _to,int _val) { to=_to; val=_val原创 2017-05-20 12:12:41 · 476 阅读 · 0 评论 -
BZOJ2134 单选错位
传送门题解:非常简单。第i+1道题作对的概率,是1)第i道题选择了1~a(i+1)中的一个选项,并且作对了i+1题。2)若ai>a(i+1) 第i道题选择了a(i+1)+1~ai中的一个选项并做对了i+1题。显然这部分概率为0。如果ai>a(i+1),那么“第i道题选择了1~a(i+1)中的一个选项”的概率是ai/a(i+1)。否则ai综合起来就是min(ai,a(i+原创 2017-05-20 12:40:47 · 648 阅读 · 0 评论 -
[SCOI2005] BZOJ 1088 扫雷-状压dp
传送门题目大意:略。题解:大佬们好多花式做法。一开始想的直接递推发现推不出来。(后来看了网上一个人的题解发现可以直接递推)想了想发现推不出来的原因是,一方面第二列的第i行对第一列的第i+1行有影响要记录,而且不记录“轮廓”的话会有重复计数。注意到一个格子周围的“轮廓”长度是3,因为再大就影响不了了,因此可以状压dp,这样就可以保证不会有重复了。以上是我的做法。原创 2017-06-16 20:23:44 · 515 阅读 · 0 评论 -
BZOJ3450 Easy-概率与期望-递推
传送门题目大意:给定一个01序列,其中有某些字符未知(记为?),是0或1的概率相等,各50%。序列的值定义为序列中极长的0序列的长度的平方的和。求期望值。解:一看概率题想递推。记f[i]为到第i位,期望值是多少。那么如果第i位是0,那么f[i]=f[i-1]+(第i位是0的贡献)。在f[i-1]的基础上,第i位是0对f[i]的贡献,显然就是(到第i位的极长0序列的长度)^2原创 2017-05-21 16:18:50 · 735 阅读 · 0 评论