- 博客(98)
- 收藏
- 关注
转载 让Gedit编译你的cpp文件
原文章:https://blog.csdn.net/waduan2/article/details/791102704转者按:来自退役者的无奈orz背景:Linux自带的编译器太辣鸡了 (#ノ`Д´)ノ,怒学Gedit开始用Gedit都要用gdb编译好麻烦….其实可以给它配置一下,加个”编译+运行”的功能就OK了主要流程:①点进工具栏-编辑-首选项②在插件栏中,选中”外部工具”③工具栏-工具-Ma...
2018-07-12 15:08:20 1943
原创 bzoj3211 花神游历各国 线段树
题目大意: 维护一个长度为n的序列,支持一下两个操作: 1、区间开根号(向下取整); 2、区间求和。 n<=100000,m<=200000,序列中的数<=10^9且为非负整数。题目分析: 都这个逼样了还来刷水,我是心大还是脑子进屎呢T_T区间开根号这个没有什么数据结构维护的了,但是10^9这么大的数开根号5次也就到1了。 所以说线段树维护一下区间和,然后修改就暴力在线段树上改就可以了,
2017-07-20 19:11:59 607
原创 bzoj2906 颜色 分块
题目大意: 给一个长度为n的颜色序列,颜色不超过m种,询问位置在l~r中间,颜色在a~b之间的同种颜色出现次数的平方的和。题目分析: 神分块orz 每n^(2/3)个数分成一个块,然后预处理出第i个块到第j个块的前k种颜色的答案是多少,和第i块到第j块第k种颜色有多少个。然后对于l~r相同块就暴力一下,否则整块直接读答案,边边角角就暴力更新一下。代码如下:#include <cstdio>#
2017-07-13 20:46:16 721
原创 bzoj1137 [POI2009]Wsp 岛屿 半平面交
题目大意: 有一个n个点的凸多边形,任意两个点之间有一条笔直的路径,可以在路径相交的时候换路。 现在有m条路不能走了,问从点1走到点n的最短路是多少。题目分析: 这道题其实是让求一个剩余路的半平面交的周长(这到底是怎么想到的orz)。 但是路有n^2条,但是对于一个点,最前面的一条边可以把后面的所有边都弹掉,所以后面那些边都没有用了,只加最前面的一条边就可以了,于是就变成边数就变成了n。把n
2017-07-08 10:44:36 493
原创 bzoj4241 历史研究 回滚莫队
题目大意: 有一个长度为n的序列。 有m个询问,每次询问l~r范围内每个数值乘以该数值出现次数的最大值。题目分析: 据说这题可以在线做?这题普通的莫队GG,因为不支持快速删除操作,但是支持快速加入一个值的操作,所以上回滚莫队就好了。回滚莫队可以把删除操作去掉,并且时间复杂度仍然保持在在O(nsqrtn)。分块和排序都按照正常莫队做法来,然后在统计答案的时候,如果一个询问的左端点和右端点在同一个
2017-07-06 15:27:30 804
原创 bzoj4199 [Noi2015]品酒大会 后缀数组+并查集
题目大意: 定义字符串s的两个子串为r相似的当起始位置不同的两个长度为r子串完全相同。 第一问: 对于每一个r,求出r相似的子串有多少对,0<=r#include <cstdio>#include <algorithm>#include <iostream>#define N 320000using namespace std;typedef long long LL;const L
2017-07-04 17:04:52 418
原创 bzoj2877 [Noi2012]魔幻棋盘 二维线段树
题目大意: 维护一个矩阵支持两个操作: 0、查询子矩形gcd。 1、子矩形整体加一个值。 所有的询问都会一定包含同一个点。题目分析: PoPoQQQ讲解的非常好啊这个…… 二维线段树可以资磁子矩形查询,但是它不资磁子矩形修改啊orz 由于gcd(a,b)=gcd(a-b,b),所以我们可以考虑差分。 但是上面这个式子使用是有前提的,就是把一些数差分之后,其中必须有一个数时原数才行,恰
2017-07-02 20:17:37 668
原创 UOJ#77 bzoj3218 a + b Problem 可持久化线段树优化建图+网络流
题目大意: 有n个点,如果第i点染黑得到bi的收益,染白得wi的收益。 每个点有属性ai,li,ri,pi。 如果第i个点染成黑色,并且存在一个点j满足 第j个点染白色,j< i 且 li<=aj<=ri 则i为奇怪的点,付出pi的代价。 求总收益最大。 n<=1e5题目分析: 可以看出一个网络流的模型。 从源点向每个点连bi,每个点向汇点连wi。 对于第i个点,新建一个结点,从
2017-06-30 17:29:32 756
原创 bzoj4424 Cf19E Fairy 树形dp
题目描述: 给定 n 个点,m 条边的无向图,可以从图中删除一条边,问删除哪些边可以使图变成 一个二分图。 n,m<=1000000题目分析: 戳这里详细题解一个二分图是没有奇环的。 要让所有的奇环消失,就应该删去所有奇环的交上的边。 但是如果删去奇环和偶环的交上的边,奇环和偶环就会重新组成一个新的奇环,所以在偶环上的边是不能删的。这样我们随便搞出一颗生成树,对于对于所有树边,在所有奇环
2017-06-28 19:24:31 759
原创 bzoj4519 [Cqoi2016]不同的最小割 分治最小割 模板
题目大意: 给一张图,求任意两点最小割有多少不同的值。题目分析: 分治最小割的模板题。 分治最小割可以在O(n次网络流+n^2)的时间复杂度求出任意两个点之间的最小割。 我也不知道为什么但是这么做是对的QWQ。对于分治的序列,随便选择两个点作为源点和汇点,跑一遍网络流。 在S和T之间连一条流量为最小割的边。 然后和S连通的点分到左边,剩余的点分到右边,递归下去。 这样做我们会做n-1次
2017-06-27 18:00:21 435
原创 bzoj3601 一个人的数论 莫比乌斯反演+高斯消元
题目大意: 设fd(n)代表n以内与n互质的数的d次幂的和。 给出n和d,求fd(n)。题目分析: 围观题解. 数论渣渣表示orz……代码如下:#include <cstdio>#include <algorithm>#include <iostream>#define N 120using namespace std;typedef long long LL;const int
2017-06-23 16:26:04 505
原创 bzoj1061 [Noi2008]志愿者招募 单纯形(模板)
题目大意: 有n天,m种志愿者。 每天需要ai个志愿者,雇佣每种志愿者的费用为ci,每个志愿者可以在Si天到Ti天工作。 问最小花费。题目分析: 题解PoPoQQQ.html 单纯形wyfcyx.pdf据说这道题网络流神题,单纯形裸题首先我们根据题意 设第i天需要xi个志愿者。 Ai,jA{_i,_j}代表第j个人可以在第i天工作。 bib{_i}代表第i天需要的人数。 cic{_
2017-06-21 21:27:47 521
原创 bzoj2428 [HAOI2006]均分数据 模拟退火
题目大意: 把n个数分成m组,要求分的尽量平均,即方差最小,求这个方差。题目分析: http://blog.csdn.net/lych_cys/article/details/50843232 我们先随机一个答案,设置一个温度,然后把其中一个数从原来的分组中拿出来,随机放到另一个分组中,并计算答案,如果答案更优,就接受,否则就以一定概率(温度越高概率越大)接受这个答案,并且慢慢降温。因为模拟退
2017-06-21 16:31:49 488
原创 bzoj1797 [Ahoi2009]Mincut 最小割 网络流+强连通分量
题目大意: 给一张图,S和T。 对于每一条边,问这条边是否可以在最小割中,是否一定在最小割中。题目分析: http://hzwer.com/3217.html 先跑一边网络流,然后在残量网络中进行强连通分量缩点。对于第一问,如果u和v不在一个强连通分量中,则这条边可以在最小割中。 对于第二问,如果u和S在一个强连通分量中,并且v和T在一个强连通分量中,在这条边必须在最小割中。代码如下:#i
2017-06-21 15:10:15 559
原创 bzoj1391 [Ceoi2008]order 网络流——最大权闭合子图
题目描述: 有N个工作,M种机器,每种机器你可以租或者买过来. 每个工作包括若干道工序,每道工序需要某种机器来完成,你可以通过购买或租用机器来完成。 现在给出这些参数,求最大利润n<=1200,m<=1200。题目分析: 最大权闭合子图模型。 从源点向工作连容量为收益的边。 从机器向汇点连容量为购买的边。 从工作向机器连容量为租用的边。 用总收益减去最小割(即最大流)即可。这题不仅卡时,
2017-06-20 22:00:01 559
原创 bzoj2744 [HEOI2012]朋友圈 二分图大匹配——最大独立集
题目描述: 在很久很久以前,曾经有两个国家和睦相处,无忧无虑的生活着。一年一度的评比大会开始了,作为和平的两国,一个朋友圈数量最多的永远都是最值得他人的尊敬,所以现在就是需要你求朋友圈的最大数目。 两个国家看成是AB两国,现在是两个国家的描述:A国:每个人都有一个友善值,当两个A国人的友善值a、b,如果a xor b mod 2=1, 那么这两个人都是朋友,否则不是;B国:每个人都有一个友
2017-06-19 22:48:43 936
原创 bzoj4448 [Scoi2015]情报传递 树链剖分+树状数组
题目大意: 维护一颗树,支持一下操作(可以离线) 1、给一个点赋值; 2、查询一条链上比有多少个点以及某个数(i-c)小的点有多少个。(我这个题目大意略精简了一点哈=。=,但是还是可以比较轻松的把原题目转化成这个意思的)题目分析: 我们可以把所有的操作离线出来,把赋值操作按照赋值的大小排序(相当于没排,不知道我这个沙茶为毛要排一下>_<) 然后把所有的询问按照要(i-c)从小到大排序。
2017-06-16 16:08:18 750
原创 bzoj3083 遥远的国度 树链剖分+线段树
题目大意: 维护一棵树,支持三个操作: 1、换根; 2、链修改; 3、查询子树最小值。题目分析: 如果只有2、3操作就可以直接树链剖分+线段树裸上了。 加上1操作后,我们仍然可以树链剖分+线段树裸上。对于查询操作,我们分三种情况讨论: 假设查询的点为x。 1、根和x相同:直接输出整棵树的最小值。 2、根不在x的子树中:直接查询原x的子树。 3、根在x的子树中:先找到根在x的哪个子
2017-06-16 11:34:47 415
原创 bzoj2763 [JLOI2011]飞行路线 Dijkstra
题目大意: n个点,m条边(n<=10000 m<=50000)可以任意将k(k<=10)条边的值改为0,求S到T的最短路。题目分析: 把一个图拆成k+1个图,连边的时候相同层之间连正常权值,然后从当前层向下一层连一条权值为0的单向边。 代表有k次机会走一条为0的边到下一层。 直接跑Dijkstra即可。 什么?你说spfa?? ……代码如下:#include <cstdio>#inc
2017-06-16 09:03:05 514
原创 bzoj3436 小K的农场 差分约束系统
题目大意: 给定n个点,m条信息,信息分为三种: 1、a比b多至少c 2、a比b多之多c 3、a和b相等题目分析: 差分约束系统。 差分约束系统中的一条边代表b至多比a多c。 于是我们用一下方式连边然后跑最短路即可: 1、a->b -c 2、b->a c 3,a->b 0第一次写递归版的spfa好羞射o(>﹏<)o 代码如下:#include <cstdio>#define
2017-06-15 21:58:06 403
原创 bzoj2725 [Violet 6] 故乡的梦 && 4400 tjoi2012 桥 Dijkstra+线段树
题目大意: 2725: 有n个点,m条边的图,有边权,给定S(起始点)和T(终点),然后有q个询问,问原删除某一条边后的S到T的最短路。 4400:有n个点,m条边的图,有边权,问删除哪些边能使从1号节点到n的最短路径最长。题目分析: 2725: 我们先随便找出一条最短路,如果删除的边不在最短路上,很显然走最短路是最近的,直接输出最短路长度即可。 当询问的边是最短路上的边的时候: 如果我
2017-06-15 21:49:32 912
原创 HDU2433 Travel 最短路径树
题目大意: 有一个n(n<=100n<=100)个点m(m<=3000m<=3000)条边的无向图,边权为1,求删掉每一条边之后,每个点到所有点的最短距离和。 多组数据题目分析: 最暴力的方法就是删掉每一条边,然后枚举每一个点,跑一边bfs,时间复杂度O(nm^2) 据说会TLE诶O(∩▽∩)O于是看了大家的博客,知道了有最短路径树这种东西…… 最短路径树就是对于一个源点,到每一个点都有一
2017-06-14 17:45:13 810
原创 bzoj3159 决战 LCT
题目大意: 维护一个树,支持以下操作: 1、链+ 2、链求和 3、链求最大 4、链求最小 5、链翻转(此处的翻转是指把链上的值翻转,而树的形态不变)题目分析:(LCT) 如果只有前四个操作就可以用LCT或者树链剖分+线段树随便维护一下就行了。 有了第五个操作就不行了。所以我们用两个LCT,一个维护这棵树的形态,另一个维护树上所有的权值。 两个LCT的链的剖分是一样的,但是splay
2017-06-12 16:20:47 619
原创 bzoj3648 寝室管理 树分治
题目大意: 给一颗基环树,求所有长度大于等于K的路径。题目分析: 如果没有环,只有树的话,只要裸上树分治就可以了。 有环的话我们就先把环上的一条边去掉,然后做树分治。 这样我们就统计出了所有不经过这条边的路径树,还剩下所有经过这条边的路径数。 我们此时处理出以环上所有点位根的子树信息,并将其合并。 然后每次去掉环上一个点的信息,再用这个点的子树信息与环上其他点的子树信息更新答案(通过刚才
2017-06-05 20:20:57 424
原创 bzoj2806 【Ctsc2012】 Cheat 后缀自动机+单调队列优化dp
题目大意: 给定一些标准串。 给定一个串,要求一个L使得在这个序列中可以取出若干个长度超过L的子串(这些子串必须是给定标准串的子串),且取出的串的总长度超过整个串的90%。 求最大的L。题目分析:先用后缀自动机求出以每个位置为结尾往前最多能匹配多少位,我们用数组a[i]来存储这个值。 这个只要对于所有的标准串建一个广义的后缀自动机,然后把这个串放进去跑一遍,如果能匹配的话,这一位就比上一位多
2017-05-27 17:54:38 462
原创 半平面交 模板 bzoj2618 【Cqoi2006】凸多边形
题目大意: 给两个凸多边形,求面积交。题目分析: 求半平面交。代码如下:#include <cstdio>#include <algorithm>#include <cmath>using namespace std;struct point{ double x,y; point(){} point(double x,double y):x(x),y(y){}
2017-05-25 20:32:16 458
原创 bzoj4900【CTSC2017】Day1T1 密钥 cipher 乱搞
题目大意: 题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=4900 有一个包含n个点(n=2*k+1)的环(密钥),环上有k个点为A,有k个点为B,剩下一个点为X。 对于每一个A,从X顺时针走到这个A,如果途中A的数目严格多于B的数目,那么这个A为强的。一个密钥的特征值为强的A的个数。有三个问题: 1、固定所有A的位置,求特征值为0
2017-05-18 10:57:57 822
原创 线性基 模板 bzoj2460 【BeiJing2011】 元素
题目大意: 有许多矿石,矿石有编号和价值两种属性,我们要求一个集合,使得该集合任意子集编号异或和不为0,并且要求价值和尽量大。题目分析: 先科普线性基。 线性基是我们构造出一个集合,这个集合中的所有元素能相互异或能得到原集合中任意子集异抑或和。 当然我们构造出的线性基是具有一些优秀性质的。 线性基中的元素只有二进制位数个。 其中第i个元素ins[i]代表用所有数能异或出的最高位为第i位的
2017-05-01 18:56:31 965 2
原创 BZOJ 3677【Apio2014】连珠线 树形dp
题目描述: 在列奥纳多·达·芬奇时期,有一个流行的童年游戏,叫做“连珠线”。不出所料,玩这个游戏只需要珠子和线,珠子从1到礼编号,线分为红色和蓝色。游戏 开始时,只有1个珠子,而接下来新的珠子只能通过线由以下两种方式被加入: 1.Append(w,杪):-个新的珠子w和一个已有的珠子杪连接,连接使用红线。 2.Insert(w,u,v):-个新的珠子w加入到一对通过红线连接的珠子(u,杪)
2017-05-01 16:17:00 843
原创 bzoj1177 [Apio2009] Oil 分类讨论
题目大意: 给定n*m的矩阵,求三个互不相交的边长为k的子正方形的最大权值和。题目分析: 因为这写矩形互不相交,所以我们可以把他们所在的区域划分成块。 YY一下,情况也就6种:(出题人真是良(sang)心(bing)啊) 1:先横着切一下,再把上面竖着切一下 2:先横着切一下,再把下面竖着切一下 3:先横着切一下,再把下面横着切一下 4:先竖着切一下,再把左面横着切一下 5:先竖着切
2017-04-27 21:39:29 450
原创 bzoj 1150 [CTSC2007]数据备份Backup 贪心+优先队列
题目大意: 直线上有n个点,选择2k个互不相同的点,使他们两两配对,求所有点对的最小距离和。题目分析: (先扯一波淡) 一开始觉得n*n *k的dp可做,恩(点头) 然后看了一眼数据范围…… 这个dp可优化到n*k,恩(点头) 然后再看一眼数据范围…… 换个做法,网络流也能跑,恩(点头) 然后建完图跑一下…… 行了我AFO了很显然我们选择的每一对点必须相邻,否则相邻的点对一定比不相
2017-04-26 15:58:04 490
原创 后缀自动机+LCT 【bzoj4545】 DQS的Trie
题目大意: 维护一个树,树的边上有一个字母,支持三个操作: 1、查询本质不同的子串的个数; 2、在树上的某一个节点长出一个新的子树; 3、查询某个串出现的次数。题目分析: 对这棵树维护一个广义的后缀自动机。 对于1操作,只要维护每个节点的max_ len减去parent树上父节点的max_len,详见bzoj4516生成魔咒的题解; 对于3操作,则维护LCT进行链加即可,详见bzoj2
2017-04-19 14:19:27 541
原创 FWT 模板
传送门传送门:FWT知识htt点详解 传送门:Pick’s Blog(我用的板子都是非递归的QAQ,可能是非递归的FFT写的比较顺手吧)&运算void Fast_Walsh_Hadamard_Transform(LL x[],int len,int mode)//&运算{ for(int i=2;i<=len;i<<=1) { int step=i>>1;
2017-04-17 17:08:51 1737
原创 后缀自动机 + LCT 【bzoj2555】SubString
题目大意: 支持两个操作: 1、插入一串字符 2、查询一串字符在串中出现多少次。 强制在线题目分析: 维护一个动态的字符串,后缀自动机可以做。 要查询一串字符在串中出现的次数,就相当于查询这个串末尾字符代表的状态的right集合的大小,但是我们在维护后缀自动机的时候没办法维护right集合呀! 但是我们可以发现,一个节点的right集合等于在parent树上所有儿子节点的和。 所以只
2017-04-12 21:35:23 529
原创 回文自动机 模板 bzoj3676【Apio2014】回文串
题目描述: 考虑一个只包含小写拉丁字母的字符串s。 我们定义s的一个子串t的“出 现值”为t在s中的出现次数乘以t的长度。请你求出s的所有回文子串中的最大出现值。题目分析:(回文自动机) 问:
2017-04-12 19:13:44 456
原创 杜教筛 51Nod_P1244 莫比乌斯函数求和
题目大意: 求: 2<=a<=b<=10^10题目分析: 首先这道题很显然可以拆成两个前缀和相减的形式,即如何求:∑(1<=i<=n)μ(i) 当n很小的时候,我们只要线性筛一下莫比乌斯函数就可以了。 但是这道题数据范围很大,所以就要考虑杜教筛。 我们所求即为f(n) 中间那步不懂的小伙伴看这里: 对于第一个等号后面那个式子,相当于先枚举i,再枚举i的约数,然后求和。 于是这一
2017-04-10 14:58:30 1854
原创 Banner 统计
题目描述:LZN 搞完保送生考试,终于要回到信息组大家庭了,Chanxer 决定要好好地欢迎LZN,于是他在在操场上整齐地插了(M + 1) *(N + 1) 个标杆,形成了一个平面直角坐标系,左下角的标杆的坐标为(0; 0),右上角的标杆的坐标为(M;N),Chanxer 现在想要选择两个标杆作为端点连上横幅“ 机房欢迎你”。可是,由于Chanxer 很农,他不希望横幅被其它的标杆拦住,因此他要求
2017-04-07 20:16:16 692
原创 【bzoj3589】动态树 树链剖分+线段树
题目大意: 给定一棵树,支持以下两个操作: 0、子树修改 1、查询几条的链并的权值和,答案模2^31。 (这些链为某个节点到根的路径的一部分)题目分析:(树链剖分+线段树) 首先,这道题跟动态树没什么关系。 其他的题解有用什么容斥原理,还有奇怪的动态树做的,我觉得树链剖分+线段树就足够了。我们假设不是求这些链的并,而是求这些链的权值和。 那么只需要树链剖分之后维护线段树就
2017-04-06 20:00:46 449
原创 最小表示法 模板【poj1509】Glass Bead
题目大意: 给定一个循环字符串,求这个字符串字典序最小的开始位置。题目分析:(最小表示法)详解传送门 这个做法简单的来说用两个指针就是从头开始暴力比较,答案劣的就往后跳,跳到失配位的下一个,直到其中一个跳出这个串结束。注意: 当两个指针位置相同的时候,把其中一个++。代码如下:#include <cstdio>#include <cstring>#define N 120000using
2017-04-05 19:52:47 393
原创 动态树LCT 模板
题目描述: 输入: 第一行两个整数n和m; 接下来一行中n个整数表示初始点权; 接下来m行每行一个操作如上表所示。输出: 对于每一个连接操作,若p和q不连通,输出YES,并添加这条边;否则输出NO; 对于每一个删除操作,若p和q间有边,输出YES,并删除这条边,否则输出NO; 对于每一个查询最大及查询和
2017-04-04 15:28:32 766
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人