自定义博客皮肤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

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

原创 BZOJ3862: Little Devil I

肯定是树剖做分析一下3种操作 1:翻转一条链,直接翻 2:翻转与一条链相邻的边 可以发现,与一条链相邻的边中,是与父亲相连的边只有顶端的那一条,这一条可以直接暴力翻转,然后我们重新定义与链相连的边是链上每个点和儿子相邻的边中不在链上的边 考虑链上每个点和儿子的边,按轻重分类,对于轻边,我们也不需要考虑他们,因为查询时遇到的轻边是log条的,我们可以对这个点打标记,查询时暴力查询每条轻边父亲的

2018-01-13 09:54:42 314

原创 BZOJ3677: [Apio2014]连珠线

这题刚了好久的treedp,一直WA比较大的点,不知道哪里错了以为我想法错了看题解结果都说换根好做些不换根很多特殊情况…. 咱觉得咱的想法没问题..,应该是一些细节没考虑好,又想了想一些反例就过去了题解部分: 最终答案选的蓝边一定是若干组相邻的树边,用中间点统计和,考虑什么样的分组是合法的 以下给出一些反例: 不合法的情况很多,但可以根据加点的2种方法,总结成以下的东西:设一组蓝边为

2018-01-12 20:26:24 452

原创 BZOJ3859: Periodic Binary String

我们可以旋转串T,使得l~r等价于0~r-l 根据(r-l)%k可以将T分成T1,T2两部分,问题变成满足0<=a<2|T1|,0<=b<2|T2|0<=a<2^{|T1|},0<=b<2^{|T2|},pa+qb≡x(Mod p)pa+qb≡x (Mod\ p)的解数 也即0<=a<A,0<=b<B0<=a<A,0<=b<B 记A=k1p+ka,B=k2p+kbA=k1p+ka,B=k2p+

2018-01-10 22:11:58 402

原创 BZOJ3861: Tree

