自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

L_0_Forever_LF的专栏

曾是一个OIer

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

原创 个人简介

GD,OIer

2017-09-22 11:16:17 1177

原创 BZOJ4382: [POI2015]Podział naszyjnika

维护最小差的时候没更新….随便画一个环手玩,发现对于每种颜色,两个分隔点一定是在这种颜色某两个点中间,我们用每种颜色对这些点标号,每个点有k个标号,可以发现如果两个分割点标号相同,他们就能作为一组答案,hash就行了(貌似单hash会被卡code:#include<set>#include<map>#include<deque>#include<queue>#include<stack>#

2017-09-30 09:04:18 492

原创 BZOJ4379: [POI2015]Modernizacja autostrady

画个图意会一下,对于每条边,砍掉它后再把这两棵树接起来,新树的最小直径是两棵树最大直径/2(上取整)的和+1,最大值是直径的和 所以对于每条边都求出它分开的两棵树的直径,找到最小最大值后随便搜一下就行了 emmmmmmmmmmmmmmm dp的过程细节挺爆炸的code:#include<set>#include<map>#include<deque>#include<queue>#in

2017-09-30 07:30:44 452

原创 BZOJ4378: [POI2015]Logistyka

题意看错以为有坐标的限制….赋值0的情况没处理好对于一个询问,每次选c个,拿s次 如果序列中某个元素>=s,每次一定要拿它,设这样的有k个,对于剩下的< s的元素,易证当序列中剩余的数之和>=(c-k)*s时有解,就是个二维偏序问题,离散化+树状数组code:#include<set>#include<map>#include<deque>#include<queue>#include<s

2017-09-29 11:23:35 311

原创 BZOJ4377: [POI2015]Kurs szybkiego czytania

学到了求区间交并的姿势..注意到a,n互质,所以对于所有的0<=i< n,ai+b mod n互不相同,一一对应 我们令s=ai+b,问大串包含多少个小串,就是问有多少个s使得s,s+a,s+2a,s+3a…..满足限制 于是我们可以列出若干个形如l<=s< r(Mod n)的限制 这些不等式解集的交就是能取的s的数量,减掉尾部的m-1个i就是答案(后缀不足m不能作为开头) 卡常卡了好久qw

2017-09-29 09:42:38 436

原创 BZOJ3750: [POI2015]Pieczęć

分析一波复杂度,发现暴力是O(nm)的code:#include<set>#include<map>#include<deque>#include<queue>#include<stack>#include<cmath>#include<ctime>#include<bitset>#include<string>#include<vector>#include<cstdio>#

2017-09-29 08:47:38 342

原创 BZOJ3749: [POI2015]Łasuchy

这题测得我心累… 写了个spj拿着n组数据一组一组手测其实我都不知道我这样做是不是对的..反正A了不管了…我们枚举第一个人选哪个,然后f[i][j][k]表示处理完前i个,第i个人选的情况是j(0代表左边,1代表右边),为了使第i个人合法,第i+1个人应该选k(0代表必须左,1代表必须右,2代表两个都行)这种情况是否可行 用一个pre记录转移,dp完前n-1个后,对于一个合法的f[n-1][j]

2017-09-29 08:02:10 439

原创 BZOJ4347: [POI2016]Nim z utrudnieniem

mod下答案为负数时没加上mod…去完石子就是个nim游戏,所有石子异或和为0则先手必败 设所有石子异或和为s 就是问取kd堆石子,有多少种情况使得取了的石子异或和为s 令f[i][j][k]表示处理完前i堆石子,取了的堆数在mod d下为j,取了的石子异或和为k的方案数 直接转移O(ndmaxa) 但可以发现a[i]和小于a[i]的数异或和不会超过2*a[i] 所以我们将石子排序后,复

2017-09-29 07:58:37 456

原创 BZOJ4346: [POI2016]Nadajniki

一开始状态定错后来细节打错狂WA不止..我们考虑一个位置如果安装发射器,会影响哪些位置 他可以直接覆盖父边和孩子边,可以对相隔一层的边贡献1的覆盖 且如果是对某个孩子相隔一层的边,他的其他孩子对其无法产生贡献 又注意到一个位置至多放2个发射器所以我们令g[i]表示i放1个发射器子树内的最小值,g2[i]表示i放两个,f[i][j][k]表示i不放发射器,i的孩子里有放了j个发射器,需要有k个发

2017-09-29 07:47:14 506

原创 BZOJ4345: [POI2016]Korale

感觉..这道题好像和多校某题很像,当时那题我没做结果现在又不会做了..现将珠子按价值排序 我们用一个二元组(x,i)代表当前选的珠子和为x,最后一个珠子是第i个 它可以转移到(x-a[i]+a[i+1],i+1),(x+a[i+1],i+1),且这种转移方式能不重不漏的覆盖所有的情况 又因为每次转移,新的状态和一定不比原来小,所以我们从(a[1],1)开始转移k-1次一定能得到第k小的价值,复

2017-09-29 07:29:05 497

原创 BZOJ1023: [SHOI2008]cactus仙人掌图

建出圆方树 像普通找直径那样dp一下 环上的dp要维护一个单调队列code:#include<set>#include<map>#include<deque>#include<queue>#include<stack>#include<cmath>#include<ctime>#include<bitset>#include<string>#include<vector>#i

2017-09-27 22:16:38 412

原创 BZOJ4316: 小C的独立集

建出圆方树在上面做树形dp f[i][0/1]表示点i是否选,i的子树内的最大独立集 g[i][0/1][0/1]表示i这个环(不包括环的父亲),两端是否选,最大独立集code:#include<set>#include<map>#include<deque>#include<queue>#include<stack>#include<cmath>#include<ctime>#i

2017-09-27 22:15:27 358

原创 BZOJ2125: 最短路

建出圆方树 对于询问的两个点,倍增找他们的LCA 若是圆点,直接得到答案 若是方点,两边的点先跳到这个环上,然后找环上的最近距离code:#include<set>#include<map>#include<deque>#include<queue>#include<stack>#include<cmath>#include<ctime>#include<bitset>#inc

2017-09-27 22:13:25 352

原创 仙人掌学习笔记

今天大概学了一些仙人掌 emmmmmmmmmmm 感觉这东西思想不难,就是很能码,可能因为我码风比较长仙人掌图指的是一个无向的连通图,其中任意一条边至多在一个环中 于是树其实就是一个不含环的,特殊的仙人掌图,仙人掌图就是一个特殊的无向图 由于其特殊性质,许多在无向图上很棘手的,甚至是npc的问题在仙人掌图上就变得可做了通常我们会用一个叫圆方树的东西处理关于仙人掌的问题 原图中每个环都是一个

2017-09-27 22:11:16 1704

原创 BZOJ4726: [POI2017]Sabota?

一开始看这题..二分好像很兹瓷啊,虽然n有50w,但是给了20s啊,不虚啊然后T了….emmmmmmmmmmmm 所以还是要dp 经过观察可以发现,对于最坏的情况一定是叶子开始叛变,且如果一个人没有被他的下属们策反,他的祖先们一定也不会叛变,所以最坏情况下,叛变的点一定是一棵完整的子树 所以我们令f[i]表示以i为根的子树不叛变的情况下最小的x 得 f[i]=max[min(f[j],

2017-09-27 09:21:54 456 1

原创 BZOJ4727: [POI2017]Turysta

第一次听说竞赛图这种东西..竞赛图内一定存在哈密顿路径,将图缩点后,每个强连通分量内一定存在哈密顿回路,我们可以构造出哈密顿路径后构造哈密顿回路,两个强连通分量间,因为是竞赛图,又因为不在一个联通分量,所以其中一个里的每个点一定向另一个里的所有点都有边,然后可以在DAG上dp一下最长路径详细的细节看这里吧我不想写了…(我也是对着这个膜的code:#include<set>#include<map>

2017-09-27 09:11:19 360

原创 BZOJ4725: [POI2017]Reprezentacje ró?nicowe

这题远没有它看起来那么可怕.. 容易发现当n>70时a[n]就已远大于1e9,此时和a[n]有关的差只有a[n]-a[n-1]在n为偶数的情况下在1e9之内 于是打个70的表,如果当前的x在打表时没出现,就二分找已经出现的差有多少个#include<set>#include<map>#include<deque>#include<queue>#include<stack>#includ

2017-09-26 16:52:26 459

原创 BZOJ4724: [POI2017]Podzielno

定理:若一个数被B-1整除,则它在B进制下各个位置的和一定能被B-1整除 这里证的挺清楚的 因为要求最大,肯定位数越多越大,注意到每个数的数量>=1,所以若这些数的和不是B-1的倍数,就去掉1个余数,然后弄个前缀和,每个询问二分一下就行了code:#include<set>#include<map>#include<deque>#include<queue>#include<stack>

2017-09-26 16:38:06 375

原创 BZOJ4723: [POI2017]Flappy Bird

每个时间点,鸟一定会向上或下飞一格,能飞到的上下界都变化1,且奇偶性一定改变,因此能飞到的地方是上下界内符合奇偶性的高度 扫描线扫过去,可以O(1)算得从last到x上下界的变化,和当前飞过的区间取个交(注意奇偶性),对于最小次数,高度确定,点击次数就确定,取下界code:#include<set>#include<map>#include<deque>#include<queue>#in

2017-09-26 16:31:57 318

原创 BZOJ1111: [POI2007]四进制的天平Wag

我们先把n转4进制 然后这题有几个性质: 使用的砝码最大幂次不超过n的最高位+1 每一位如果接受高位的退位,接受的次数不超过1次然后就可以根据这个dp了 从低位往高位dp f[i]表示第i位不接受高位的退位,1~i最少需要的砝码数 g[i]表示第i位接受高位的退位,1~i最少需要的砝码数 得 f[i]=min(f[i−1]+a[i],g[i−1]+a[i]+1)f[i]=min(f[

2017-09-26 16:28:00 385

原创 BZOJ1110: [POI2007]砝码Odw

这题有个很特别的性质就是“任何两个砝码都有一个特征,他们的中总有一个的重量是另外一个的整数倍,当然他们也可能相等。” 那么,我们将所有砝码从小到大排之后(假设没有重复的),我们将他们转成一个第一位是a[1]进制,第二位是a[2]进制,第三位是a[3]进制….的数,那么每个砝码的数只有一位是1 然后再把容器也转成这样的数,每一位上加起来(不能进位能退位),二分答案判一下code:#include<

2017-09-26 07:54:33 250

原创 BZOJ1109: [POI2007]堆积木Klo

一开始状态就定的不一样…一直想着优化转移然后越走越远..%%%Seter 我们令f[i]表示第i个积木的积木回到自己的位置,前i个积木最多有多少个归位 枚举前一个归位的积木,可以得到 f[i]=f[j]+1(j<i,a[j]<a[i],i−a[i]>=j−a[j])f[i]=f[j]+1(j<i,a[j]<a[i],i-a[i]>=j-a[j]) 发现像是个三维偏序上的LIS? 但其实不用

2017-09-26 07:49:24 481

原创 BZOJ1107: [POI2007]驾驶考试egz

这题做了好久,性质很早就推出来了,一直不敢打…感觉总有什么地方不对劲… 事实上并没有…只是我线段树都写挂…有n条向上的街道,每条街道上有些向左或向右的,通向相邻的街道的边,让你添加至多k条边,问最多有多少条街道能到达所有街道首先,注意到我们从某条路出发,只能向上、左、右走,不能向下 然后每条边只通向相邻的街道,不会跨越那么可以转化一下,把所有街道分成当前街道左边的,右边的,因为不能跨越,也不能向

2017-09-25 16:37:55 448

原创 BZOJ1106: [POI2007]立方体大作战tet

转化了个带颜色的括号序列模型….然后不会….题解是贪心…emmmmmmmmmm 好有道理a(不想证了…很对就是了….加入每个颜色时,如果它已经出现过,就让他和上次出现的合并 用树状数组维护距离code:#include<set>#include<map>#include<deque>#include<queue>#include<stack>#include<cmath>#inclu

2017-09-25 16:14:06 285

原创 BZOJ1105: [POI2007]石头花园SKA

所以你们是怎么突然就猜到把所有点都换成x<=y周长就最小的a 膜了题解表示不能理解这个结论 于是我就自己证了一下,不难证 简要说一下证明:如果把所有点都对称到y=x直线的下方,周长不是最小的,就说明,有可能一些点对称到上方可能使周长更小,考虑如果一个点对称过去了上方,那它右下角的点一定要对称过去,不然这个点就没有必要对称过去 那么对称过去的一部分一定是长这样的 阴影那部分就是我们要对称

2017-09-25 08:53:42 483

原创 codeforces 138E. Hellish Constraints

给一个字符串s和若干限制,每个限制形如:某字符x出现的次数在l~r之间,问s的子串中恰好满足L~R个限制的有多少个我们先考虑一个限制 右端点扫过去,维护每个左端点是否满足限制 当新加入一个字符时, 如果它不是当前限制的字符,对每个左端点是否满足没有影响 如果它是,那么他会使x出现次数为l-1的变成满足,出现次数为r的变成不满足 维护一下当前字符第i次出现的位置pos[i],假设当前是第j次

2017-09-24 20:09:48 346

原创 BZOJ1104: [POI2007]洪水pow

因为海拔底的水泵可以兹瓷抽海拔高的地方的水,所以我们按海拔高度从小到大处理每个小正方形 处理每个小正方形时,将它和相邻的不比他高的区域合并成一个联通块,因为他的水可以流到这些区域,每个高度合并完后,看这个高度的属于城市的区域,如果所在的联通块已有水泵,则这个水泵可以为这个区域抽水,否则需要给它所在的联通块增加一个水泵 注意有100w个元素,不能排序,因为高度不超过1000,每个高度开个vecto

2017-09-24 19:50:25 338

原创 BZOJ5046: 分糖果游戏

%%%Claris这道题的能量只是用来让过当前回合的,而一个人让了,另一个人也可以让回来,两人具体的能量是多少不重要,重要的是A和B能量的差值,如果差值>0,A才可以让过这一回合用能量值DP的方程很好想,但是能量值太大了没有用 因为糖果的美味度不大,考虑用这个东西DP 令f[i][j]表示当前先手能够在第i~n个糖果拿到至少j的美味度,先后手能量的差最少可以是多少 s[i]表示i~n的糖果美味

2017-09-23 21:37:48 1206

原创 BZOJ1100: [POI2007]对称轴osi

一眼感觉是计算几何题…然后不会做…. 结果居然是字符串题….如果我们能将一个多边形表示成一个字符串的话,对称就变成了回文 我们用边长代表这条边,用两条邻边的叉积代表这个点(因为叉积就是有向面积) 然后将这个数字序列复制一份到后面 找所有长度>2*n的回文串 最后答案要/2,因为每个对称轴会被算两次code:#include<set>#include<map>#include<deque

2017-09-23 21:00:01 498

原创 BZOJ1098: [POI2007]办公楼biu

题目说如果两点不在一个集合,那么他们之间一定有边,问最多有多少个集合 建出反图后,模型转化,变成如果两点不在一个集合,那么他们之间一定没有边,也就是说,两点之间有边就一定在一个集合 就相当于问反图有多少个联通块和每个联通块大小如果在反图上直接暴力,枚举每个点,将他连的点加进来,复杂度是n^2 但是其实一个点被访问过了就没有必要再找他了,可以用一个并查集将他和i+1并在一起,每个点找相连的点时,

2017-09-23 20:48:45 249

原创 BZOJ1097: [POI2007]旅游景点atr

用dijstra求出K个点两两的距离和1到他们,他们到N的距离,然后就可以状压了 可以预处理一下哪些点一定要在i之前走到,转成二进制存在pre[i],这样可以加速判断code:#include<set>#include<map>#include<deque>#include<queue>#include<stack>#include<cmath>#include<ctime>#inc

2017-09-23 20:39:30 494

原创 BZOJ4519: [Cqoi2016]不同的最小割

清空时没清空好最小割树=分治+最小割 在当前集合随便找两个点,算他们之间的最小割 然后找当前最小割分割的两个集合,就从起点遍历,每次只走未满流的边即可 然后更新这两个点集之间的最小割,然后把当前集合按照最小割分成两个集合,分治下去code:#include<set>#include<map>#include<deque>#include<queue>#include<stack>#i

2017-09-22 20:58:25 352

原创 codeforces 303E - Random Ranking

将坐标离散化(下文提到的坐标和区间都是离散化后的值),然后对于第i个人的区间L~R的R-L个小区间x~x+1计算答案,dp[k][x1][x2]表示前k个人(去掉第i个人)有x1个人区间小于当前区间,x2个人在当前区间的概率,然后用dp[n][x1][x2]计算一下对i的每个排名的贡献就行了 复杂度O(n5)O(n^5) (其实挺悬的,但我不会n4n^4的…)code:#include<set>

2017-09-22 20:18:12 555

原创 codeforces 582D - Number of Binominal Coefficients

emmmmmmmmmmmmmm 这题模拟赛的时候做过 当时back的时候推柿子推得很痛苦 现在再做还是不会….不过推柿子变得熟练了很多…题解: 因为组合数可以写成阶乘的形式Cmn=n!m!(n−m)!C_n^m=\dfrac{n!}{m!(n-m)!} 又因为pp是质数,组合数能否被pkp^k整除取决于他含多少个pp作为因子 所以我们不妨先考虑阶乘n!n!含多少个pp 假设n!n!含有

2017-09-21 21:26:01 436

原创 codeforces 585F. Digits of Number Pi

AC自动机和数位dp都写挂了….我是不是该退役了…问L~R有多少个数满足数字里包含一个长度至少为d/2的给定串的子串如果包含了一个长度大于d/2的子串,也一定包含长度为d/2的子串 所以相当于问L~R有多少个数满足数字里包含一个长度为d/2的给定串的子串 我们把原串所有长度为d/2的子串建到AC自动机上 因为d<=50,所以点数最大不超过25000(实际上最大值应该也比这个小很多) 所以就可

2017-09-21 16:47:42 480

原创 codeforces 553E - Kyoya and Train

一个有向图,走每条边有个代价,且花费的时间从1~T有个概率p[e][i],从1到n,若到达时时间超过T,则需要额外X的花费,问期望最小花费令f[i][j]表示在j时刻从i出发到达n的最小期望,因为虽然每条边花费的时间是不确定的,但至少是1,所以(i,j)这个分层图实际上是一个DAG,就可以dp了对于一条边e:u−>ve:u->v,有 f[u][t]=min(ei+∑Tj=1f[v][t+j]∗p[

2017-09-21 12:34:25 852

原创 codeforces 185C. Clever Fat Rat

观察可以发现,对于第一行的这些位置的燕麦,他们在下落的过程中相对位置是不会改变的,于是我们可以设一个方程f[i][[j][l][r]表示第一行l~r的燕麦都落到了第i行j列的格子里时,这个格子最多能往下掉多少燕麦,若在格子里的燕麦小于重量上限就是0 然后就可以dp了然后…这题出题人的数据出错了,所以要加上一些特判才能A code:#include<set>#include<map>#incl

2017-09-20 21:57:43 535

原创 codeforces 827F. Dirty Arkady's Kitchen

给一个无向图,其中的无向边有一些出现时间,人一开始在1号点,每一时刻他都需要不断移动,通过一条无向边的时间是1,问最早能在什么时刻到达n号点(其实并不知道题解在说什么,膜完代码yy了一个感觉差不多的) 最朴素的暴力即记录v[i][j]表示在i这个时间点能否到达j,然后枚举每条边转移,复杂度是O(Tm)的 我们考虑这样做慢在哪里:每条边的生效时间让他变成了T条边,于是边的总数是Tm的 注意到,一

2017-09-20 21:23:18 555

原创 codeforces 720D. Slalom

细节炸的好惨…根据只能向上或者向右走的性质,我们考虑一种朴素的做法 令f[i][j]表示走到第i列,第j行的路径数 这样做时间复杂度是O(nm)O(nm)的,而且会算重复一些路径,因为对于每个障碍的位置关系都相同的路径是视为同一路径的 先考虑怎么去重 每条路径,除非需要绕过障碍,否则我们都让他保持最低的高度,即贴着底线走,由于其只能向上或右走的性质,别的走法能走到的地方这样走也都能走到,且在

2017-09-20 20:52:21 444

原创 codeforces 773F. Test Data Generation

%%%tourist问有多少个符合条件的集合,使an/g−na_n/g-n和an/ga_n/g,an−na_n-n奇偶性不一样 要使an/g−na_n/g-n和an/ga_n/g奇偶性不一样,只要n是奇数就行了 要使an/g−na_n/g-n和an−na_n-n奇偶性不一样,就是要使an/ga_n/g和ana_n奇偶性不一样,就是说,集合里最大的数在去掉集合的gcd后改变了奇偶性,因为奇数去掉因

2017-09-20 20:03:25 571

空空如也

空空如也

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

TA关注的人

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