自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 bzoj 3879: SvT 后缀自动机+后缀树+虚树

题目大意:给定一个字符串,多次询问一些后缀两两之间的最长前缀和。 题解:首先可以很简单的看出是后缀树,然后就很自然地想到用后缀自动机来构建后缀树,然后就变成了一道裸的虚树DP。真是说起来容易啊,写的时候要注意一些问题,代表后缀的节点为第一次插入的节点,中间建的nq起到辅助节点的作用,然后,,,好像也没啥了,写了就知道了QAQ#include<cstdio>#include<cstdlib>#i

2017-04-12 22:00:27 538

原创 【BZOJ 2716/2648】 [Violet 3]天使玩偶 SJY摆棋子

题目大意:给定平面上一堆点,支持插入点和查询一个点的最近点离它的曼哈顿距离。 题解:KD-Tree裸题,第一次写KD-Tree,总的来说这是一种玄学时间复杂度的东西,为什么叫KD-Tree呢,因为它可以支持K维平面上的查询,为了让每个区域尽可能的均衡,我们采用每次变更比较维度的方法,就比如说我们在一个二维平面上横着切一刀再竖着切一刀,让平面的每个区间尽可能的点数相同,然后每一个点代表的就是一个K维

2017-03-17 15:56:46 2533

原创 模拟题 疯狂bb的zy prufer序列 DP

题目大意:给定n个点的度数上限,求出由1~n个点能构成的树有多少种。n<=100 这道题题解给的其实是一个非常恶心的生成函数+NTT,时间复杂度n^3logn,但是有另一种n^4的DP并且由于小常成功虐了正解,这里我们给出代码复杂度小的多的第二种题解。 首先我们要引入一个新的知识点叫prufer序列,每一棵树都唯一对应着一个prufer序列,每一个prufer序列也都唯一对应着一棵树,具体操作就

2017-03-14 17:34:48 870

原创 【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 644

原创 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 395

原创 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 352

原创 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 432

转载 FFT 【JSOI2012】bzoj4332 分零食

题目大意:有n个小朋友,m块糖。 给小朋友分糖,如果一个小朋友分不到糖,那他后面的小朋友也分不到糖。 每个小朋友有一个喜悦值,有三个参数,O,S,U,设一个小朋友分到糖数为x,则这个小朋友的喜悦值为O*x x+ S x +U,分不到糖的小朋友的喜悦值为1。 求所有分糖方案下 所有小朋友喜悦值乘积 的和。题目分析:如果没有小朋友必须是前面的连续的一段这个要求,那就是一个FFT模板,把喜悦值

2017-03-03 17:26:23 325

原创 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 432

原创 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 388

原创 【bzoj1823】[JSOI2010]满汉全席 2-SAT

第一次写2-SAT,总结起来这个东西就是找到一些条件使得a成立b一定成立,这样的话如果a成立并且a’也成立,a’成立a也成立即这两个点在同一个强连通分量中,那么无解,反之就一定可以构造出一组解,所以这道题我们只要将两个条件必须满足其一转化为a’->b,b’->a然后跑一边tarjan就好了。#include<cstdio>#include<cstdlib>#include<ctime>#inc

2017-02-22 13:41:42 383

原创 天上红绯 网络流

题目大意:给定一些点,有两个选择,每种选择会获得一个收益,还有若干个组合,每个组合也有两种选择,若这个组合中两个元素不选择同一种方案会扣掉一些收益。求最大收益。 最大权闭合子图裸题不解释,唯一值得一提的是如何表示两个点不同时选会扣掉的收益,我在考试的时候想到的办法是先让答案加上扣费,每种组合的收益加上扣费,这样的话选择其中一种相当于没有扣费,两种都不选择就相当于扣了这个费用,题解中说将两个点之间连

2017-02-22 13:28:37 635

原创 BZOJ 1455: 罗马游戏 左偏树 or pb_ds

这道题看到支持合并操作就知道是启发式合并,就去学了一下左偏树,左偏树,顾名思义就是树是向左偏的,实质上是一个堆,我们只需对一个节点维护一个权值,这个权值等于其右儿子的权值加一,一旦发现左儿子的该权值比右儿子小就交换左右儿子,这样就能保证树的左偏性,当合并两颗左偏树的时候,我们先找出根节点权值较小的一个,然后将另一个插入到其右节点即可,并在回溯的过程中维护一下左偏性,这个过程虽然看起来比较麻烦,但是实

2017-01-19 22:54:29 607

原创 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 294

原创 BZOJ2301: [HAOI2011]Problem b 莫比乌斯反演+容斥原理

