
BZOJ
LZJ209
主页:https://zongjia.li/
展开
-
BZOJ 2820 YY的GCD 莫比乌斯反演
由于这道题比较鬼畜,而且公式巨难打出,所以我粘了两页PoPoQQQ的PPT orz,并对其中一些部分解释一下 最下面的公式就是换了一种枚举的方式,其中u括号里的东西就是把d变成T/p,其中p|T的条件只要带回到原表达式中即可理解。 这里注意这里的每个前缀和代表的意义是对于每一个T满足条件的Σu之和。 下面附上我的代码#include<cstdio>#include<cstdlib>原创 2017-01-19 22:31:41 · 318 阅读 · 0 评论 -
BZOJ 1563: [NOI2009]诗人小G 决策单调性DP
题目大意:给定若干个字符串,可以将相邻的若干个字符串连接起来并在其中插入空格,最小化每个字符串与给定长度的差的绝对值的p次方。 题解:一眼看上去像是之前做过的斜率优化,但是仔细一看不是平方变成了p次方,这就是斜率优化做不了的了,查了题解才知道这是决策单调性DP,决策单调性DP就是假如有如下方程:F[i]=max(f[j]+W(i,j))其中W(i,j)是有关i,j的式子,若能证明W(i+1,j)+原创 2017-05-25 19:53:23 · 548 阅读 · 0 评论 -
BZOJ1270: [BeijingWc2008]雷涛的小猫 DP
题目大意:一只猫,可以在若干颗数之间瞎蹦,每次瞎蹦需要下降k的长度,到达一个点就获得该点的收益,问最大收益。 题解:SBDP,F1[i]表示高度为i的时候最大值是多少,F2[i]表示在第i棵树上时的最大权值为多少,随便写写就行了。#include<bits/stdc++.h>using namespace std;int mapp[5000][5000];int f1[5000];int原创 2017-05-25 19:58:23 · 304 阅读 · 0 评论 -
BZOJ 4566: [Haoi2016]找相同字符 后缀自动机
Description 给定两个字符串,求出在两个字符串中各取出一个子串使得这两个子串相同的方案数。两个方案不同当且仅当这两 个子串中有一个位置不同。Input两行,两个字符串s1,s2,长度分别为n1,n2。1 <=n1, n2<= 200000,字符串中只有小写字母Output输出一个整数表示答案Sample Input aabb bbaa Sample Output 10题解:原创 2017-05-25 20:02:55 · 510 阅读 · 0 评论 -
BZOJ 3790: 神奇项链 manacher+SPFA
Description 母亲节就要到了,小 H 准备送给她一个特殊的项链。这个项链可以看作一个用小写字 母组成的字符串,每个小写字母表示一种颜色。为了制作这个项链,小 H 购买了两个机器。第一个机器可以生成所有形式的回文串,第二个机器可以把两个回文串连接起来,而且第二个机器还有一个特殊的性质:假如一个字符串的后缀和一个字符串的前缀是完全相同的,那么可以将这个重复部分重叠。例如:aba和aca连接原创 2017-05-25 20:09:56 · 368 阅读 · 0 评论 -
BZOJ 1691: [Usaco2007 Dec]挑剔的美食家 set
Description与很多奶牛一样,Farmer John那群养尊处优的奶牛们对食物越来越挑剔,随便拿堆草就能打发她们午饭的日子自然是一去不返了。现在,Farmer John不得不去牧草专供商那里购买大量美味多汁的牧草,来满足他那N(1 <= N <= 100,000)头挑剔的奶牛。 所有奶牛都对FJ提出了她对牧草的要求:第i头奶牛要求她的食物每份的价钱不低于A_i(1 <= A_i <= 1,0原创 2017-05-25 20:14:20 · 602 阅读 · 0 评论 -
BZOJ 2216: [Poi2011]Lightning Conductor 决策单调性DP
Description已知一个长度为n的序列a1,a2,…,an。 对于每个1<=i<=n,找到最小的非负整数p满足 对于任意的j, aj < = ai + p - sqrt(abs(i-j)) Input第一行n,(1<=n<=500000) 下面每行一个整数,其中第i行是ai。(0<=ai<=1000000000)Outputn行,第i行表示对于i,得到的pSample Input 6原创 2017-05-25 20:21:30 · 445 阅读 · 0 评论 -
BZOJ 2806: [Ctsc2012]Cheat 后缀自动机+单调队列优化DP
题意:算了不想写题意了233 题解:对所有串建一个广义后缀自动机,然后对于每个模板串算出到第i位最大能匹配多远,二分出一个答案,然后写出一个DP方程,F[i]表示到第i位最多能匹配多少位,f[i]=max(f[j] (i-maxx[i]<=j<=i-midans) +i-j) 显然单调队列乱搞一下就行了。#include<iostream>#include<iomanip>#include<c原创 2017-05-25 20:28:45 · 454 阅读 · 0 评论 -
BZOJ 3158: 千钧一发 网络流
题目大意:给定n个数,求出和最大的一个集合使得集合中任意两个数要么满足平方和不为平方数,要么满足有大于1公因数。 题解:可以将数字按照奇偶性分成两半,因为两个奇数的平方和不可能为平方数,两个偶数有大于1的公因数,这样不能共存的两个数就位于左右两边,只要枚举两个数判断一下,如果不能共存就在中间连上一条INF,奇数向左边连费用,偶数向右边连费用,就变成了一个最小割模型。#include<cstdio>原创 2017-05-25 22:50:47 · 1311 阅读 · 0 评论 -
BZOJ 2734: [HNOI2012]集合选数 乱搞DP
Description《集合论与图论》这门课程有一道作业题,要求同学们求出{1, 2, 3, 4, 5}的所有满足以 下条件的子集:若 x 在该子集中,则 2x 和 3x 不能在该子集中。同学们不喜欢这种具有枚举性 质的题目,于是把它变成了以下问题:对于任意一个正整数 n≤100000,如何求出{1, 2,…, n} 的满足上述约束条件的子集的个数(只需输出对 1,000,000,001 取模的结果原创 2017-05-25 19:34:12 · 406 阅读 · 0 评论 -
bzoj 4475: [Jsoi2015]子集选取 找规律
一个月没写过博客了,为了证明我还活着,决定回来更新一下博客,先拿这样一道很妙(乱搞)的题写一写。 题目大意:给定集合大小N,要求挑选出一个三角形的集合满足下面是上面的子集,右面是左面的子集,求不同的方案数。 题解:打表找规律2333,答案为2^n^k…#include<cstdio>using namespace std;const int mod=1e9+7;long long ksm(原创 2017-05-25 19:25:21 · 538 阅读 · 0 评论 -
【bzoj2694】Lcm 莫比乌斯反演
题目大意:对于任意的>1的n gcd(a, b)不是n^2的倍数,的1到a和1到b的lcm(a,b)之和。 题解:又是一道变态题。。。。。。。。。。 可以参考同系列的上一篇文章,这题主要的特殊处在于不能出现gcd(a,b)为n^2倍数的lcm(a,b),通过一顿瞎搞我们发现最后要求的前缀和中多出了一个abs(u(D/i)),这还是一个积性函数,唯一不同的是i中包含prime[j]的情况,这个我们原创 2017-03-06 17:46:19 · 674 阅读 · 0 评论 -
BZOJ 1455: 罗马游戏 左偏树 or pb_ds
这道题看到支持合并操作就知道是启发式合并,就去学了一下左偏树,左偏树,顾名思义就是树是向左偏的,实质上是一个堆,我们只需对一个节点维护一个权值,这个权值等于其右儿子的权值加一,一旦发现左儿子的该权值比右儿子小就交换左右儿子,这样就能保证树的左偏性,当合并两颗左偏树的时候,我们先找出根节点权值较小的一个,然后将另一个插入到其右节点即可,并在回溯的过程中维护一下左偏性,这个过程虽然看起来比较麻烦,但是实原创 2017-01-19 22:54:29 · 631 阅读 · 0 评论 -
bzoj 2565: 最长双回文串 manacher
统计出以每一个点为回文中心最大能到哪,然后跑一个玄学的DP搞出每一个点左侧和右侧最远的回文串到哪然后扫一遍即可,具体可以看代码。(这份代码写的很垃圾)#include<cstdio>#include<cstdlib>#include<iostream>#include<iomanip>#include<cstring>#include<string>#include<ctime>#in原创 2017-02-22 13:46:37 · 419 阅读 · 0 评论 -
bzoj2084【POI2010】Antisymmetry manacher
这是一道马拉车的变异版,我们只需要在统计回文串的时候将判断条件改为右侧加左侧等于1即可,我们还要注意不可以以数字为中心扩张,因为可能会出现左侧是对称而右侧不是的情况。#include<cstdio>#include<cstdlib>#include<iostream>#include<iomanip>#include<cstring>#include<string>#include<ct原创 2017-02-22 13:50:23 · 465 阅读 · 0 评论 -
FFT 【JSOI2012】bzoj4332 分零食
题目大意:有n个小朋友,m块糖。 给小朋友分糖,如果一个小朋友分不到糖,那他后面的小朋友也分不到糖。 每个小朋友有一个喜悦值,有三个参数,O,S,U,设一个小朋友分到糖数为x,则这个小朋友的喜悦值为O*x x+ S x +U,分不到糖的小朋友的喜悦值为1。 求所有分糖方案下 所有小朋友喜悦值乘积 的和。题目分析:如果没有小朋友必须是前面的连续的一段这个要求,那就是一个FFT模板,把喜悦值转载 2017-03-03 17:26:23 · 358 阅读 · 0 评论 -
bzoj2705: [SDOI2012]Longge的问题 欧拉函数
题目大意:给定n,求出1到n所有数与n的gcd之和。 题解:我们枚举n的每一个因子d,然后计算一下1到n/d的区间内有多少个数和n/d互质,也就是欧拉函数,再将欧拉函数乘以一个d即可。#include<cstdio>#include<cstdlib>#include<iostream>#include<iomanip>#include<ctime>#include<cmath>#inc原创 2017-03-06 16:39:51 · 456 阅读 · 0 评论 -
bzoj 2226: [Spoj 5971] LCMSum线性筛欧拉函数
题目大意:给定n,求1到n中所有数与n的lcm之和 题解:枚举d=GCD(i,n),令F(n)为n以内与n互质的数之和,则ans=Σ(d|n)d*F(d)*n/d=nΣF(d) F(d)有一个性质,就是与d互质的数一定能两两组合成d,可以用辗转相除法轻松证明,只有1和2特殊,特判即可。#include<cstdio>#include<cstdlib>#include<iostream>#i原创 2017-03-06 17:17:02 · 377 阅读 · 0 评论 -
BZOJ 2693 jzptab 莫比乌斯反演
BZOJ 2693 jzptab 莫比乌斯反演 题目大意:给定n,m,求i从1到n,j从1到m,的i与j的最小公倍数之和。 这题真的是有问题,难想的一批,公式恐惧症无药可救患者。。。。。。 以下我们继续给出PoPoQQQ的PPT中的内容,当中做出一些解释。 注解:这里的F(x,y)要求gcd(i,j)==1,所以我们想要求解F(x,y)需要继续莫比乌斯反演。 注解:这里是一个标准原创 2017-03-06 17:23:04 · 419 阅读 · 0 评论 -
【BZOJ 2716/2648】 [Violet 3]天使玩偶 SJY摆棋子
题目大意:给定平面上一堆点,支持插入点和查询一个点的最近点离它的曼哈顿距离。 题解:KD-Tree裸题,第一次写KD-Tree,总的来说这是一种玄学时间复杂度的东西,为什么叫KD-Tree呢,因为它可以支持K维平面上的查询,为了让每个区域尽可能的均衡,我们采用每次变更比较维度的方法,就比如说我们在一个二维平面上横着切一刀再竖着切一刀,让平面的每个区间尽可能的点数相同,然后每一个点代表的就是一个K维原创 2017-03-17 15:56:46 · 2589 阅读 · 0 评论 -
bzoj 1150 CTSC: [CTSC2007]数据备份Backup
Description 你在一家 IT 公司为大型写字楼或办公楼(offices)的计算机数据做备份。然而数据备份的工作是枯燥乏味 的,因此你想设计一个系统让不同的办公楼彼此之间互相备份,而你则坐在家中尽享计算机游戏的乐趣。已知办公 楼都位于同一条街上。你决定给这些办公楼配对(两个一组)。每一对办公楼可以通过在这两个建筑物之间铺设网 络电缆使得它们可以互相备份。然而,网络电缆的费用很高。当地原创 2017-04-26 21:32:57 · 452 阅读 · 0 评论 -
BZOJ 3275: Number 网络流
题解戳这原创 2017-05-30 10:54:06 · 385 阅读 · 0 评论 -
3195: [Jxoi2012]奇怪的道路 状压DP
Description小宇从历史书上了解到一个古老的文明。这个文明在各个方面高度发达,交通方面也不例外。考古学家已经知道,这个文明在全盛时期有n座城市,编号为1..n。m条道路连接在这些城市之间,每条道路将两个城市连接起来,使得两地的居民可以方便地来往。一对城市之间可能存在多条道路。 据史料记载,这个文明的交通网络满足两个奇怪的特征。首先,这个文明崇拜数字K,所以对于任何一条道路,设它连接的两个城原创 2017-06-23 21:11:21 · 387 阅读 · 0 评论 -
BZOJ 4173: 数学 欧拉函数
题目 题解:又是数学公式,戳这吧orz#include<cstdio>#include<cstdlib>#include<ctime>#include<cmath>#include<cstring>#include<string>#include<algorithm>#include<iostream>#include<iomanip>using namespace std;c原创 2017-06-23 21:24:18 · 466 阅读 · 0 评论 -
BZOJ 2428: [HAOI2006]均分数据 模拟退火
已知N个正整数:A1、A2、……、An 。今要将它们分成M组,使得各组数据的数值和最平均,即各组的均方差最小。Input第一行是两个整数,表示N,M的值(N是整数个数,M是要分成的组数) 第二行有N个整数,表示A1、A2、……、An。整数的范围是1–50。 (同一行的整数间用空格分开)Output这一行只包含一个数,表示最小均方差的值(保留小数点后两位数字)。Sample Input6 31原创 2017-06-23 21:30:04 · 491 阅读 · 0 评论 -
BZOJ 2400: Spoj 839 Optimal Marks 网络流
Description定义无向图中的一条边的值为:这条边连接的两个点的值的异或值。 定义一个无向图的值为:这个无向图所有边的值的和。 给你一个有n个结点m条边的无向图。其中的一些点的值是给定的,而其余的点的值由你决定(但要求均为非负数),使得这个无向图的值最小。在无向图的值最小的前提下,使得无向图中所有点的值的和最小。Input第一行,两个数n,m,表示图的点数和边数。 接下来n行,每行一个数原创 2017-06-23 21:39:15 · 419 阅读 · 0 评论 -
BZOJ 1419: Red is good 期望DP
Description桌面上有R张红牌和B张黑牌,随机打乱顺序后放在桌面上,开始一张一张地翻牌,翻到红牌得到1美元,黑牌则付出1美元。可以随时停止翻牌,在最优策略下平均能得到多少钱。Input一行输入两个数R,B,其值在0到5000之间Output在最优策略下平均能得到多少钱。Sample Input5 1Sample Output4.166666HINT输出答案时,小数点后第六位后的全部去掉,不要原创 2017-06-23 21:43:59 · 617 阅读 · 0 评论 -
2426: [HAOI2010]工厂选址 贪心
Description某地区有m座煤矿,其中第i号矿每年产量为ai吨,现有火力发电厂一个,每年需用煤b吨,每年运行的固定费用(包括折旧费,不包括煤的运费)为h元,每吨原煤从第i号矿运到原有发电厂的运费为Ci0(i=1,2,…,m)。现规划新建一个发电厂,m座煤矿每年开采的原煤将全部供给这两座发电厂。现有n个备选的厂址。若在第j号备选厂址建新厂,每年运行的固定费用为hj元。每吨原煤从第i号矿运到j号备原创 2017-06-14 21:21:29 · 597 阅读 · 0 评论 -
BZOJ 2466: [中山市选2009]树 高斯消元
Description图论中的树为一个无环的无向图。给定一棵树,每个节点有一盏指示灯和一个按钮。如果节点的按扭被按了,那么该节点的灯会从熄灭变为点亮(当按之前是熄灭的),或者从点亮到熄灭(当按之前是点亮的)。并且该节点的直接邻居也发生同样的变化。 开始的时候,所有的指示灯都是熄灭的。请编程计算最少要按多少次按钮,才能让所有节点的指示灯变为点亮状态。Input输入文件有多组数据。 输入第一行包原创 2017-06-14 21:40:09 · 574 阅读 · 0 评论 -
BZOJ 3648: 寝室管理 树的点分治+乱搞
DescriptionT64有一个好朋友,叫T128。T128是寄宿生,并且最近被老师叫过去当宿管了。宿管可不是一件很好做的工作,碰巧T128有一个工作上的问题想请T64帮忙解决。T128的寝室条件不是很好,所以没有很多钱来装修。礼间寝室仅由n-1条双向道路连接,而且任意两间寝室之间都可以互达。最近,T128被要求对一条路径上的所有寝室进行管理,这条路径不会重复经过某个点或某条边。但他不记得是哪条原创 2017-06-14 21:45:10 · 594 阅读 · 0 评论 -
BZOJ 2597: [Wc2007]剪刀石头布 费用流
Description在一些一对一游戏的比赛(如下棋、乒乓球和羽毛球的单打)中,我们经常会遇到A胜过B,B胜过C而C又胜过A的有趣情况,不妨形象的称之为剪刀石头布情况。有的时候,无聊的人们会津津乐道于统计有多少这样的剪刀石头布情况发生,即有多少对无序三元组(A, B, C),满足其中的一个人在比赛中赢了另一个人,另一个人赢了第三个人而第三个人又胜过了第一个人。注意这里无序的意思是说三元组中元素的顺序原创 2017-06-23 20:58:44 · 856 阅读 · 0 评论 -
BZOJ 1566: [NOI2009]管道取珠 另类DP
题目:戳这里 题解:比较神的想法,因为最后答案是所有数的平方,那么我们就可以将问题转化一下,变成俩个人取数,两人拿出的结果相同的方案书目,YY一下就能证明这个转化的正确性,这就很好办了,瞎DP一下就行了。#include<cstdio>#include<cstdlib>#include<ctime>#include<cmath>#include<cstring>#include<stri原创 2017-06-23 20:48:12 · 705 阅读 · 1 评论 -
BZOJ 3328: PYXFIB 二项式定理 原根 构造
题目大意:自己看去 题解:这真是一道神题,由于有大量的数学公式,不太好写(我懒,就附个链接吧题解戳我#include<cstdio>#include<cstdlib>#include<iostream>#include<iomanip>#include<cstring>#include<string>#include<algorithm>#include<ctime>#includ原创 2017-06-23 20:42:57 · 553 阅读 · 0 评论 -
BZOJ 3697: 采药人的路径 树的点分治
Description采药人的药田是一个树状结构,每条路径上都种植着同种药材。 采药人以自己对药材独到的见解,对每种药材进行了分类。大致分为两类,一种是阴性的,一种是阳性的。 采药人每天都要进行采药活动。他选择的路径是很有讲究的,他认为阴阳平衡是很重要的,所以他走的一定是两种药材数目相等的路径。采药工作是很辛苦的,所以他希望他选出的路径中有一个可以作为休息站的节点(不包括起点和终点),满足起点到原创 2017-05-30 11:01:29 · 376 阅读 · 0 评论 -
BZOJ 3209: 花神的数论题 数位DP
Description背景 众所周知,花神多年来凭借无边的神力狂虐各大 OJ、OI、CF、TC …… 当然也包括 CH 啦。 描述 话说花神这天又来讲课了。课后照例有超级难的神题啦…… 我等蒟蒻又遭殃了。 花神的题目是这样的 设 sum(i) 表示 i 的二进制表示中 1 的个数。给出一个正整数 N ,花神要问你 派(Sum(i)),也就是 sum(1)—sum(N) 的乘积。Input原创 2017-05-30 11:06:08 · 422 阅读 · 0 评论 -
BZOJ 3884: 上帝与集合的正确用法
题目大意:求2的2的2的2的。。。。(无穷多个)次方对p取模的值。 题解: 扩展欧拉定理有(a^b)%p=(a^(b%phi(p)+phi(p)))%p,不停递归下去知道p等于1,这样的话不会超过2*log(n)层,最简单的证明:奇数取phi最小减一,偶数最小减一半。#include<iostream>#include<iomanip>#include<ctime>#include<cma原创 2017-05-30 11:11:33 · 382 阅读 · 0 评论 -
BZOJ 3709: [PA2014]Bohater 贪心
Description在一款电脑游戏中,你需要打败n只怪物(从1到n编号)。为了打败第i只怪物,你需要消耗d[i]点生命值,但怪物死后会掉落血药,使你恢复a[i]点生命值。任何时候你的生命值都不能降到0(或0以下)。请问是否存在一种打怪顺序,使得你可以打完这n只怪物而不死掉Input第一行两个整数n,z(1<=n,z<=100000),分别表示怪物的数量和你的初始生命值。 接下来n行,每行两个整数原创 2017-05-30 11:16:46 · 658 阅读 · 0 评论 -
BZOJ 4653: [Noi2016]区间 线段树
Description在数轴上有 n个闭区间 [l1,r1],[l2,r2],…,[ln,rn]。现在要从中选出 m 个区间,使得这 m个区间共同包含至少一个位置。换句话说,就是使得存在一个 x,使得对于每一个被选中的区间 [li,ri],都有 li≤x≤ri。 对于一个合法的选取方案,它的花费为被选中的最长区间长度减去被选中的最短区间长度。区间 [li,ri] 的长度定义为 ri−li,即等于它原创 2017-05-30 11:21:51 · 492 阅读 · 0 评论 -
BZOJ 3669: [Noi2014]魔法森林 LCT
Description为了得到书法大家的真传,小E同学下定决心去拜访住在魔法森林中的隐士。魔法森林可以被看成一个包含个N节点M条边的无向图,节点标号为1..N,边标号为1..M。初始时小E同学在号节点1,隐士则住在号节点N。小E需要通过这一片魔法森林,才能够拜访到隐士。 魔法森林中居住了一些妖怪。每当有人经过一条边的时候,这条边上的妖怪就会对其发起攻击。幸运的是,在号节点住着两种守护精灵:A型守护原创 2017-05-30 11:27:31 · 512 阅读 · 0 评论 -
3672: [Noi2014]购票 树剖+线段树+斜率优化
Description今年夏天,NOI在SZ市迎来了她30周岁的生日。来自全国 n 个城市的OIer们都会从各地出发,到SZ市参加这次盛会。 全国的城市构成了一棵以SZ市为根的有根树,每个城市与它的父亲用道路连接。为了方便起见,我们将全国的 n 个城市用 1 到 n 的整数编号。其中SZ市的编号为 1。对于除SZ市之外的任意一个城市 v,我们给出了它在这棵树上的父亲城市 fv 以及原创 2017-05-30 11:33:22 · 516 阅读 · 0 评论