因为反正也不知道哪个集合对应哪个,可以先将点集做一个映射,所以我们可以将点集变成{1,2,3,4}{5,6}{7,8,9}类似这样,好看又方便处理每个点集连向的点要么是他前面要么后面,可以f[i][j]表示前i个点集,还有j个点集没有匹配点,图的方案数,因为知道了i和j,前面还有多少个点可供匹配就知道了,没有必要用额外的一维表示然后就可以dp啦转移的话我是每个点集内枚举每个点转移,f[i][j][0

2018-01-10 20:33:53 279

原创 BZOJ3858: Number Transformation

这个结论不明显啊… 这种题还是打表找规律吧结论:如果当前的数是x,进行到第i次操作,若i>x√i>\sqrt x,则之后的每次操作x只会加一个不变的定值x/ix/i证明: 当i>x√i>\sqrt x时,设x=kix=ki,则i>x√,k<x√i>\sqrt x,k<\sqrt x,要使x变成(i+1)的倍数,有一个解是(i+1)k=x+k>x(i+1)k=x+k>x,我们要求新的值最小,但(i

2018-01-09 17:13:45 282

原创 BZOJ3857: Multiplication table

给了一个K进制的乘法表,给0~K一个映射,给出映射后的乘法表要求复原这个映射0和1是很容易知道对应哪个的 对于2~K-1(%dalao发现)有一个规律…,即x的那一行/列的乘积,首位数字有x种…. 然后就AC了… 小心PE..code:#include<set>#include<map>#include<deque>#include<queue>#include<stack>#inc

2018-01-09 17:06:02 291

原创 BZOJ3855: Light

一开始有些灯是灭的有些灯是亮的,每次选一个位置,翻转他四个相邻的灯的状态,他的状态可翻可不翻轮廓线dp 有一个朴素的四进制状态,代表每个位置是否是亮的及操作次数的奇偶 但是4^n*n^2会T 考虑减少状态 注意到当前位置上一行的对应位置,如果是亮的,当前位置一定要操作,而一次操作之后不管上一行是否会翻转当前位置,因为操作时中心格可翻可不翻,他的两种状态都能够到达,所以当一个位置是亮的时候没有

2018-01-07 16:45:23 275

原创 BZOJ3853: GCD Array

对原序列中所有(x,m)=d的ax+v,询问前缀和 对这个修改推一波柿子(以下省略下取整) v∑nx=1(x,m)=d−>v\sum_{x=1}^n(x,m)=d-> v∑n/dx=1(x,m/d)=1−>v\sum_{x=1}^{n/d}(x,m/d)=1-> v∑n/dx=1∑D|(x,M)μ(D)−>v\sum_{x=1}^{n/d}\sum_{D|(x,M)}μ(D)-> v∑D|

2018-01-05 08:02:23 391

原创 BZOJ3851: 2048

显然只有2的幂次对产生2048有用,即20,21,22....2112^0,2^1,2^2....2^{11} f[i][j]表示前i个2的幂次,合并了j个2i2^i的子序列数code:#include<set>#include<map>#include<deque>#include<queue>#include<stack>#include<cmath>#include<ctime>

2018-01-04 22:06:02 255

原创 BZOJ3850: ZCC Loves Codefires

考虑最优的顺序满足什么性质 设两个部件A,B顺序为A在B前面,费用分别是a,b,耗时ta,tb,中间部分费用和S,耗时和T 如果最优顺序中A在B前面(A,B前后的部件显然不需要考虑),则有 ata+Sta+b(ta+T+tb)<btb+Stb+a(tb+T+ta)at_a+St_a+b(t_a+T+t_b)<bt_b+St_b+a(t_b+T+t_a) 得Sta+bta+bT<Stb+a

2018-01-03 14:15:47 323

原创 BZOJ3847: ZCC loves march

每个点如果不考虑被分裂出去,他至多只会被合并一次,维护两个set,每次合并可以暴力找出这一行/列的所有点,并查集资瓷一下合并成一个点,每次分裂可以直接新建一个点代表这个分出去的点code:#include<set>#include<map>#include<deque>#include<queue>#include<stack>#include<cmath>#include<ctime>

2018-01-03 12:29:17 433

原创 BZOJ3846: ZCC loves words

注意到模数5047621=179*173*163 拆成这3个质数算,EXCRT合并 建立AC自动机,在上面dp,套个矩乘 但是发现在i位置匹配一个长度为k的单词j,贡献是(i+k)*prime[j],对于不同的i贡献不同,又因为模数<200,最多只有100+种矩阵,处理出循环节就可以矩乘了code:#include<set>#include<map>#include<deque>#inc

2018-01-03 11:55:46 329

原创 BZOJ2331: [SCOI2011]地板

昨晚想了好久还是不是会压睡了一觉yy了一下突然会了 我也不知道这个叫不叫插头dp,毕竟没写过… 不过跑的很快快(自我满足一下qwq) 首先因为nm<=100,min(n,m)<=10,n>m时旋一下 考虑轮廓线dp,3进制状态 0表示:这样一个陷下去的轮廓线 1表示:这样一个由上面的倒L(可能是朝左也可能朝右)留下来的一个突出 2表示:这样一种最正常的,上面刚好填充完的轮廓 转移

2017-12-28 09:59:44 355 1

原创 BZOJ3844: ZCC loves cards

朴素的暴力是Cknk!k2C_n^kk!k^2,但事实上很多组合根本不可能达到ans,所以枚举了一个组合后先忽略一定是连续的异或和的限制,2k2^k判答案是否有可能超过ans,有可能再k!k2k!k^2找,在随机数据下表现良好QAQcode:#include<set>#include<map>#include<deque>#include<queue>#include<stack>#inc

2017-12-25 10:49:44 361

原创 BZOJ3843: ZCC loves Army

把树转成左儿子右兄弟的那种二叉树的形式 发现一个点能且仅能给他的子树传递order,询问3就变成了询问一个点到根有多少个点 对于传递message,可以给每个点定一个编号0的虚儿子,给他赋权1,就变成了询问两点间路径的权值和,注意要特判一个点是另一个点的祖先的情况,bzoj上的数据有误,不判这个才能过,hdu上的数据是对的可以去那里交 对于操作1,把某个人的一段儿子截下来,可以用n棵splay

2017-12-25 08:37:14 496

原创 BZOJ3841: ZCC Loves Intersection

两条线段有交的充要条件是每一维上都有交qwq 因为每个线段都平行一个坐标轴,他的表示应该是(l~r,x1,x2,x3…xn) A和B相交和A和C相交显然没有任何关系 算粗A,B相交的概率,乘上两两的组合数就行了 两条线段相交的概率画一下柿子就行了吧 然后写个高精..code:#include<set>#include<map>#include<deque>#include<queue

2017-12-25 08:22:02 391

原创 BZOJ3840: ZCC Loves COT

正解十分鬼畜…对标记的标记打标记….由于我匮乏的空间想象能力,我果断打了O(n3+nm+nq)O(n^3+nm+nq)的二维情况,然后卡过去了233考虑一维的情况,就是对l~r区间+1,差分后在l,r+1分别打标记,所有操作完扫一次 问题拓展到二维时类似,观察对每一维打的标记, +1,-1显然可以分开维护,+1标记是一列下去的,-1标记是沿斜线下去的,所以我们可以这样 用紫色的标记给+

2017-12-25 08:15:01 428

原创 「CodePlus 2017 12 月赛」白金元首与独舞

新建一个点ed代表边界外,将每个位置视作点,每个点出度为1,发现确定了每个点的出度后合法状态是个以ed为根的内向树原图中除了’.’的箭头可以确定k棵内向树,给每个’.’设置箭头就是给每棵树根(除了ed)设置出度,统计有向图的生成树个数 把每棵树根四个方向的边建进度数矩阵,这题是儿子指向父亲的内向树,度数矩阵建出度矩阵code:#include<set>#include<map>#include

2017-12-24 19:24:06 640

原创 BZOJ3724: PA2014Final Krolestwo

跪dalao……我们新建一个点0,连边向所有奇数度点,于是得到了一个偶数条边,所有点度数都是偶数的图 这个图存在欧拉回路,根据每次流出0,流入0的两个奇数点可以配对 但是这题要求路径长度为偶数,于是我们将n个点拆成2n个点,这样配对的奇数点之间的路径长度就是偶数了 我们现在想在2n个点中建入原图中的边,使所有点度数都为偶数 考虑怎么连原图中的边 0的度数显然为偶数 建出原图的生成树,对于

2017-12-20 20:02:14 456

原创 BZOJ3725: PA2014 Final Matryca

一开始看错题了qaq因为对每个位置都要刷一遍,对于不同颜色的位置i,j(i< j),长度要保证刷到i的格子不会刷到j,即j-i>n-L,显然只要用相邻的不同颜色限制长度,得出若干个关于L的不等式,可以解得L的最小值code:#include<set>#include<map>#include<deque>#include<queue>#include<stack>#include<cmat

2017-12-19 09:43:50 278

原创 BZOJ3726: PA2014Final Wykladzina

先不考虑可以包含坏格 如果求不包含坏格的最大子矩形,有一种办法是枚举矩形的下界,用一个单调队列扫过去,队列里维护左端点和对应的高度,显然随左端点递增,高度递增,预处理u[i][j]代表(i,j)上方第一个坏格的位置,枚举右端点j扫过去时维护队列里的高度,如果当前队尾不合法,那他在j-1的时候合法且面积最大,更新一下答案,更新一下队列那么包含一个坏格的最大子矩形就多维护一个队列就行了,每次从不包含坏

2017-12-18 16:17:12 353

原创 BZOJ3722: PA2014 Final Budowa

资瓷先手为-2,后手为-1,犹豫为0 从叶子开始往上考虑 如果一个人有偶数个0孩子,相当于没有0孩子,可以把他变成-2/-1 如果一个人有奇数个0孩子,且剩余孩子中-2=-1,那么这个人相当于0,否则也可以决定他的决策 一直缩上根,如果根是-2或0则先手必胜否则必败然后是输出方案 根是-2时显然先手可以任选一个0开始 根是0时,从根往下走,当一个孩子y的状态是0或者y是-1但是y中-2+

2017-12-17 21:09:45 606

原创 BZOJ3721: PA2014 Final Bazarek

要求和为奇数,就是选奇数个奇数,任意个偶数 将n个数按奇偶分类,f[i],g[i]表示取i个数和最大,取了f[i]个奇数,g[i]个偶数,显然都是各自最大的f[i],g[i]个 转移的时候枚举取出的是奇数还是偶数,从i-2,i-1转移到icode:#include<set>#include<map>#include<deque>#include<queue>#include<stack>

2017-12-17 20:55:51 369

原创 BZOJ3718: [PA2014]Parking

因为停车场无限长,贪心的想,肯定是先把堆在一起的车拆开,全部分散开,然后移到对应的位置再组合起来….(匮乏的语文表达能力,泥萌意会一下?所以求出初始状态和目标状态的排列顺序线段树找一下区间最大值判一下是否超过宽度就行了code:#include<set>#include<map>#include<deque>#include<queue>#include<stack>#include<cm

2017-12-15 09:51:13 341

原创 BZOJ3717: [PA2014]Pakowanie

如果最终需要ans个包,一定是最大的ans个 将容量排个序后从大到小状压dp,f[i]表示放了i状态的物品,至少用f[i]个包,当前包还剩g[i]的容量把i每一位取出来转移一下,可以用lowbit加速code:#include<set>#include<map>#include<deque>#include<queue>#include<stack>#include<cmath>#in

2017-12-15 09:48:30 439

原创 BZOJ3716: [PA2014]Muzeum

首先把给出的视线范围转成向量,建立以这两个向量为基底的平面直角坐标系,每个点得到新的坐标后取反横坐标,变成每个守卫可以看见横坐标比自己小,纵坐标比自己大的手办这个东西似乎对应一个最小割模型,加上所有手办的价值,源连守卫权为贿赂守卫的花费,守卫连他能看见的手办权为inf,手办连汇权为手办的代价,减去最小割因为图太大了,不能跑最小割 考虑到最小割=最大流,可以模型转化,每个守卫有花费这么多的流量,分配

2017-12-15 09:41:11 445

原创 BZOJ3714: [PA2014]Kuglarz

用s[i]代表1~i的球数,每次查i~j相当于知道了s[j]-s[i-1]的奇偶性 要确切知道每个位置有没有球,就是要知道所有s[i]-s[i-1]的奇偶性 然后对应一个MST的模型= =code:#include<set>#include<map>#include<deque>#include<queue>#include<stack>#include<cmath>#include

2017-12-15 09:31:33 245

原创 BZOJ3711: [PA2014]Druzyny

orz考虑dp,f[i]表示1~i至多分成几段,g[i]表示1~i分成f[i]段的方案数 转移的时候将c[i],d[i]的限制分开考虑 对于d[i]的限制,不难发现他有单调性,可以预处理L[i]表示L[i]~i-1的j满足d[i]的限制可以由j转移到i 然后考虑c[i]的限制,他没有单调性,于是对c进行分治 如果我们在处理[l,r]这一个区间,找出[l+1,r]内c的最大值的位置k,那么k左

2017-12-15 09:26:52 679

原创 BZOJ1140: [POI2009]KOD 编码

ORZ题目要求的是任意一个字符的后缀+若干个字符+这个字符后一定走回根的字符 因为最优编码树深度不超过log层qwq,所以可以打两个标记搜…第一个标记是这个点是不是一个后缀+若干个字符 先搜一遍所有点的后缀,打上这个标记,然后从这些标记点开始走,走任意一个字符,如果走完了这个字符,这个标记点没有走到根,这个字符就是不合法的,同时如果此时走到的位置没有标记,就可以打上第一个标记加入队列 第二个标

2017-12-14 08:18:00 388

原创 BZOJ1141: [POI2009]Slw

好神呀…手玩一下发现这个H(s)生成的串有个斐波那契的递推式 emmmmm然后我就啥都不会了….我们定义G(s)为H(s)的逆变换,即H(a)=b,G(b)=a 那么对于s中的每个1,如果后面是0,他会变成1,否则变成0 发现我们要验证s是否是S的子串,这个问题等价于验证G(s)是否是G(S)的子串 我们可以不断对s做逆变换,让他越来越短我们先来证几个结论 1:HnH_n的偶数项最后一位是

2017-12-12 20:57:57 301

原创 BZOJ1139: [POI2009]Wie

分成2^p层跑最短路…code:#include<set>#include<map>#include<deque>#include<queue>#include<stack>#include<cmath>#include<ctime>#include<bitset>#include<string>#include<vector>#include<cstdio>#include<

2017-12-11 18:46:07 344

原创 BZOJ1138: [POI2009]Baj 最短回文路

开始想建个n^2个点的图跑最短路来着…因为显然会T,一直在想优化结果不会就弃疗了..dp f[i][j]表示i到j的最短回文路长度 转移:f[i][j]=2+minc(f[u][v]),u∈S,v∈Tf[i][j]=2+min_c(f[u][v]),u∈S,v∈T,其中S是i走c边能到达的点集,T是走c边能到达j的点集 发现转移是O(n2)O(n^2)的 但我们可以通过dp时顺便处理一个mi

2017-12-11 18:28:28 290

原创 BZOJ1137: [POI2009]Wsp 岛屿

看错题了qwq看对题了也不会呀… 题解说是半平面交裸题 于是学了一下半平面交 贴个板子qwqcode:#include<set>#include<map>#include<deque>#include<queue>#include<stack>#include<cmath>#include<ctime>#include<bitset>#include<string>#incl

2017-12-11 16:30:49 303

原创 BZOJ1135: [POI2009]Lyz

似乎是hall定理的经典模型贪心的想,对于人的任意一个集合,肯定编号是连续的l~r一段更容易使匹配不合法 写成柿子就是∑ri=lsi>(d+r−l+1)k\sum_{i=l}^rsi>(d+r-l+1)k 把l,r移项,令ci=si−kci=si-k 柿子可以化为∑ri=lci>dk\sum_{i=l}^rci>dk 用线段树维护序列里的最大连续子序列和判一下code:#include<se

2017-12-11 16:28:19 361

原创 BZOJ1119: [POI2009]SLO

建一个n个点的图,若ax在b中的位置是y,就连一条x->y的边,每次可以交换两个出度,代价是wx+wy,问让所有边连成自环的最小花费每个环显然选出最小的wx顺着环换,也可以额外花费一些,和其他环并在一起,用其他环的wx换 判一下就行了code:#include<set>#include<map>#include<deque>#include<queue>#include<stack>#i

2017-12-11 16:22:17 289

原创 BZOJ1118: [POI2009]Prz

这题好像是个论文题??有个论文证明了这题做法的复杂度但是我太懒了没去看….一开始我以为这题是反着构造使F(x,y)为true的x,y序列,然后得到什么结论什么的 想了一会没得到什么有用的东西就弃疗了 (连续相同的元素可以合并好像对搜索还是挺有用的一个性质 问了Claris这题居然是搜索qwq注意到元素集合|S|<=100,因为F(x,y)的柿子每次去掉一种元素,所以不会超过100层 然后这个

2017-12-11 15:57:12 629

原创 BZOJ1117: [POI2009]救火站Gas

考虑贪心的去放消防站,让每个消防站的层数尽量浅,从而覆盖子树里的点的同时能对子树外产生贡献那么x要放消防站的时候,一定是x的子树里还未被覆盖的最远的点距离x的距离为k,如果这样的点有c个,我们要放⌈cs⌉\lceil \dfrac{c}{s} \rceil个消防站,这些消防站覆盖完了这c个点后,再去覆盖距离x距离为k-1的点,都覆盖完了后还能覆盖的点数上传给父亲 为什么这样是最优的,因为此时距离x

2017-12-11 15:44:47 465 1

原创 BZOJ1132: [POI2008]Tro

所以为啥用long long本地能过所有数据交上去就WA,一定要改int啊一开始写了个用点到直线距离公式的,维护两个指针扫过去 emmmmmm并不能过样例,因为有根号什么的东西,调不动….膜题解发现可以用叉积(好有道理..) 改成叉积,继续用两个指针扫….过了样例WA了… 调一下发现排序出的结果不是我想要的qwq 所以说我不会做各种几何题qwq那把题解看完吧 按x排序所有点,枚举每个点为原

2017-12-08 10:18:08 315

原创 BZOJ1130: [POI2008]POD Subdivision of Kingdom

直接搜感觉会T折半搜一下,meet in middle,位运算可以省掉一个ncode:#include<set>#include<map>#include<deque>#include<queue>#include<stack>#include<cmath>#include<ctime>#include<bitset>#include<string>#include<vector>

2017-12-08 10:11:47 377

原创 BZOJ1129: [POI2008]Per

模数m不是质数很麻烦qwq 先把他分解成m=∏Mi=1pikim=∏i=1Mpikim=\prod_{i=1}^Mpi^{ki} 用每个pikipikipi^{ki}做模数计算最后EXCRT合并那么现在模数Mod=pikiMod=pikiMod=pi^{ki} 计算s的排名,按位枚举i,计算1~i-1位与s相同,第i位&lt; s的序列数,最后+1 令p[i]表示位置i在序列里排第p[...

2017-12-08 10:09:24 839 2

空空如也

空空如也

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

TA关注的人

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