自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(21)
  • 收藏
  • 关注

原创 【poj1201】【poj2983】【差分约束系统】

poj1201题目大意求一个长度为n的01序列,满足一些条件,第i格到第j格的和不小于x。解题思路设s[i]为第1格到第i格的和,显然有三个约束:1.s[i+1]-s[i]<=1;2.s[i+1]-s[i]>=0;3.s[j]-s[i-1]>=x;即1.s[i+1]<=s[i]+1;2.s[i]<=s[i+1];3.s[i-1]<=s[j]-x;我们发现可以将s[i]看作是n到i的距离,上面的三条式

2016-07-31 20:48:27 439

原创 【bzoj1031】【JSOI2007】【字符加密】【Cipher】【字符串】【后缀数组】

题目大意给出一个字符串,将他的循环同构排序,从小到大输出最后一个字符。解题思路显然sa,按rank输出即可。code#include<set>#include<cmath>#include<cstdio>#include<cstring>#include<algorithm>#define LL long long#define fo(i,j,k) for(int i=j;i<=k;i+

2016-07-20 22:11:37 296

原创 【jzoj4668】【腐败】【数论】【快速乘】

题目大意给出一个序列,求两两gcd的积。解题思路可以发现每个质数对答案贡献是独立的,分解质因数后发现数是无序的,排序后可以用前缀和求答案,排序可以用计数排序,快速幂可以放在分解质因数的循环里,还有模数较大,要用快速乘,类似快速幂。code#include<set>#include<cmath>#include<cstdio>#include<cstring>#include<algorith

2016-07-20 22:08:12 428

原创 【jzoj4669】【弄提纲】【kmp】

题目大意给出一个字符串,询问分别以x,y结尾的子串是原串的前缀有多少个,最长串有多长,一对组合以x,y结尾的子串必须一样。解题思路可以使用kmp,可以发现就是求fail树上的lca。code#include<set>#include<cmath>#include<cstdio>#include<cstring>#include<algorithm>#define LL long long

2016-07-20 21:55:34 322

原创 【Codeforces662B】【Graph Coloring】

题目大意给出一个图,边有两种颜色,可以改变一个点相连边的颜色,都取反,求最少改变多少个点使得全部边颜色一样。解题思路可以发现一个点最多改变一次,由于只有两种颜色,一条边只和两个点有关,知道一个点必可求出另一个点的状态,可以暴力求解,具体怎么暴力可以看代码,注意可能有多个连通块。code#include<set>#include<cmath>#include<cstdio>#include<cs

2016-07-20 21:46:10 619

原创 【GDOI2004】【可怜的绵羊】

题目大意给出一个凸包,让你求一个不包含一些点的新凸包,用原来凸包上的点。解题思路新的凸包可以割成若干个三角形,三角形内部一定不包含那些点,所以外部的点一定等于总点数。我们可以求出一条线一边所含点的个数,可是这有交集。考虑到新凸包上的点是原凸包的子集,交集一定在原凸包外。我们就可以n^2预处理出那些点在凸包内,n^3处理处一条线一边的点数,再n^3DP。枚举起点,f[i]表示到i的最优答案,枚举j下一

2016-07-20 21:28:22 415

原创 【Codeforces666B】【World Tour】【最短路】

题目大意给出一幅有向图,求出四个不同的点,两点之间走最短路,用最长的路走完四个点。解题思路跑n遍单源最短路,保存每个点最远的三个前驱,最远的三个后继。枚举中间两个点,再枚举它们的前驱和后继,判一下重,取最优答案。code#include<set>#include<cmath>#include<cstdio>#include<cstring>#include<algorithm>#defin

2016-07-20 21:08:37 370

原创 【jzoj4624】【字符串匹配】【kmp】

题目大意求一个串在另一个串复制n遍的串出现几遍。题解显然将两个串做kmp,有很多重复,可以先把第二个串复制到比第一个串长,计算结果,增长一个串,计算结果,计算有多少个增长串,得到最终结果。code#include<set>#include<cmath>#include<cstdio>#include<cstring>#include<algorithm>#define LL long lo

2016-07-14 19:15:08 328

原创 【jzoj4622】【亚瑟王之宫】

题目大意在一个矩阵中有一些点,要分成两半到两个点集合,求走的路的和最少的两个集合点。题解可以用bfs求出两点之间的花费,枚举两个集合点,先让他们都到一个点集合,按改变集合点花费排序,安排一般的点转移即可。code#include<set>#include<cmath>#include<cstdio>#include<cstring>#include<algorithm>#define fo

2016-07-14 19:04:50 329

原创 【bzoj4554】【Tjoi2016】【Heoi2016】【游戏】【二分图匹配】

题目大意给出一个图,有一些石头不可炸,一些软石头可炸但不可放炸弹,一些空地可放炸弹。用最多炸弹使两个炸弹互相不可炸。题解对于横竖连通的块标号,可放炸弹的点横竖相连,表示可以放炸弹,做二分图最大匹配即可。code#include<set>#include<cmath>#include<cstdio>#include<cstring>#include<algorithm>#define LL

2016-07-12 19:25:37 445

原创 【bzoj4552】【Tjoi2016】【Heoi2016】【排序】【二分答案】【线段树】

题目大意给出长度为n的序列,有m个排序操作,对一个区间升序或降序排序,求操作完某一位的值。题解一个非常不显然的性质,本题满足二分性质。二分一个答案,如果原数大于或等于答案就标记为1,不然标记为0。排序完可以知道目标位到底是大于等于还是小于答案,适当调整答案即可。code#include<set>#include<cmath>#include<cstdio>#include<cstring>#

2016-07-12 16:31:12 488

原创 【Codeforces 682D】【String】

