自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

neither_nor

alone_wolf

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

原创 BZOJ3658 Jabberwocky

考虑对于向上包含和向下包含分开计算不包含所有颜色即有一种颜色一定不包含,考虑枚举这个不被包含的颜色,计算向下包含的最大答案将所有同颜色的店以x为第一关键字y为第二关键字排序,然后枚举右端点,如果一个点在另一个点的右下方,那么左上方的点就没有用了,因为如果以他右边的点为右边界,他上边的点为上边界的话,左边界不可能在他左边。所以我们维护一个单调栈,加入一个点x的时候把所有y大于等于这个点的

2016-06-30 16:33:06 505

原创 BZOJ3174 [Tjoi2013]拯救小矮人

orz commonc神犇做了一年的题首先我们考虑假设已经确定了哪些小xrf走,哪些小xrf留下,那么我们考虑走的那些小矮人走的顺序考虑x比y先走的条件,假设x和y是第一个和第二个走的,如果x比y先走,那么要求底下的人的高度加上Ax+Bx+Ay和By+Bx都能够到顶,如果y比x先走,那么要求底下的人的高度加上Ay+By+Ax和Ay+Ax都能够到顶,所以如果min(Ax+Ay,By)+Bx>

2016-06-23 19:11:55 672 1

原创 BZOJ1058 [ZJOI2007]报表统计

因为没有删除操作所以拿数组记录下每个位置的第一个和最后一个然后拿set搞一下就可以了忘加abs调了好久-_-mlgb#include#include#include#include#include#include#include#include#include#include#include#include#include#includeusing namesp

2016-06-23 18:23:35 838

原创 BZOJ4584 [Apio2016]赛艇

离散化,考虑DP,f[i][j][k]表示到第i个学校,第i个学校出的船数在第j个区间里,第j个区间里有k个学校出船的方案数f[i][j][k](k!=1)=sigma i'=1 to i-1 f[i'][j][k-1]*(len[j]-k+1)/k,因为如果确定了k个数都是哪些数那么顺序就是确定的,所以相当于组合数,新来一个数相当于再多选一个数f[i][j][1]=sigma i'=1

2016-06-23 15:47:48 972

原创 BZOJ1054 [HAOI2008]移动玩具

随便写个迭代A*搜一下就可以过了#include#include#include#include#include#include#include#include#include#include#include#include#include#includeusing namespace std;#define MAXN 1010#define MAXM 1010

2016-06-23 10:34:53 1188

原创 BZOJ1044 [HAOI2008]木棍分割

第一页的水题现在才过记得刚学的时候觉得二分之后的DP不会于是就没做这道题第一问经典二分,第二问f[i][j]表示到第i个人分了j段的方案数,记录一下f[i-1]的前缀和,用一个指针维护i往前最多能延伸多少个木棍而不超过长度限制,更新即可要滚动数组#include#include#include#include#include#include#include#inclu

2016-06-23 09:34:16 498

原创 BZOJ1004 [HNOI2008]Cards