第一次写莫比乌斯反演,感觉这个东西真的神奇,之前就因为使用莫比乌斯函数做容斥原理就久闻莫比乌斯反演大名,今日终于大概搞懂了莫比乌斯反演,其实说白了就是两个函数满足如下条件时 有如下反演存在 这个式子就叫做莫比乌斯反演,其中u为莫比乌斯函数。 这只是一种最常用的表示的方法,还有一种表示方法在信息学竞赛中更为常用,其形式如下 这道题用到的即为这种表示方法,让我们来看看莫比乌斯反演是如

2017-01-19 22:14:10 509

原创 1.18 NOI省选模拟赛 响子 千秋 千纱

首先吐槽一下这题目名称是什么鬼。。。。 这次的题相比上一次的简单多了(上一次的模拟赛我还没有改完,等改完了再发上一次的模拟赛)。 prob 1: 【题目描述】 求[1,n]中有多少个数x满足∃y>0,k>1使得x=y^k。 【输入格式】 一行一个整数n。 【输出格式】 一行一个整数代表答案。 【样例输入】 10 【样例输出】 4 【样例解释】 1、4、8、9。 【数据范

2017-01-18 16:43:12 696

原创 BZOJ 3832: [Poi2014]Rally拓扑排序

这道题真的是神思路,不看题解真的是做不出来,我们这样想,我们首先看得出这是一个拓扑图,但是由于拓扑图可能有多个起点和重点,我们搞一个超级源点和超级汇点,这样答案就变成了超级源点到超级汇点的最长路。我们将这个拓扑图分成两个集合,那么这两个集合之间的连边就一定包括当前图的最大路径(因为这条路径必跨越两个集合),那么我们只要维护这两个集合就可以了。我们可以先预处理出来一个f数组和一个g数组,分别代表一个点

2017-01-16 22:19:03 420

原创 BZOJ 3450: Tyvj1952 Easy 期望DP

一道期望DP入门题,我们维护两个数组,一个是len数组,代表到达第i位期望连续长度为多少,len数组相当好维护,如果这位是o,那么len[i]=len[i-1]+1,如果这位是x,那么len[i]=0,如果这位是?那么len[i]就等于上述两种情况的值加和除以2,然后我们再维护一个ans数组,代表达到第i位的期望得分是多少,这个数组的维护也很显然,如果这位是o,那么ans[i]=ans[i-1]+2

2017-01-16 21:37:50 397

原创 BZOJ 2527: [Poi2011]Meteors 整体二分

题目大意:给定一个环,环上每个位置有一个国家的基地,每次流星雨会让一段区间每个收获到一个数值的收益,给定每个国家的需要收益总数,求出每个国家最早在第几次流星雨之后能获得要求的收益。 题解:这道题有好多个国家都要求出答案,而且每个国家的答案都具有单调性,所以我们想到了整体二分,不过最变态的是时间复杂度的证明,我们首先要将给定区间每个国家都扫一遍所有领土上的收益之和,然后相加,看上去很大的样子,但是我

2017-01-16 21:29:52 495

原创 POJ 2187Beauty Contest旋转卡壳

题目大意:给定平面上n个点,求最远的两个点的距离的平方。 旋转卡壳裸题,第一次写旋转卡壳,好鸡冻,得到的教训是斜率一定要注意INF和-INF的区别(因为这个是向量),顺便说一下旋转卡壳的做法,我们先求出一个凸包,然后在上凸壳和下凸壳一块扫,先让上凸壳跑到下一条线,再看下凸壳是否也应该跑到下一条线(感觉表达力吃鸡),总之扫一遍就好了,然后对于每个卡到的点对求一边距离的平方,就完事了。#include

2017-01-16 20:30:23 412

原创 BZOJ 2618: [Cqoi2006]凸多边形

真●半平面交,半平面交模板题,按照题目描述将每个多边形拆分成n个向量,我们规定向量的左侧为其指定的区域,参照了Po姐的写法,因为双端队列实在是不好搞,我们先在一个方向加线,然后再在最后删队首队尾,值得注意的是用向量求交点和用向量判断一个点是否在这条向量的左面。#include<cstdio>#include<cstdlib>#include<cstring>#include<string>#

2017-01-12 10:23:19 386

原创 BZOJ 1007: [HNOI2008]水平可见直线

这题应该可以算是一道半平面交的入门铺垫题(阉割版),因为每条直线确定的平面都位于其上方,所以免去了向量的麻烦。具体方法就是先按照斜率排序,判断新加入的直线与栈顶直线交点是否在之前的栈顶与栈顶下面的直线交点的左侧,如果在左侧就弹掉栈顶。多条斜率相同的直线则取b最大的一个。#include<cstdio>#include<cstdlib>#include<cstring>#include<stri

2017-01-12 10:13:10 391

原创 poj 1201 Intervals 差分约束

