自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

转载 [NOIP2014D2]

T1Problem洛谷Solution枚举那个点的位置,再O(n)扫一遍求出覆盖的公共场合的数量。。。所以时间复杂度为O(128 * 128 * n)Code#include<cmath>#include<cstdio>#include<cstring>#include<iostream>#include<alg...

2017-11-04 23:18:00 153

转载 [NOIP2014D1]

T1Problem洛谷Solution一道非常裸的模拟题。直接枚举每次猜拳就可以了。Code#include<cmath>#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>using namespace std;#d...

2017-11-04 23:15:00 141

转载 [NOIP2013D2]

T1Problem洛谷Solution这是线性扫描题吧。就从1 ~ n 循环,若比起面高,则 ans += h[i] - h[i - 1]。Code#include<cmath>#include<cstdio>#include<cstring>#include<iostream>#include<algorith...

2017-11-04 23:09:00 151

转载 [NOIP2013D1]

T1Problem洛谷Solution感觉我写的也不是正解。。。我是先找出每个循环节的长度l。。。然后用快速幂求出10 ^ k % l的值。。Code#include<cmath>#include<cstdio>#include<cstring>#include<iostream>#include<algorit...

2017-11-04 23:05:00 120

转载 [Codeforces375E]Red and Black Tree

Problem给定一棵有边权的树。树上每个点是黑或白的。黑白点能两两交换。求符合任意一个白点到最近黑点的距离小于等于x时,黑白点交换次数最少为多少。Solution明显是一题树形DP。我们先跑一边Floyd。F[i][j][k]表示以i为根的子树中,连向结点j,子树中已经确定有k个是黑点所需要的最小交换次数。G[i][k]表示以i为根的子树,已经确定有k个是黑点所需要的最小交...

2017-11-04 22:54:00 245

转载 [Codeforces178F2]Representative Sampling

Problem给定n个字符串Si,任意选出k个字符串Ai,使得其中任意两个字符串lcp之和最大。Solution建一棵trie树,枚举每一个节点对答案的贡献,树形dp,时间复杂度像是O(N^3)由于每个点对只在自己LCA的时候枚举到贡献,所以是O(N^2)Notice这道题分析时间复杂度十分重要Code#include<cmath>#include<c...

2017-11-04 22:15:00 223

转载 [BZOJ1596]电话网络

Problem给你一棵树,可以在每个点上选择造塔或不造,每座塔可以覆盖这个节点和相邻节点,问覆盖整棵树的最小塔数。Solution看到这道题的第一眼,我就觉得是一题贪心题,但看见出题的时候分类在树形DP,于是就没仔细想贪心。树形DP:f[u][0]表示u被其儿子覆盖,f[u][1]表示u上有塔,f[u][2]表示u被其父亲覆盖,转移显然贪心:我们dfs到叶子节点时,尽量贪心覆盖...

2017-11-04 22:04:00 147

转载 [BZOJ3167]Sao

Problem给你n个任务,n-1个关系,ab代表a在b前或者a在b后问你有几种拓扑序Solutionf[i][j]表示第i个节点前有j个节点的方案数设当前节点为x,儿子节点为s,若x依赖于s,那么若s依赖于x,那么Notice要预处理出C数组Code#include<cmath>#include<cstdio>#include<...

2017-11-01 13:57:00 130

转载 [Codeforces543D]Road Improvement

Problem刚开始每条边都是坏的,现在要选取一个点使得其他点到这个点的路径上最多只有一条坏路,问至少要修好多少条边Solution如果以1为根,那么是个简单的树形DP设根从u转移到v,那么u的父亲会变成v(f[u]需要删除v的贡献),u的原来的父亲会变成u的孩子(f[u]需要加上原父亲的贡献),v会成为u的父亲(f[v]加上u的贡献)。这样从上向下转移即可。Notice...

2017-11-01 09:40:00 134

转载 [CodeChef-CAPTCITI]Snakes capturing the Mongoose Cities

Problem每个点都可以选择降落士兵,然后当一个点的子节点被攻占的数量超过读入中的限制后,这个城市也被占领。每个点降落士兵都有一定的代价,问把这一个图全部攻占的最小代价。Solution这显然和儿子有关还与父亲有关我们假设f[x]表示x在父亲之前被攻占,g[x]表示x再父亲之后被攻占显然有f[x]>=g[x]在x放兵时,f[x]=g[x]=p[x]+∑gv当x不放...

2017-10-30 20:42:00 92

转载 [BZOJ2427]软件安装