终于学会了burnside和ploya,把这题A掉了置换:上边一行a下边一行b,把第a[i]个位置的数换到第b[i]个位置上去一个置换可以唯一表示成若干个不相交的循环,循环就是循环着挪一位的置换算出所有的置换,使得任意一种洗牌方式可以一步完成,设有|G|个置换burnside:答案等于(sigma ci)/|G|ci表示在第i个置换下不变的染色方案数ploya:答案等于(s

2016-06-23 08:57:35 736

原创 BZOJ3992 [SDOI2015]序列统计

额,跟xuruifan学习了一下午相关知识终于搞过去了首先我们得知道原根的相关性质,对于一个素数p,他的一个原根g的0~p-2次幂在模p意义下取遍1~p-1的所有值这样在1~p-1内的每一个值i就唯一对应一个g的幂g^i',这样我们就可以把i*j=k转换成i'+j'=k',然后就变成多项式乘法的形式了当然这是要求集合里没有0的,不过这题数据错了里边有0,直接无视掉就好了于是相当于我

2016-06-22 19:24:31 1144

原创 BZOJ4456 [Zjoi2016]旅行者

好神的分治做法我们把矩形顺着比较短的一边从中间切成两半,从这条中线上每个点做一次到这个矩形内每个点的dijkstra,把两个端点都在这个矩形里的询问用中线上每个点到两个端点的最短路更新,然后分治两半边复杂度分析:瞎YY一下我们知道这个算法每次更新答案要做比较小的一边的边长次dijkstra,所以当是一个正方形的时候分治的复杂度最高,而询问一定是传到底的时候复杂度最高因为每次切一半两边都

2016-06-22 14:21:02 2525

原创 BZOJ4455 [Zjoi2016]小星星

KuribohG神犇说过,看到计数想容斥我们考虑对树的顶点进行标号,标号可重,如果两个点之间在树上有边那么这两个点的标号在图上必须有边这样的话标号不重的方案数就是答案,用所有方案减去有重的,我们考虑容斥,计算任意标号的方案数-sigma 没有标号i,剩余号任意标(也就相当于本来该标i的位置被标了一个和别的点重复的号)的方案数+sigma没有标号i和j,剩余的号任意标的方案数……2^n枚

2016-06-21 18:20:21 1806

原创 BZOJ4621 Tc605

orz wangyurzee的题解对于第i个点,他可能不操作,这样f[k][i]+=f[k][i-1],然后若他操作,则枚举操作之后他的右端点j,设L是他能延伸到的最左的点,f[k+1][j]+=sigma l=L-1to j f[k][l](DP的时候不需要考虑操作的顺序),这个可以用前缀和处理,然后我们要把f[k+1][i]减去f[k][i-1],因为这样转移相当于没操作#incl

2016-06-20 19:02:01 1298

原创 BZOJ2793 [Poi2012]Vouchers

记录每个值的倍数都取到哪了,如果大于最大的幸运数就肯定取不到了,根据调和级数复杂度n log n#include#include#include#include#include#include#include#include#include#include#include#include#include#includeusing namespace std;#de

2016-06-20 17:11:58 749

原创 BZOJ4144 [AMPPZ2014]Petrol

做多源最短路,跑每个点到哪个加油站最近,记录每个点是哪个点来的,如果两个点之间有边并且两个点不是从一个点来的,那么两个加油站连一条边,然后跑最小生成树,在树上倍增即可注意判不联通#include#include#include#include#include#include#include#include#include#include#include#include

2016-06-20 16:37:35 679

原创 BZOJ4585 [Apio2016]烟火表演

“这个凸包的形式,妙啊,他妙啊,妙啊”王梦迪神犇在讲题的时候写的题解挺详细的我们对每个点,有一个把子树内长度统一的花费关于统一成的长度的函数f(x),易知这个函数是下凸的,对于一个点x,设他的儿子是y,算x的函数的时候对所有的y,考虑x与y之间的边来更新f(y)得到F(f(y)),然后对所有F(f(y))相加就得到了f(x)算F(f(x))的方法是找到f(x)的最低的一段,设这段是[L

2016-06-20 13:12:10 1803 2

原创 BZOJ4204 取球游戏

同2510#include#include#include#include#include#include#include#include#include#include#include#include#include#includeusing namespace std;#define MAXN 1010#define MAXM 1010#define ll

2016-06-20 10:51:56 753

原创 BZOJ3907 网格

首先从(0,0)走到(n,m)的方案数是C(n+m,n),然后我们用总方案减去不合法的,不穿过y=x相当于不经过y=x+1,所以用从(-1,0)出发到(n,m)的方案减去从(-1,0)出发到(n,m)不经过y=x+1的方案考虑第一步就往上走的话有C(n+m,m-1)种方案都是不合法的,第一步向右的不合法方案对称之后与第一步向上走的一一对应,所以用C(n+m+1,n+1)减去2*C(n+m,m-

2016-06-18 16:03:48 961

原创 BZOJ3245 最快路线

考虑一下最短路,但是有的边边权是不确定的,我们在spfa的时候把这些边推到另一个队列里,spfa完事之后取出边权不定的边的队列里的一个边,找到能使他边权最小的前一个边后暂时定下这条边的边权,然后从这条边的终点再跑一次spfa(即使不能更新终点的最短路也要跑,因为可能更新终点的连出去的不限速边的数量),除非这个点已经在这一部分入队超过50次了记录一下每一条边的前一条边是哪一个(记录点不行,因为可

2016-06-17 21:58:03 833

原创 BZOJ3221 [Codechef FEB13] Obserbing the tree树上询问

闲来无事水一发毒瘤题链剖+主席树即可区间加一个等差数列标记合并的时候把首项和公差都加起来就好了因为区间修改所以要标记永久化,除了标记以外还要记录子树内因更改所增加的和#include#include#include#include#include#include#include#include#include#include#include#include#

2016-06-17 14:47:25 915

原创 BZOJ2510 弱题

设a[x]为编号为x的球的期望个数,每进行一次操作时候编号为x的球的期望个数就变成了a[x]-a[x]/m+a[x-1]/m,这个东西显然可以构造一个矩阵来转移就这样进行矩阵快速幂的话是n^3*log INF的,由于n=1000过不了(为什么没有n=100,k=INFMAX的部分分-_-)但是我们发现这个矩阵不管自乘多少次第i行都是第i-1行右移一位,第i列都是第i-1列下移一位,

2016-06-17 08:50:09 1221

原创 BZOJ4199 [Noi2015]品酒大会

建一个后缀树,dfs一遍维护子树里有多少个后缀,子数内最大次大最小次小,用siz[x]*(siz[x]-1)/2可以更新mx[fa[x]]+1~mx[x]这段的选法,用max(mx1[x]*mx2[x],mn1[x]*mn2[x])可以更新mx[fa[x]]+1~mx[x]这段的最大值,拿个线段树维护一下,然后爬一遍线段树就可以了感觉自从学会了后缀数组半个月之后学会了后缀自动机就再也没打过后缀

2016-06-16 19:09:37 545

原创 BZOJ4403 序列统计

L~R就相当于0~R-L长度为n,元素的值取0~m的不降序列个数就是对长度为1~n的求和就是上卢卡斯定理#include#include#include#include#include#include#include#include#include#include#include#include#include#includeusing namespac

2016-06-16 17:20:51 1040

原创 BZOJ4501 旅行

由于是一个DAG,我们可以拓扑序求f[x]表示以x为起点的最大期望长度,对于点x,用其所有出边向x转移其实就是选择一些出边保留,剩下的删掉,要你最大化这是一个01分数规划问题,我们设上式>L,然后把所有东西移到不等式左边,就得到答案比L大的条件于是我们就要最大化左边,因为题目保证关联的边起点相同,所以每个点之间互不影响,我们发现y被删掉之后x也会被删掉相当于x被选的条件是y被选,所以用最大

2016-06-15 22:12:38 925

原创 BZOJ4591 [Shoi2015]超能粒子炮·改

由于模数较小,考虑一下卢卡斯定理在模p意义下,将式子化简如图化简过程中由于带模的项可以预处理,所以把带除的项合并到一起n,k小于p的S可以预处理,C可以卢卡斯算#include#include#include#include#include#include#include#include#include#include#include#includ

2016-06-15 18:29:26 1389

原创 BZOJ4558 [JLoi2016]方

KuribohG神犇说过,看到计数想容斥尽管我在考场上也一直在默念这句话,但是并没有卵用,谁让我这么弱呢-_-于是我们考虑考虑容斥,发现答案=随便选-sigma 以第i个坏点为顶点的正方形个数+sigma 同时以i,j为顶点的正方形个数-sigma 同时以i,j,k为顶点的正方形个数+sigma 同时以i,j,k,l为顶点的正方形个数后三项可以枚举两个点,直接得出剩下两个点的位置,

2016-06-14 20:52:12 1296

原创 BZOJ3065 带插入区间K小值

用替罪羊树套权值线段树,每个权值线段树维护替罪羊树上子树内的数,插入的时候直接插,不平衡重建,修改直接改,查询的时候在替罪羊树上把代表区间的子树和单点爬出来然后查询暴力重建的时候如果用线段树合并据说是log^2的,但是我不知道这题怎么合并,于是我写了爆插,据说是log^3的内存要写回收最开始建树的时候不建议爆插,有点慢#include#include#include#incl

2016-06-14 15:12:42 665

原创 BZOJ4556 [Tjoi2016&Heoi2016]字符串

恩,我们进行一些瞎YY,首先询问s[a~b]的所有子串与S[c~d]的最长LCP其实相当于询问s[a~b]的所有后缀与s[c~d]的最长LCP进一步转化设suf[i]表示S的从第i个字符开始的后缀,则其实相当于询问这个可以把d-c+1提到外面,就变成这样只需要考虑左面的,考虑若答案为l(lb-l+1的位置,而在a=l,那么s[i~b]就是一个与s[c~d]有长度为l的LCP的子

2016-06-14 10:10:42 1408

原创 BZOJ4546 codechef XRQRS

转2进制后建trie树和以2的幂为上限建权值线段树本质上是等价的,所以用可持久化trie或者主席树就都可以直接过了内存卡的特别紧,wa也有可能是内存开小了造成的,MAXN开5.2*10^5,开5*10^5我就wa了#include#include#include#include#include#include#include#include#include#include

2016-06-14 09:19:59 812

原创 BZOJ4596 [Shoi2016]黑暗前的幻想乡

KuribohG神犇说过,看到计数想容斥把每个公司能负责的边都视作不同的,这样就变为生成树中每个集合里选一个的方案数考虑容斥,每个集合选一个的等于任意选的方案数-sigma i一定没选的+sigma i,j一定没选的+……2^n枚举那些是一定不选的,每次用matrix-tree算方案,容斥加起来#include#include#include#include#include

2016-06-13 19:55:10 1913

原创 BZOJ3158 千钧一发

n^2建图,拆点,不能一起选的连INF,S和T连每个点流量B,跑最小割#include#include#include#include#include#include#include#include#include#include#include#include#include#includeusing namespace std;#define MAXN 100

2016-06-13 14:46:18 845

原创 BZOJ2851 极限满月

我们造一颗树,把B集合对应到树上,点i的B集合即为i到根的路径上的所有点,这样在构造点x的B集合的时候就相当于把所有A集合里的点取LCA,然后再LCA下面接上x询问就相当于求询问点到根的路径并的长度,构虚树,每个点贡献为其深度减去其虚树上父亲的深度,不需要实际构造虚树,只要求出每个点的虚父亲即可其实可以不用虚树,按dfn排序后所有点的dep减去每个相邻两点的lca的dep即可有点卡常,

2016-06-13 14:25:31 763

原创 BZOJ3624 [Apio2008]免费道路

先用实边跑生成树,然后剩下的连接各个连通块的虚边是一定要选的,充值并查集,把必选的虚边都选上,因为那些连通块用实边就能联通,所以再随便加虚边也无所谓,加虚边到k条,剩下的再用实边做无解就是必选的虚边大于k条或者无法补齐至k条#include#include#include#include#include#include#include#include#include#in

2016-06-12 09:16:49 745

原创 BZOJ3652 大新闻

首先我们打一个i^j的表我们发现,第一,这是一个关于对角线对称的(废话)第二,对于任意一个从左上角开始,边长为2的幂的正方形(比如图中用白框框起来的),其下边和右边的边长为2的幂的正方形就是把这个正方形的每个元素加上这个2的幂第三,对于任意一个从左上角开始,边长为2的幂的正方形,其右下的边长为2的幂的正方形和这个正方形是一样的第四,对于从顶部开始,向下长度为2的幂的一列,0

2016-06-12 08:56:53 1407 1

原创 BZOJ4592 [Shoi2015]脑洞治疗仪

进行治疗实际上相当于用1覆盖一段区间,这段区间内原有的1的个数加上挖出来的1的个数等于这段区间的长度,并且这段区间的长度最长为治疗的区间长度记录一下还剩多少挖出来的1,然后在线段树上爬出这个区间就可以了,因为是线段树上,所以找到一个区间是log的知道了一段区间的长度,区间里有多少1,还剩多少脑组织,就能知道这段区间是否被完全覆盖需要判断是否还剩脑组织,如果没了就返回,要不然复杂度不对

2016-06-12 07:37:44 699

原创 BZOJ3130 [Sdoi2013]费用流

瞎YY一下发现显然在方案确定的情况下把所有费用分配在流量最大的边上最优,于是只要二分最大流量每次容量和二分的值取min跑最大流看是否和原最大流相等即可。流量可以是小数!!坑死我了,我还以为保留小数是逗你玩呢#include#include#include#include#include#include#include#include#include#include#in

2016-06-11 16:07:32 838

原创 PKUSC2016 酱油记

before day 0去东北育才培训……感觉衡水神犇好厉害啊。培训完回家待一天。day0然后早上出发去北京。路上和ljss例行打拳皇,例行被神犇八猪门暴虐。下午报道,发了100块钱饭卡,PKU就是大方,APIO的时候去打ACM还发了一顿KFC。晚上回宾馆,没人打算进行集体颓废活动,于是一个人在屋里打了一晚上rewrite,之前在dkt学长电脑里翻到了静流的CG,于是在APIO的时

2016-06-06 14:21:03 3187 8

空空如也

空空如也

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

TA关注的人

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