题目大意有两种字符串S,T。长度分别为n,m。现在需要在S里面有序地选出k个子串,且在T中出现的顺序与这k个子串的顺序相同。问这k个子串最大的长度和题解lcs的变种,设f[i][j][k][0,1]s匹配到i,t匹配到j,分成k块,是否需要新开块。按照s[i]与t[j]比较结果转移,i,j都加1,f也加1,看要不要开块。i,j分别加1,f不变,打一个开块的标记。详细看代码。code#include<

2016-07-12 15:32:53 438

原创 【Codeforces 609E】【Stree】【最小生成树】

题目大意给出n个点,m条有权边,现对于每一条边,你需要回答出包含这条边的最小生成树的总边权值。题解一个显然的结论,无论怎么样,生成树与最小生成树不同的边最多为一条。求出最小生成树,枚举加入哪条边,用倍增算法求出所加边在树上路径边权的最大值,更改答案即可。code#include<set>#include<cmath>#include<cstdio>#include<cstring>#incl

2016-07-12 15:24:27 541

原创 【jzoj4597】【现世斩】【平衡树】【set】

题目大意给出有权无向连通图,有一次机会使与一个点相连的边的权变为一,求最短路。题解显然的想法是学习gdoi2016的一题,分层单源最短路,设f[i][0,2],表示没有用机会,在前驱用机会,没有机会,dijset优化就可以了。还有一种方法,只有一次机会,影响很小,起点终点都做一次最短路,枚举在哪里用,扫一下边,每条边只被扫2次,复杂度有保证。code#include<set>#include<cm

2016-07-12 12:03:32 282

原创 【jzoj4598】【准备食物】【字典树】

题目大意给出长度为n的序列,询问[1,r]的后缀区间[i,r] (1<=i,i<=r)异或和大于等于k的区间的个数。题解异或可逆,[i,r]等于[1,i-1]异或[1,r],设前缀和s,求满足s[i-1]^s[r]>=k,由于不可移项,必须考虑s[r]和k的影响。考虑建立Trie在上面查询答案。考虑当先选0还是1,选了一个异或后比k大则所有答案可以贡献,当前相等则继续比较,小于则放弃。详细见code

2016-07-12 11:54:04 418

原创 【jzoj4586】【Ned的难题】【单调栈】

题目大意给出一个序列,求所有连续子序列gdc和。题解可以发现,所有质因子对答案的贡献都是独立的。考虑每个数所含当前质因子的个数,可以发现一段区间的gcd等于取min。可以用单调栈维护,保证单调不下降,栈里的每个位所代表的区间到当前区间可以形成区间,它们都可以贡献栈里所代表的区间的高度个当前质因子的答案,说不太清楚看一下code。这样一个一个搞就可以了。观察一下本题的特殊性,扩大区间一定不会让gcd变

2016-07-12 11:38:02 391

原创 【bzoj4551】【Tjoi2016】【Heoi2016】【树】【线段树】

题目大意给出一棵有根树,有很多操作,给一个点打标记,查询到跟路上最近那个点打了标记。题解我的做法是先搞出dfs序,打标记只会影响子树,线段树区间修改就行了,查询就是单点查询。注意空点不下传标记,不然空间不够。更好的做法是离线用并查集维护。打标记相当于把一棵子树从整棵树中断开,倒着做,先断开子树。查询就是getfather,答案就是father的father。修改就是合并子树,并查集连一下,应为修改可

2016-07-12 11:22:24 405

原创 【bzoj4553】【Tjoi2016】【Heoi2016】【序列】【树套树】【线段树套线段树】

题目大意给出长度为n的序列a,有m次变化。每次变化把a[x]改成b[x],一个位可以多次修改,变化相对独立。选出最长字串,在m次变化与原串中都是不下降的。题解通过分析可知,设f[i]为前i位中一定选了i所形成的最长不下降字串的长度,f[i]可以转移到f[j] (j>i)当且仅当满足三个条件。a[i]<=a[j]。max(b[i])<=a[j]。a[i]<=min(b[j])。把a[i]也当作b[i]

2016-07-12 11:11:17 440

原创 【bzoj1143】【CTSC2008】【祭祀】【river】

题目大意给出一幅有向图,选取一些点,这些点不能从一个点到达另一个点,求最多能选多少个点。题解其实我们用floyd传递闭包,知道哪些点不能同时取。显然就是求最大独立集,对偶问题是最小点覆盖,等价于二分图最大匹配,建个图后跑一遍网络流就可以了。最大独立集对偶问题是最小点覆盖#code#include#include#include#includ

2016-07-05 20:49:09 416

原创 【bzoj1051】【HAOI2006】【受欢迎的牛】【强连通分量】

题目大意给出一幅有向图,求所有点都能到达它的点的个数。题解tarjan缩点,看是否只有一个连通块,输出出度为零的连通块的大小。其实我们不一定要真的缩点,求完强连通分量后发现这个强连通分量有出边就可以排除,最后看可行数是否大于一,并同时记录连通块的大小,判断后输出即可。code#include<set>#include<cmath>#include<cstdio>#include<cstring

2016-07-04 08:22:24 409

原创 【bzoj3224】【Tyvj1728】【普通平衡树】【splay】

题目大意要求写出一种数据结构,支持1. 插入x数2. 删除x数(若有多个相同的数,因只删除一个)3. 查询x数的排名(若有多个相同的数,因输出最小的排名)4. 查询排名为x的数5. 求x的前驱(前驱定义为小于x,且最大的数)6. 求x的后继(后继定义为大于x,且最小的数)题解使用任意一种平衡树即可,我使用的是splay。千万注意3,5,6询问中括号的要求。要求你在查找的时候用一些特殊的技巧,例如fi

2016-07-03 08:57:19 587

空空如也

空空如也

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

TA关注的人

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