自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

beginend

只要在路上,就没有到不了的远方

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

原创 Codeforces 235E Number Challenge 莫比乌斯反演+数论

题意设d(s)表示s的约数个数,给出a,b,c,求∑i=1a∑j=1b∑k=1cd(ijk)∑i=1a∑j=1b∑k=1cd(ijk)\sum_{i=1}^a\sum_{j=1}^b\sum_{k=1}^cd(ijk) a,b,c<=2000分析题解貌似是一个很鬼畜的做法。。。 约数个数函数σ0(d)σ0(d)\sigma_0(d)有一个小结论,就是σ0(ij)=∑p|i...

2018-02-28 20:08:40 416

原创 bzoj 3509: [CodeChef] COUNTARI 分块fft

题意给定一个长度为N的数组A[],求有多少对i, j, k(1<=i < j < k<=N)满足A[k]-A[j]=A[j]-A[i]。 N<=100000,A[i]<=30000分析把式子画一下就变成了A[j]*2=A[k]+A[i],一个很显然的想法就是枚举j然后fft,复杂度是O(NVlogV),显然不能接受。 考虑分块,设块的大小为B,我...

2018-02-28 16:08:52 286

原创 Codeforces 932G Palindrome Partition dp+回文树

题意给出一个长度为偶数的字符串S,要求把S分成k部分,其中k为任意偶数,设为a[1..k],且满足对于任意的i,有a[i]=a[k-i+1]。问划分的方案数。 n<=1000000分析刚了一个下午的题,感觉学到了很多新东西。 首先直接做显然不可做,考虑把S变成S[1]S[n]S[2]S[n-1]…S[n/2]S[n/2+1]的形式,不难发现对于原来划分方案中的a[i]和a...

2018-02-27 19:56:32 799 1

原创 Codeforces 891E Lust 生成函数

题意现在给你一有n个整数的序列a[],有一个初始为0的值res,重复下面的过程k次: “随机选择一个[1,n]之间的下标x,res加上所有满足i≠x的a[i]的乘积,然后将a[x]减去1” 问最后res的期望值,对10^9+7取模 n<=5000 k<=10^9分析我们把对a[x]的一次操作的贡献看成是∏a[i]−∏a′[i]∏a[i]−∏a′[i]\prod ...

2018-02-27 11:53:43 416

原创 AtCoder Regular Contest 065 Shuffling 动态规划