Problem每个软件都要安装某些软件才能安装,而且都有体积和价值,求安装的价值最大值Solution对于每个环,我们可以知道必须全部一起取或者不取,因此我们先用Tarjan缩点然后我们用一个树形DP就可以解决了Notice注意这颗树是如果一个节点没取,后面就都不能取了Code#include<cmath>#include<stack>#inc...

2017-10-30 20:17:00 91

转载 [Codeforces771E]Bear and Rectangle Strips

Problem给你一个2*n的矩阵,要求你用补充叠的矩阵去框,要求每个矩阵框中的数之和为0,问最多可以用几个矩阵。Solution首先预处理出一个点到离它最近的一段和为0的区间的左端点然后到这往前用记忆化搜索的方式DP就可以了Notice注意要记忆化Code#include<map>#include<cmath>#include<cstd...

2017-10-30 20:02:00 348

转载 [HDU6146]Pokémon GO

Problem有一个2n的方格矩阵在一个格子上可以往旁边8个方向走(如果有格子),求有多少方案把2n走完Solution我们用Fi表示从一个角出发走遍所有格子回到这一列另外一点的方案数显然,F1 = 1,Fn = 2 * Fn-1 = 2^(n-1)我们再用Gi表示从一个角出发,走遍所有格子的方案数那么Gi = Fi + 2 * Gi-1 + 4 * Gi-2所以四个...

2017-10-30 16:10:00 157

转载 [BZOJ1406]密码箱

Problem给你1个数n,求出0 ≤ x < n,并且x ^ 2 % n = 1Solutionx ^ 2 - 1 = kn,(x - 1) * (x + 1) = kn所以枚举n的约束,是x-1或者x+1,然后看是否符合条件Notice注意要排序去重Code#include<set>#include<cmath>#include&lt...

2017-10-26 16:14:00 111

转载 [BZOJ1045]糖果传递

Problem有n个小朋友坐成一圈,每人有ai个糖果。每人只能给左右两人传递糖果。每人每次传递一个糖果代价为1。求使每个人糖果数相同的最小代价。Solution我们假设第i为同学给了第i+1为同学Xi个糖果(n的后一位为1)所以ans = X1 + X2 + X3 + ······ + Xn我们可以列出方程:A1+Xn-X1=average,A2+X1-X2=average,...

2017-10-26 16:08:00 124

转载 [Codeforces613E]Puzzle Lover

Problem给你2*n的格子,每个格子有一个字母,从任意一点出发,不重复的经过上下左右,生成要求的字符串。问有几种不同的走法。Solution分三段,左U型、中间、右U型。分别枚举左边和右边的长度,中间一段用Dp来解决。Dp[i][j][k],i,j,k表示当前在(i,j)位置,枚举到第k个字符。Notice特殊情况下有重复。Code#include<cmat...

2017-10-26 10:29:00 160

转载 [Codeforces778E]Selling Numbers

Problem给一个由问号和数字组成的数字串A(问号表示任一数字)。再给定n个数字Bi,和0~9的数字的价值。F(x)表示x各个位数上的价值和。问A为何值时,sum(F(Bi+A))的值最大为多少。1 ≤ A,Bi < 101000 没有前导零Solutiondp[i][j]表示第i位时有j个数发生进位时的最大值。然后我们对有没有进位的情况进行分类讨论Notice...

2017-10-26 07:56:00 256

转载 [Codeforces477D]Dreamoon and Binary

Problem给定一个字符串数的二进制表示(不含前导0)s(长度不超过5000),对于一个数n(初值为0),可以进行以下两种操作:1.将n的二进制表示(无前导0)写到已经写的串的后面.2.n加上1.问组成s的不同方法数以及最少用多少次操作能组成串s.Solution对于第一问:用f[i][j]表示最后一个数是j+1到i的方案数,g[i][j]表示操作1的个数所以f[i]...

2017-10-19 20:56:00 146

转载 [Codeforces440D]Berland Federalization

Problem给你一棵树,最少删掉哪些边,能使得余下的至少有1个大小刚好为k的残树。1 ≤ k ≤ n ≤ 400Solution用f[i][j]表示以i为根有j个节点的最少删边数量因为此题要输出删除的边v[i][j]表示以i为根删掉j个节点需要删去的边对应的(点u,该u点还需要删去的边数量)Notice因为要输出方案,所以比较复杂Code#include<cm...

2017-10-18 23:35:00 228

转载 [Codeforces441E]Valera and Number

Problem给定一个数x,有p%的概率乘2,有1-p%的概率加1,问操作k次,其二进制数下末尾零的个数的期望。Solution每次操作只会影响到最后的8位我们用dp[i][j]表示i个操作后,后面的操作还需要加j对于+1的操作:dp[i][j-1]+=dp[i-1][j](1-p)对于2的操作:dp[i][j*2]+=(dp[i-1][j]+1)*pNotice需要预处...