真 .读题杀,英文题一脸懵逼,看来以后还要多读读英文题,不过读完了就能发现这其实是一道很裸的差分约束,按照题意建边即可,但还要注意的就是后一个要大于等于前一个,并且每个位置不能超过一个元素。求一边最大流即可。#include<cstdio>#include<cstdlib>#include<cmath>#include<ctime>#include<iostream>#include<io

2017-01-12 09:48:05 333

原创 BZOJ 2330: [SCOI2011]糖果

第一次写差分约束,收获很多,首先我们表示一个人一定要比另一个人少只需要从这个人向另一个人连一条边权为1的边,小于等于就连一条边权为0的边,等于就连两条,但是为什么求最小值却要求最大流呢?因为我们可以想象一下我们规定的这些限制条件在最小流时可能并不能得到满足(模拟一下便知)只有当求最大流时能满足所有限制条件得到一组可行解,因为我们没连没有用的其他边,所以这也是满足所有条件的最小值,然后题目中还有一个条

2017-01-12 09:26:50 330

原创 BZOJ 2194: 快速傅立叶之二

这道题体现了快速傅里叶变换最重要的应用:求卷积。所谓卷积根本没有必要去看百度上那晦涩难懂的定义,只要拿多项式联想一下就好了,我们求快速傅里叶变换实际上就是求出了两个多项式相乘之后对应次数未知数的系数,这就叫做两个多项式的卷积,那么什么样的多项式能用的上卷积呢,就是要求的东西下标相加之后为定值,用FFT求完之后的结果就是每一个定值的系数。就像这道题,虽然i+i-k并不是一个定值,但是如果我们将a数组倒

2017-01-12 09:09:03 532

原创 BZOJ 2179: FFT快速傅立叶

快速傅里叶变换裸体,总结一下快速傅里叶变换的核心思想。 首先我们要搞明白的就是快速傅里叶变换的思想就是先将一个多项式转化为点-值表达式(DFT),然后再将点值表达式逆变换为多项式(IDFT),快速傅里叶变换就是用来优化这个过程的,就是让我们快速求出来一个点值表达式,然后再快速的变换回去。那么我们看如何做。首先我们要带入一些x才能解出y得到点值表达式,那么我们就要想一些合适的x能快速的计算,这里我们

2017-01-12 08:58:21 614

原创 BZOJ 3932: [CQOI2015]任务查询系统

一道可持久化线段树裸题,搞出来每一个位置的权值线段树然后正常查找就行了。#include<cstdio>#include<cstdlib>#include<cstring>#include<string>#include<iostream>#include<iomanip>#include<ctime>#include<cmath>#include<algorithm>using

2017-01-05 19:43:25 429

原创 【网络流24题】骑士共存问题

(网络流24题大多需要spj,所以需要一个有spj的oj,本系列代码均在www.oj.swust.edu.cn测试通过) 这道题一看到不能共存就知道肯定是最小割了,然后就是怎么建图的问题了,题目良心,给出了一个图,这个图已经染了色,我们可以清楚地看到按照图中的方式染色的话,一个骑士能攻击到的其他位置必定和其所在点的颜色不同,所以按照这个图的方式染色,若左面的点会攻击到右面的点,则向能攻击到的点都

2017-01-05 19:18:33 583

原创 【网络流24题】火星探险问题

由于这道题的输出太过庞大而且之前提供的oj也没有spj,无法验证代码正确性,所以这道题仅提供思路,就不附代码了,这道题其实和之前几道网格题是挺像的,只不过这道题有的地方有石头,有的地方没有石头,有的地方还不能走,那么我们就像之前的那样建图,把一个点拆分成两个点,每两个点之间连一条INF,费用为0的边,如果一个点有石头就多开出一条容量为1,费用为1的边,这样跑出最大费用最大流再在残量网络中找一找路径就

2017-01-05 19:12:40 948

原创 【网络流24题】最长k可重线段集问题(未解决)

这道题好多题解都说同上一题,可是这道题真的不一样啊(捂脸熊) 这题和上一题最大的不同就是这道题有一种线段叫做垂直x轴的线段,也就是有自环的存在,正常费用流在加流的时候也会造成死循环,但是后者可以解决,就是去掉from数组,而是把from信息加在边上,但是前者实在想不到怎么解决,希望会的人可以提出来。

2017-01-05 19:03:03 713

原创 【网络流24题】最长k可重区间集问题

(网络流24题大多需要spj,所以需要一个有spj的oj,本系列代码均在www.oj.swust.edu.cn测试通过) 这道题可以说是经典中的经典了,我们可以这样想,由于要求包含一个点的区间最多不超过k个,那么我们就可以只给这个序列k的流量,一旦选择了一条线段就在这条线段的区间范围内减少一点流量,这样就能保证没有任何一点上面的区间会超过k个,那么具体怎么实现呢,由于我们不清楚区间的大小,所以我们