题意给出一个长度为n的01序列,有m次操作,第i次可以把区间[li,ri]中的元素任意排列。问该序列可以通过操作得到多少种不同的序列。 n,m<=3000,保证li单调不降。分析先把操作区间变成左端点和右端点均单调递增,然后设f[i,j]表示前i个位置的元素已经确定,且前i个位置中恰好有j个1的摆放方案。 在一次操作[l,r]时,设下一个区间的左端点为nx,我们考虑由f[l-...

2018-02-27 09:39:49 317

原创 AtCoder Regular Contest 063 Integers on a Tree 树形dp+构造

题意给出一棵树,有一些点上的权值已经固定。问是否存在一种分配权值的方案,使得有边相连的两个点权值的绝对值等于1。 n<=100000分析首先如果存在两个点,他们深度差的奇偶性和权值差的奇偶性不相同,那么必然无解。 然后我们可以自下而上dp出每个点权值的取值范围,然后自上而下构造即可。代码#include<iostream>#include&l...

2018-02-26 21:33:28 285

原创 AtCoder Regular Contest 064 F - Rotated Palindromes 乱搞

题意给出n和k,问有多少个序列可以由长度为n且元素均在[1,k]范围内的回文串旋转得到。 n,k<=10^9分析这种题的套路一般就是枚举周期。 设f[i]f[i]f[i]表示周期为i的回文串数量。 那么f[i]=ki+12−∑j|i,j<if[j]f[i]=ki+12−∑j|i,j<if[j]f[i]=k^{\frac{i+1}{2}}-\sum_{j|i,...

2018-02-26 20:48:57 223

原创 hdu 6036 Division Game 容斥原理+NTT

题意有k堆花,编号为1到k-1,每堆花都是完全一样的且包含n朵花,分成m种颜色,每种颜色有sisis_i朵花。现在要进行操作,第i轮操作可以在第(i-1) mod k堆花中取走任意朵。当有一堆花被取完后游戏结束。问对于每一堆花,有多少种不同的操作可能使得游戏在该处结束。NTT模数。 n<=100000,m,k<=10分析设f(x)f(x)f(x)表示在一堆花处恰好操作...

2018-02-26 17:15:40 341

原创 Codeforces 650E Clockwork Bomb 并查集+set

题意给你两棵大小为n的树,每次操作可以把第一棵树的一条边删掉然后加上另一条边,且满足操作完之后仍是一棵树。问最少需要多少步操作才能把第一棵树变成第二棵树并输出方案。 n<=500000分析如果我们每次随便选一条在第二棵树中出现但不在第一棵树中出现的边,设为(x,y),那么第一棵树中x到y路径上必然存在一条边满足其只在第一棵树中出现。 很自然的想法就是去维护这个东西,然后我...

2018-02-26 16:21:26 336

原创 AtCoder Regular Contest 067 F - Yakiniku Restaurants 乱搞

题意有n家饭店和m张餐劵,第i家饭店和第i+1家饭店的距离为Ai,在第i家饭店用第j张餐劵可以得到w[i,j]的美味度。现在要用完这m张餐劵,问最大的(美味度之和)-(走过的距离)是多少。 n<=5000,m<=200,w[i,j],Ai<=10^9分析不难发现我们经过的饭店一定是一段连续的区间。那么每张餐劵肯定会被用在这段区间中用这张餐劵收益最大的地方。 一...

2018-02-24 11:01:00 422

原创 AtCoder Regular Contest 068 F - Solitaire 动态规划

题意一开始要把1到n从小到大放入一个双端队列,然后再逐个取出来。问取数序列中有多少个满足第k位恰好是1。 n<=2000分析不难发现把n个数放进双端队列后会变成V字形,其中1恰好是中间点。既然1要恰好在第k个位置,那么前k个位置就可以被划分成两个单调下降序列,第k个位置以后的数都要满足小于两个序列其中一个的最小值。 考虑让每一个序列都和一个划分唯一对应,方法是能放第一个序...

2018-02-23 12:25:52 549

原创 AtCoder Regular Contest 068 E - Snuke Line 离线+树状数组

题意有m+1个车站,编号为0到m,有n种纪念品,第i种在编号在区间[li,ri]的车站中可以买到。现在有m辆车,第i辆会从车站0出发,每隔i站停靠一次,问在该车上的旅客最多可以买到多少种不同的纪念品。 n<=300000,m<=100000分析我们可以考虑求第i辆车的旅客买不到哪些纪念品。一个区间不包含整除i的点,要么区间在两个可以整除i的点之间,要么在最后一个可以整...

2018-02-23 09:45:38 374

原创 AtCoder Regular Contest 073 F - Many Moves 线段树优化dp

题意平面上有n个点,一开始有两个人,分别在点a和点b,移动速度为1距离/单位时间。有q个操作,每次要求要求将其中一个人移动到某一个特定的位置。问最少的总花费时间是多少。 n,q<=200000分析设f[i]表示在做完第i次操作后,一个人在x[i],另一个人在x[i-1]时的最小花费是多少,sum[i]表示一个人从x[1]开始,按顺序做完[1,i]操作的花费时间。 不难得到...

2018-02-22 22:13:10 355

原创 Codeforces 932E Team Work 组合数学+动态规划

题意给定n和k,求∑ni=1Cin∗ik∑i=1nCni∗ik\sum_{i=1}^nC_n^i*i^k,取模。 n<=10^9,k<=5000分析这题有一种对二项式定理求k阶导的做法,但是好麻烦。 可以考虑到这个式子的组合意义,ikiki^k表示k个带标号球放到i个带标号盒子(可以有空盒)的方案,CinCniC_n^i看成从n个带标号盒子里选出i个的方案。 随便...

2018-02-22 16:49:52 542 1

原创 CS Academy Round 70 Squared Ends dp+cdq分治+凸包+二分

题意给出一个长度为n的序列a[1..n],现在要将这个序列分成k段,第i段[li,ri][li,ri][l_i,r_i]的贡献为(a[ri]−a[li])2(a[ri]−a[li])2(a[r_i]-a[l_i])^2。要求最小化每一段贡献的和。 n<=10000,k<=100分析设dp[i,j]dp[i,j]dp[i,j]表示前i个位置分成j段的最小贡献和。 不难得到...

2018-02-22 11:32:56 260

原创 AtCoder Regular Contest 074 F - Lotus Leaves 最小割

题意有一个n*m的矩阵,其中有一些点可以走,有一个起点一个终点。每个点可以走到和他在同一行或同一列的点。问最少删掉多少个点使得起点不能到达终点。 n,m<=100分析按行和列建二分图,直接上最小割即可。代码#include<iostream>#include<cstdio>#include<cstdlib>#incl...

2018-02-22 01:38:00 256

原创 AtCoder Regular Contest 074 E - RGB Sequence 动态规划

题意有一个长度为n的序列,现在可以给每个位置染上三种颜色中的一种。有m个限制,第i个限制表示在区间[li,ri]中必须恰好有xi种颜色。问满足所有限制的染色方案数。 n,m<=300分析考虑从前往后计数。当到达一个位置时,考虑以当前位置为右端点的限制。 不难发现一个性质,颜色数恰好为1的左端点必然是连续的一段,2,3同理。那么我们就可以设dp[i,j,k]表示做到第i位,...

2018-02-21 21:28:18 333

原创 AtCoder Regular Contest 077 E - guruguru 二阶差分

题意有m个点围成一个圈,按顺时针编号为1到m,一开始可以固定一个位置x,每次操作可以往顺时针方向走一步或直接走到x。现在给出n个位置a[1..n],初始时在a[1],第i次要从a[i]走到a[i+1],在x可以任意选择的情况下使总步数最小。 n,m<=100000分析考虑走一次,从a[i]走到a[i+1],只有当x位于这条路径上时,我们会选择走x,且离终点越近贡献越大。不难...

2018-02-21 09:39:41 399

原创 AtCoder Regular Contest 078 F - Mole and Abandoned Mine 状压dp

题意给出一个无向连通图,每条边都有一个删掉的代价。问最少花费多少代价来删边使得1到n恰好只存在一条简单路径。 n<=15分析正着搞不好搞,我们考虑最多能加多少边。 我的做法是状压出每一条路径,发现要想只存在一条简单路径的话,该路径上任意两个点都不能在同一个点双连通分量内。那么我们每次就可以给某个点连上一个连通块。然后就每次枚举哪一个连通快接到哪一个点上,这样的话复杂度会多...

2018-02-20 16:58:39 289

原创 AtCoder Regular Contest 079 F - Namori Grundy 乱搞

题意给出一棵外向环套树,问能否给每一个点定一个权值,使得每个点的权值都满足其恰好是该点所有后继节点的mex。 n<=200000分析对于不在环上的节点,它的权值是唯一确定的。对于环上的任意一个点,它的权值有两种可能,一种是它的所有非环上后继的mex,另一种是第二大的未出现过的数。那么只要枚举两种情况,看是否合法即可。代码#include<iostrea...

2018-02-20 14:44:30 361

原创 AtCoder Regular Contest 082 E - ConvexScore 乱搞

题意自己看。分析不难发现我们要求的实际就是有多少个集合存在凸包。 然后就可以爱怎么做怎么做了。代码#include<iostream>#include<cstdio>#include<cstdlib>#include<cstring>#include<algorithm>using namesp...

2018-02-20 12:32:36 171

原创 AtCoder Regular Contest 081 F - Flip and Rectangles 动态规划

题意给出一个01矩阵,可以将任意行任意列取反,问最大全1子矩形的面积是多少。 n,m<=2000分析有一个结论就是,若一个子矩形S中的任意一个2*2的子矩形都含有偶数个1,则存在一种操作使得S中全为1。 证明: 若S中一个2*2的子矩形中有奇数个1,则无论怎么操作,该子矩形中仍然有奇数个1,所以必然不满足。 若我们让S的第一行和第一列全都是1,通过归纳法不难发现S的每...

2018-02-20 11:52:26 307

原创 AtCoder Regular Contest 058 D - Iroha and a Grid 组合数学

题意有一个n*m的点阵,初始时你在左上角,其中最下面a行和最左边b列的交点位置,也就是总共有a∗ba∗ba*b个位置是不能走的。你每次只能向下或向右走问你走到点阵的右下角有多少种不同的方案。 n,m<=100000分析直接枚举从哪一个点跨出左上角大小为(n−a)∗b(n−a)∗b(n-a)*b的矩形即可。代码#include<iostream>...

2018-02-19 09:06:05 334

原创 AtCoder Regular Contest 080 F - Prime Flip 线性筛+匈牙利算法

题意有一个无限长的01序列,其中n个位置上是1,其余都是0。每次可以选择一个长度为奇素数的区间,然后将这个区间内的元素取反。问最少多少步后可以将整个序列变为0。 n<=100,ai<=10^7分析首先差分一下,不难发现1的个数一定是偶数,那么操作就变成了每次可以把两个位置[l-1,r]同时取反。 现在问题就变成了让这偶数个1两两配对,使得总操作数最小。 对于两个数...

2018-02-18 23:20:03 330

原创 AtCoder Regular Contest 080 E - Young Maids 贪心+堆+RMQ

题意给出一个排列,要求按如下方式构造一个新排列,使得新排列的字典序尽量小。 每次可以在原排列中选择两个相邻的数,将这两个数在原排列中删掉并按照原来的相对顺序放在新排列的最前面。 n<=200000分析由于要字典序最小,我们可以倒着贪心。 首先找到下标奇偶性不同且字典序最小的两个数(a[x],a[y]),那么a[x]和a[y]就会作为新排列的开头,然后将序列拆分成三个区间...

2018-02-18 14:45:14 218

原创 AtCoder Regular Contest 076 F - Exhausted? 霍尔定理+线段树

题意有m张凳子,第i张凳子的坐标为i。现在有n个人,第i个人可以选的凳子的编号不能大于Li或不能小于Ri。问最少添加多少张凳子才能使得每个人都有凳子坐。 n,m<=200000分析霍尔定理:若二分图G存在完美匹配,则对于X部的任意一个子集,和该子集有连边的Y部的点数不能小于该子集大小。 霍尔定理同样可以用于求最大匹配:设Γ(X)Γ(X)\Gamma(X)表示与集合X有连边...

2018-02-17 11:42:27 495

原创 AtCoder Regular Contest 076 E - Connected? 乱搞

题意有一个n*m的网格图,和k个点对。现在要在点对之间两两连曲线,问能否存在一种方案使得曲线不超过边界且互不相交。 n,m<=10^8,k<=10^5分析分析一波不难发现只有两对点都在边界上且相互交叉的时候会不合法。 然后随便怎么搞都行了。代码#include<iostream>#include<cstdio>#inclu...

2018-02-16 15:14:40 220

原创 AtCoder Grand Contest 006 F - Blackout 三染色

题意有一个n*n的网格图,一开始有m个格子是黑色的,其余全是白色的。规定若(x,y)和(y,z)都是黑色,则可以把(z,x)也染尘黑色。问最多可以把多少个格子染黑。 n,m<=100000分析不妨把黑格子(x,y)看成一条有向边,那么就变成了一个图上的问题。 对于每一个弱连通块进行三染色,然后分三种情况讨论: 若三种颜色中只出现了两种或以下,则不会增加新的边。 若三种...

2018-02-16 10:40:26 335

原创 AtCoder Grand Contest 006 E - Rotate 3x3 树状数组

题意一开始有一个3*n的矩阵,初始时位置(i,j)上是(j-1)*3+i。现在给出一个目标状态,问能否通过每次把一个3*3的矩阵旋转180度来得到该目标状态。 n<=100000分析我们可以把问题看成能否由目标状态变成初始状态。 若某一列是正的,则系数为1,否则系数为-1。那么问题就变成了,给你一列数,每次可以选择连续的三个数然后将这三个数翻转并取反,问能否变成1,2,…...

2018-02-15 11:35:00 268

原创 AtCoder Grand Contest 006 D - Median Pyramid Hard 二分答案

题意给出一个长度为2n-1的排列a[n,1..2n-1],定义a[i,j]=a[i-1,j-1],a[i-1,j],a[i-1,j+1]三个数中的中位数,问a[1,n]的值是多少。 n<=100000分析首先可以二分答案,然后把小于mid的数看成0,其余看成1,那么取中位数就变成了取众数。 观察一下性质: 注意到如果最底下一行有两个相邻的0,那么这两列将会全都是0。 ...

2018-02-15 10:18:40 384

原创 AtCoder Grand Contest 005 F - Many Easy Problems NTT

题意给一棵树,要求对于任意的k,输出在树上任选k个点构成的虚树大小的和。 n<=200000分析考虑每个点对ans[k]的贡献。 容斥一下可以得到一个点的贡献就是Ckn−∑x∈sonCksize[x]Cnk−∑x∈sonCsize[x]kC_n^k-\sum_{x\in son}C_{size[x]}^k 其中son表示以当前点为根时的儿子集合。 那么有ans[k]=...

2018-02-14 13:16:56 198

原创 AtCoder Grand Contest 005 E - Sugigma: The Showdown 博弈论+贪心

题意给出一个无向图,边分为红边和蓝边,其中红边和蓝边分别构成一棵树。现在两个人各在树上一个点。每人轮流操作,每次可以不走或走到一个与当前点有边相连的点。其中先手只能走红边,后手只能走蓝边。若某刻两个人位于同一个点,游戏结束。先手要最大化操作次数,后手要最小化操作次数。问最终的操作次数是多少。 n<=200000分析首先要知道怎么判-1。 先把蓝边树建出来,对于某条红边(x...

2018-02-14 09:52:14 266

原创 AtCoder Grand Contest 005 D - ~K Perm Counting 容斥原理+dp

题意给出n和k,问有多少个长度为n的排列p使得对于任意的i,有|pi−i|≠k|pi−i|≠k|p_i-i|\not=k。 n<=2000分析正着不好做,考虑容斥。 那么我们要求的就是至少选x个位置不满足条件的方案。 注意到每个数和他相减绝对值为k的数只有不超过两个,也就是说,如果我们在x和x+k之间连一条边,那么n个点会形成很多条链,每个点只能和与它有边相连的点配对。...

2018-02-13 16:28:58 371

原创 AtCoder Grand Contest 005 C - Tree Restoring 构造

题意给出一个序列a[1..n],问能否构造一棵树使得第i个点到最远点的距离恰好为a[i]。 n<=100分析有个结论就是任意一个点到树中的最远点必然是直径两个端点中的一个。 那么a中的最大值L必然是树的直径,且最小值不能小于(L+1)/2。 对于其他点x,我们可以在直径上最远点距离为a[x]-1上连一条边到x。 还有画一画不难发现,若L为奇数,则最远点距离为(L+1)...

2018-02-13 11:24:21 283

原创 AtCoder Grand Contest 004 F - Namori 贪心+构造

题意给出一棵树或环套树,一开始每个点都是白色,每次操作可以把相邻且同色的两个点变色,问最少多少次操作后可以使整棵树变成黑色。 n<=100000分析这题像我这么弱当然是不会做啦。先考虑树怎么做: 显然树是一个二分图,我们可以看成深度为奇数的点上有一个硬币,偶数点上没有。每次操作就相当于移动一枚硬币,问最少多少次操作使得偶数点上都有硬币且奇数点上没有。 若偶数点数量不...

2018-02-13 10:45:44 360

原创 AtCoder Grand Contest 004 E - Salvage Robots 动态规划

题意有一个n*m的方格图,里面有一个出口和若干个机器人。每次可以选择让所有机器人同时向四个方向中的一个移动,若走到出口则走出去,若走出边界则挂掉。问最多能让多少个机器人走出去。 n,m<=100分析我们可以考虑让出口和整个方格图移动而不是让机器人移动,然后就可以设f[i,j,k,l]表示出口往四个方向分别移动的最大距离是多少,同时知道哪些格子挂掉了,那么就可以转移了。...

2018-02-12 22:19:50 414 4

原创 AtCoder Grand Contest 004 D - Teleporter 贪心

题意给n个点,每个点都有一条出边。保证每个点都可以到达1。问最少修改多少个点的出边使得每个点在恰好走k步后都会恰好到达1。 n<=100000,k<=10^9分析不难发现若1的出边不为1则一定不合法。 那么这就变成了一棵树,问最少修改多少个点的父亲使得这棵树的深度不超过k+1。 自底向上贪心即可。 由于本人比较弱,所以还写了个数据结构来维护,实际上并不用。...

2018-02-12 14:14:07 214

原创 AtCoder Grand Contest 004 C - AND Grid 构造

题意给一个网格图1,其中一些位置被涂成了紫色。要求构造一个只有蓝色的网格图2和一个只有红色的网格图3,要求若一个位置在1中是紫色,则在2和3中必须要被涂色;反之则在2和3中不能同时涂色。且2和3中的被涂色格子必须四连通。 n,m<=500,满足1的边界必然没被涂成紫色。分析看了题解觉得好简单,可就是没有想到。。。 先不考虑边界,奇数行涂成红色,偶数行涂成蓝色。 然后第一列涂...

2018-02-12 13:37:52 197

原创 AtCoder Grand Contest 003 E - Sequential operations on Sequence 乱搞

题意初始有一个长度为n的序列,第i个元素为i。现在有m个操作,第i个操作有一个参数qiqiq_i,表示先把该序列当成循环结无限循环。然后取前q个元素作为新的序列。问m次操作后的序列中,1到n每个元素的出现次数。 n,m<=100000,q<=10^18分析首先注意到若qi>qi+1qi>qi+1q_i>q_{i+1},那么qiqiq_i是没用的,可以删掉。这样...

2018-02-12 11:15:40 211

原创 AtCoder Grand Contest 003 D - Anticube 贪心

题意给出n个数a[1..n],要求选出最多的数使得其中任意两个数的乘积不是完全立方数。 n<=100000,a[i]<=10^10分析我们把一个数质因数分解后的每个指数都模3,不难发现每一个数都唯一对应一个和它相乘为完全立方数的数,设为其补数。然后在每个数和其补数中选一个较大的加入答案即可。 现在问题在于怎么分解把每个数化简并得到其补数。 不难注意到一个数的立方因...

2018-02-11 16:41:21 397

空空如也

空空如也

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

TA关注的人

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