2017-10-18 20:46:00 143

转载 [Codeforces708E]Student's Camp

Problem一个n*m块砖的建筑,一共k天,每天风从两边吹,吹掉砖的概率为p,反之为1-p,求最终建筑没有倒塌的可能性(上层与下层有交集且每一层都有砖)Solution首先,我们可以预处理出pl[]和pr[]数组,表示k天后左右两边风吹到的位置的可能性然后我们可以枚举层数,当前这一层的左右端点和上一层的左右端点,如果有公共部分则转移这样的时间复杂度是O(n^5),显然我们可以...

2017-10-18 10:51:00 128

转载 [Codeforces797F]Mice and Holes

Problemn个老鼠,m个洞,告诉你他们的一维坐标和m个洞的容量限制,问最小总距离。Solution用dp[i][j]表示前i个洞,进了前j个老鼠的最小代价dp[i][j]=min(dp[i-1][k]+Sum[j]-Sum[k])(其中Sum[x]表示前x个老鼠到当前第i个洞的距离总和)因此我们用单调队列维护dp[i-1][k]-Sum[k]Notice要开滚动数组,不...

2017-10-17 15:27:00 166

转载 [Codeforces721E]Road to Home

Problem有一条长为l的公路(可看为数轴),n盏路灯,每盏路灯有照射区间且互不重叠。有个人要走过这条公路,他只敢在路灯照射的地方唱歌,固定走p唱完一首歌,歌曲必须连续唱否则就要至少走t才能继续唱。问最多能唱多少首歌Solution贪心:对于一段照射区间要么不唱歌要么能唱多久唱多久提早结束,后面提早开始,和延迟结束,准时开始效果是一样的DP,f[i]表示到第 i 段为止最...

2017-10-17 15:15:00 185

转载 [Codeforces513E2]Subarray Cuts

Problem给定一个长度为n的数字串,从中选取k个不重叠的子串(可以少选),将每个串求和si求max|s1 - s2| + |s2 - s3| + ... + |sk - 1 - sk|(n <= 30000, k <= min(n, 200))Solution绝对值后的和,只和峰值和谷值的那些值有关(所以我们可以贪心峰值和谷值尽量多)用f[i][j][k]表示前...

2017-10-17 14:38:00 149

转载 [CodeForces332E]Binary Key

Problem题目给出一个加密前的字符串长度为p和加密后的字符串长度为s,让你求一个长度为K字典序最小的密钥。密钥是循环的,第i位为1表示加密前的第i为是有用的否则是没用的。Solution首先枚举秘钥中一共有x个1(1<=x<=min(s,k))一个秘钥有x个1,也就是能确定加密串每个位置所对应秘钥的第几次循环。并且贪心从后往前找每一个位置即可。Notice...

2017-10-17 14:03:00 239

转载 [HDU4585]Shaolin

Problem问你一个数的前驱和后继SolutionTreap模板题Notice注意输出那个人的编号Code#include<cmath>#include<cstdio>#include<cstdlib>#include<cstring>#include<iostream>#include<algo...

2017-10-10 00:40:00 147

转载 [HDU3726]Graph and Queries

Problem给你一张图,点的权值,边和几个操作:D x: 删除第x条边Q x y: 询问包含x的联通块中权值第y大的权值C x y: 将x这个点的权值改为ySolution一看就要离线处理,把所有操作都倒过来然后删除操作变为加边操作Notice记得: 是改完以后再把点一个一个加入Treap中!!Code非旋转Treap#pragma GCC optimize(2...

2017-10-10 00:37:00 178

转载 [BZOJ3224]普通平衡树

Problem您需要写一种数据结构(可参考题目标题),来维护一些数,其中需要提供以下操作:插入x数删除x数(若有多个相同的数,因只删除一个)查询x数的排名(若有多个相同的数,因输出最小的排名)查询排名为x的数求x的前驱(前驱定义为小于x,且最大的数)求x的后继(后继定义为大于x,且最小的数)SolutionTreap模板题:Treap为一种节点的优先级满足堆性质的...

2017-10-10 00:13:00 87

转载 [BZOJ3173]最长上升子序列

Problem给你n个数A1~An,每次将i插入第Ai位后,最后输出每次插入后这个数列的最长上升子序列Solution这道题非常的妙。首先如果新加入的这个数构成了最长上升子序列,由于在它插入之前都是比它小的数,所以就是最后这个序列这个位置的最长上升子序列。如果不是最长的,只需要和前面那个数插入构成的最长上升子序列长度取max。构造最后的序列长度可以用Treap维护。Notic...