2017-01-05 17:56:43 723

原创 【网络流24题】深海机器人问题

(网络流24题大多需要spj,所以需要一个有spj的oj,本系列代码均在www.oj.swust.edu.cn测试通过) 这道题其实和数字梯形的第三个规律挺像的(点和路径均可重合),唯一的差别就是这道题的路径权值只能计算一次,那怎么办呢,其实不难,我们只要将容量为INF的边的权值修改为0,在此基础上再加一条容量为1,权值为给定权值的边即可。跑一边最大费用最大流就可以啦。#include<cstdi

2017-01-05 17:49:40 378

原创 【网络流24题】负载平衡问题

(网络流24题大多需要spj,所以需要一个有spj的oj,本系列代码均在www.oj.swust.edu.cn测试通过) 这题的思路挺好的,就是说我们可以看得出来数值高于平均数和数值低于平均数是对立的状态,所以借助这种关系把这个环拆分成两半,左边的由源点向其链接一条容量为与平均值之差费用为0的流,右边的点则向汇点连,原环中相邻的点之间链接一条容量为INF,费用为1的流,这样跑一边最小费用最大流即可

2017-01-05 17:44:07 487

原创 【网络流24题】分配问题

(网络流24题大多需要spj,所以需要一个有spj的oj,本系列代码均在www.oj.swust.edu.cn测试通过) 也是一道相当裸的网络流,自己看代码吧#include<cstdio>#include<cstdlib>#include<ctime>#include<cmath>#include<cstring>#include<string>#include<iostream>

2017-01-05 17:38:40 522

原创 【网络流24题】运输问题

(网络流24题大多需要spj,所以需要一个有spj的oj,本系列代码均在www.oj.swust.edu.cn测试通过) 非常裸的一道费用流,只不过要跑一遍最大流一遍最小流,所以这里就不赘述了,看代码吧。#include<cstdio>#include<cstdlib>#include<ctime>#include<cmath>#include<cstring>#include<stri

2017-01-05 17:37:06 313

原创 【网络流24题】数字梯形问题

(网络流24题大多需要spj,所以需要一个有spj的oj,本系列代码均在www.oj.swust.edu.cn测试通过) 这绝对是我见过最不要脸的网络流了,一道题竟然赤裸裸的让你建三个图,算了,还是耐着性子把它做完了。 我们首先要想明白的问题就是如果两条路径没有任何公共点,那么这两条路径一定不会相交,因为这道题的路径是定义在点之上的,当且仅当两条路径包含两个相同的且上下相邻的点时两条路径才有公共

2017-01-05 17:33:59 708

原创 【网络流24题】汽车加油行驶问题

(网络流24题大多需要spj,所以需要一个有spj的oj,本系列代码均在www.oj.swust.edu.cn测试通过) 不知道为什么回混进来这么多奇怪的问题,老子的网络流呢? 这道题只要把搞一个状态f[i][j][k]表示坐标为(i,j)的点剩余油量为k,按照题目描述跑一边最短路即可。 唉,不含加油费活生生让我看成了不用加油费,读题杀要死人啊。#include<cstdio>#includ

2017-01-05 17:20:00 509

原创 【网络流24题】孤岛营救问题

(网络流24题大多需要spj,所以需要一个有spj的oj,本系列代码均在www.oj.swust.edu.cn测试通过) 又是一道混进来的奇奇怪怪的东西,想起来以前做过这道题,用的是bfs,所以就不想写了,附上之前的代码。#include<cstdio>#include<cstdlib>#include<iostream>#include<iomanip>#include<cstring

2017-01-05 17:13:38 639

原创 【网络流24题】星际转移问题

(网络流24题大多需要spj,所以需要一个有spj的oj,本系列代码均在www.oj.swust.edu.cn测试通过) 这是我最想吐槽的一道题,至于为什么请把PDF的样例或者网站上的样例粘贴到文档中认真观看最后一个-1 -_- 网络流没写错,竟然被卡输入了。。。(捂脸熊) 这道题我们可以看得出天与天之间是独立的,而且每次状态的转移都是跨天的,所以我们可以将每一天拆分来看,(据说这叫分层图

2017-01-05 17:09:37 842

原创 【网络流24题】软件补丁问题

(网络流24题大多需要spj,所以需要一个有spj的oj,本系列代码均在www.oj.swust.edu.cn测试通过) 不知道为什么会有这种奇怪的东西混进我的网络流,但既然出现了就写一下吧,大体思路就是用二进制表示状态,然后每个状态可以转移到另一个状态,求一个最短路即可。 TMD我F1和F2看反了,读题杀真是没救了。#include<cstdio>#include<cstdlib>#in

2017-01-05 16:53:23 982

空空如也

空空如也

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

TA关注的人

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