2017-10-10 00:04:00 149

转载 [POJ2985]The k-th Largest Group

Problem刚开始,每个数一个块。有两个操作:0 x y 合并x,y所在的块1 x 查询第x大的块Solution用并查集合并时,把原来的大小删去,加上两个块的大小和。Notice非旋转Treap一直错。。。Code旋转Treap(非旋转Treap总是TLE...)#include<cmath>#include<cstdio>#inclu...

2017-10-09 23:49:00 147

转载 [POJ2761]Feed the dogs

Problem查询区间第k大,但保证区间不互相包含(可以相交)Solution只需要对每个区间左端点进行排序,那它们的右端点必定单调递增,不然会出现区间包含的情况。所以我们暴力对下一个区间加上这个区间没有的点,删去下个区间没有的点。因为每个点最多被加入,删除1次,所以时间复杂度为O(nlogn)Notice当相邻两段区间不相交时,那么我们要先加入点,在删去点。Code非...

2017-10-09 23:41:00 127

转载 [POJ1442]Black Box

Problem有添加操作和询问操作,每次询问输出第i大的数。SolutionTreap标准模板题Notice非旋转的真心难打。Code非旋转Treap#include<cmath>#include<cstdio>#include<cstring>#include<iostream>#include<algori...

2017-10-09 23:29:00 112

转载 [HDU3487]Play with Chain

Problem有n个数,为1~n。有两种操作:Cut x y z: 把x到y的区间切割下来后,放到改变后的序列的z位后Flip x y: 把x到y的区间翻转Solutionsplay模板题Notice注意0Code#include<cmath>#include<cstdio>#include<cstring>#include&l...

2017-10-06 13:09:00 156

转载 [HDU3436]Queue-jumpers

Problem有一个数列,从1排列到n,然后有Q个操作Top x:将第x个数放到序列的最前面Query x:询问x这个数在第几位Rank x:询问第x位数是什么Solutionn非常的大,需要离散化:读入的Query操作和Top操作需要离散化然后每当处理一个数时,用二分计算出离散化后的结果对于Top操作,先把那个数删掉,然后加在splay的最左边。Notice离散...

2017-10-06 12:54:00 133

转载 [HDU2475]Box

Problem先告诉你每个盒子在哪个盒子的内部接下来有M个操作:可以把一个盒子及里面的盒子移到另外一个盒子的内部或者询问你某个盒子最外面的盒子是哪个Solution首先可以建成一个图,然后先dfs一遍,用dfs序加入多棵splay然后移动操作就是区间切割,询问操作就是这棵splay中最小的值Notice注意,因为有多棵splay,用0这个虚点连接起来。所以细节非常难处理...

2017-10-06 12:44:00 148

转载 [HDU1890]RoboticSort

Problem每次找到最小值,然后把它和它前面的数翻转,然后找第二小数······然后输出这些数的下标。Solution用splay维护,每次找到最小值,然后翻转前面区间。Notice细节操作巨烦无比。Code#include<cmath>#include<cstdio>#include<cstring>#include<i...

2017-10-05 12:44:00 123

转载 [BZOJ1500]维修数列

ProblemSolutionSplay模板题要记录从左往右的最大和,从右往左的最大和,整个区间内的最大和Notice注意0的大坑。Code#include<cmath>#include<queue>#include<cstdio>#include<cstring>#include<iostream>#...

2017-10-05 12:32:00 113

转载 [POJ3580]SuperMemo

ProblemADD x y D: x到y每个数加上DREVERSE x y: 翻转x到y这个区间REVOLVE x y T: x到y区间往后旋转T位INSERT x P: 在第x个数后插入PDELETE x: 删除第x个数MIN x y: 求x到y的区间最小值Solutionsplay模板题Notice注意0的大坑。Code#include<cmath&g...

2017-10-05 12:29:00 100

转载 [POJ3481]Double Queue

Problem0 结束操作1 K P 将一个数K以优先级P加入2 取出优先级最高的那个数3 取出优先级最低的那个数SolutionSplay模板题Notice是输出数而不是输出优先级。Code#include<cmath>#include<cstdio>#include<cstring>#include<iostream...

2017-10-05 12:24:00 127

转载 [BZOJ1269]文本编辑器editor

Problem有n个操作Solutionsplay模板题,用splay维护下标。Notice需要把l的前一个位置旋转到根,r的后一个位置旋转到根的右节点。所以特别要注意0的大坑。Code#include<cmath>#include<cstdio>#include<cstring>#include<iostream>...

2017-09-30 15:38:00 134

空空如也

空空如也

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

TA关注的人

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