自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 acm-排列组合学习笔记(更新中)

引言本文主要介绍排列与组合的相关知识点,以及重要的一些结论推论及其证明,会给出少量的例题,此外本文是建立在作者的需求上,故更多简单的内容不会涉及,默认读者已经拥有前置技能排列组合引言一、集合1.不可重集(1).普通排列(2).圆排列(3).组合2.可重集(1).排列[1].无限集[2].有限集(2).组合[1].无限集[2].有限集二、组合数(二项式系数)1.二项式定理(1).基本内容(2).推广2. 帕斯卡三角形3.组合数性质4.组合数取模及求解(1).Pascal打表法(批量)(2).公式法(单

2020-11-04 23:13:53 785

原创 acm-dp相关优化学习笔记(决策单调性)

引言本文暂时只介绍与决策单调性有关的优化。后面会陆续完善其他优化一、决策单调性优化1.四边形不等式[1].定义设w[i][j]w[i][j]w[i][j]是一个二元函数,若∀a≤b≤c≤d\forall a\le b\le c\le d∀a≤b≤c≤d满足w[a][c]+w[b][d]≥w[a][d]+w[b][c]w[a][c]+w[b][d]\ge w[a][d]+w[b][c]w[a][c]+w[b][d]≥w[a][d]+w[b][c](可以记作交叉大于等于包含)成立,那么称w[i][

2020-11-04 10:17:11 349 2

原创 acm-(贪心、优先队列)Codeforces Round #687 (Div. 1) C. New Game Plus!

传送门本题考虑贪心,首先将元素从大到小排序,我们要将这些元素分成k+1k+1k+1组,使得总贡献最大,那么我们每次将当前元素加入和最大的一组即可。这样贪心显然是最优的。priority_queue<ll,vector<ll>,less<ll> >q;int a[maxn];int main(){ int n=rd(),k=rd(); FOR(i,0,k+1)q.push(0); ll ans=0; FOR(i,0,n)a[i]=rd(); sort(a.

2020-11-30 17:28:32 202

原创 acm-(好题、网络流、状压dp)Educational Codeforces Round 96 (Rated for Div. 2) G. Yet Another DAG Problem

传送门本题有多种方法。方法一:采用状压dp,用SSS记录点集,我们考虑设dp[S]dp[S]dp[S]为一个合法的DAGDAGDAG点集SSS对应的最小答案。然后我们容易发现图中所有点的点权的范围一定可以位于[0,n−1][0,n-1][0,n−1],再大一定不会更优。而且由于是一个DAGDAGDAG,根据题意我们从DAGDAGDAG的入度为零的点出发沿着边走到终点,这个过程中遇到的点的点权一定是递减的。现在考虑dp[S]dp[S]dp[S]已经求解出来,那么如何用dp[S]dp[S]dp[S]去更.

2020-11-27 15:58:12 93

原创 acm-(构造、异或、思维)Codeforces Global Round 11 E. Xum

传送门方法一:考虑找到一个数yyy使得gcd(x,y)=1gcd(x,y)=1gcd(x,y)=1,也就是∃a,b≥0,ax−by=1\exist a,b\ge 0,ax-by=1∃a,b≥0,ax−by=1,也就是ax=by+1ax=by+1ax=by+1,如果yyy是个偶数,那么我们让(ax) xor(by)(ax)\,xor (by)(ax)xor(by)就能得到111了,其中a,ba,ba,b可以通过扩欧寻找,要让ax,byax,byax,by出现在黑板上可以通过倍增实现。而如何寻找一个适合的.

2020-11-27 11:39:27 157

原创 acm-(好题、模拟、思维、构造)Codeforces Global Round 11 D. Unshuffling a Deck

传送门构造方式大致就是,按照1、n、2、n−1、...1、n、2、n-1、...1、n、2、n−1、...的方式交替选择,对于每个选择的数iii,我们通过一次操作将它放到对应的位置上,每次我们都是在一个区间[l,r][l,r][l,r]内选择数字,这个区间会不断缩小,直到所有数字的排序完成。注意到这里放到对应的位置上,这个位置并不完全固定,每次我们都会让整个序列反转一下,所有这个位置也会跟着反转。具体如何通过一次操作放到对应的位置上,如果是想放到[l,r][l,r][l,r]的左边,假设数字iii位于.

2020-11-27 08:30:37 182

原创 acm-(好题、dp优化)Codeforces Global Round 11 C. The Hard Work of Paparazzi

传送门设dp[i]dp[i]dp[i]到第iii个人的时候最多已拜访人数(包括第iii个人),容易写出一个方程:dp[i]=max0≤j<i{dp[j]+[t[i]−t[j]≥d(i,j)]}dp[i]=max_{0\le j<i}\{dp[j]+[t[i]-t[j]\ge d(i,j)]\}dp[i]=max0≤j<i​{dp[j]+[t[i]−t[j]≥d(i,j)]}。注意到ttt是单调递增的,意味着拜访次序大于2r2r2r的人之间的距离之差是小于它们的时间之差的,因为任意两个.

2020-11-27 08:22:23 98

原创 acm-(组合计数、dp计数)2020 China Collegiate Programming Contest Qinhuangdao Site H. Holy Sequence

传送门首先考虑对于数字jjj而言,如何计算贡献,假设它有xxx个,那么x2x^2x2等价于从整个序列中可以重复地选择两个数字jjj的选法。而所有x2x^2x2之和其实就是从所有可能的序列中重复地选择两个数字jjj的选法之和。总的来说,两个选法不同,要么两个选法中选择的两个位置存在差异,要么两个选法对应的序列存在差异,这样的话两个选法都会产生一次贡献。于是对于数字jjj而言,我们枚举它第一次出现在序列中的位置iii,设pre[i][j]pre[i][j]pre[i][j]表示长度为iii的序列,并且j.

2020-11-27 08:03:10 183

原创 acm-(辗转相除法、丢番图方程)2020 China Collegiate Programming Contest Qinhuangdao Site I. Interstellar Hunter

传送门本题其实就是给定若干个整数向量(x1,y1),(x2,y2),...,(xn,yn)(x_1,y_1),(x_2,y_2),...,(x_n,y_n)(x1​,y1​),(x2​,y2​),...,(xn​,yn​),询问对于整数向量(x,y)(x,y)(x,y)而言是否能够找到一组整数a1,a2,...,ana_1,a_2,...,a_na1​,a2​,...,an​使得a1(x1,y1)+a2(x2,y2)+...+an(xn,yn)=(x,y)a_1(x_1,y_1)+a_2(x_2,y_2.

2020-11-26 20:07:36 312 2

原创 acm-(多重背包)Codeforces Raif Round 1 (Div. 1 + Div. 2) G.Lucky Numbers

传送门本题主要就是让选kkk个数字,加起来等于nnn(询问),使得kkk个数字各位上的权值和最大。先看看权值的定义,对于第xxx位而言,若数字为3t(t=0,1,2,3)3t(t=0,1,2,3)3t(t=0,1,2,3),则权值为tFxtF_xtFx​,且一旦分配,对应总和就会加上3t⋅10x3t\cdot 10^x3t⋅10x,如果将kkk个数字的第xxx位视为一个类型,并且不考虑那些无法被333整除的背包容量,那么选择分配权值的效果等价于从3k3k3k个大小为3⋅10x3\cdot 10^x3⋅.

2020-11-26 12:48:21 121

原创 acm-(贪心、dp)Educational Codeforces Round 96 (Rated for Div. 2) F. Realistic Gameplay

传送门本题有两种做法:dp、贪心。先说dp怎么做。设dp[i]dp[i]dp[i]表示第iii波及之前所消耗的最少子弹数。我们考虑在哪一波结束的时候换弹夹来更新dpdpdp数组,首先枚举最后一次换弹夹的波次iii,对于后面的波次j(j>i)j(j>i)j(j>i)而言,都保证波与波之间不换弹夹,也就是说只有子弹打空的时候再换弹夹,于是可以直接模拟jjj从i+1i+1i+1到nnn的消灭怪物的子弹变化情况,顺便可以更新dp[j]dp[j]dp[j],由于第iii波结束的时候更换了弹夹,.

2020-11-26 08:05:54 131

原创 acm-(好题、哈希技巧)2020 China Collegiate Programming Contest Qinhuangdao Site J. Jewel Splitting

传送门本题让求一个字符串在不同划分下的排列数,具体来说,给定一个d,d=1,2,3,..,nd,d=1,2,3,..,nd,d=1,2,3,..,n,将字符串划分为ddd个长度相同的部分,剩下一个长度为n%dn\%dn%d的子串,然后求出这ddd个长度相同部分的不同排列方案数,假设这个答案是ansdans_dansd​,则我们需要求出ANS=∑i=1nansiANS=\sum_{i=1}^nans_{i}ANS=∑i=1n​ansi​。考虑如何求解ansdans_dansd​,假设t=n%dt=n\%.

2020-11-25 17:21:27 356

原创 acm-(线段树、栈、思维)Codeforces Raif Round 1 (Div. 1 + Div. 2) F. Fruit Sequences

传送门本题有至少三种方法可以做。方法一:考虑对每个连续的111段求解贡献,首先是整体的贡献,此时我们可以分别向左和向右延伸,得到延伸最远的lll和rrr,注意到如果多个连续111段长度相同的,我们把贡献计算在最左边的段上,故延伸到最远的lll必须满足长度小于当前段,最远的rrr则满足小于等于当前段,对于000段需要特殊判断。然后是当部分贡献,此时我们固定左端点或者右端点然后让另一个端点向对应的方向延伸,类似地讨论来得出当前段的部分的贡献,固定的端点不位于边界上。具体代码实现的时候需要用线段树来查找.

2020-11-25 09:27:59 97

原创 acm-(贪心)Codeforces Raif Round 1 (Div. 1 + Div. 2) E. Carrots for Rabbits

传送门本题的贪心十分巧妙,我们考虑将所有数字的划分状态表示为(x,cur,v)(x,cur,v)(x,cur,v)的形式,xxx代表数字值,curcurcur为当前xxx被分成的份数,vvv代表从cur−1cur-1cur−1份到curcurcur份的时候对ansansans的减少量。ansansans初始化为所有数字的平方和,那么我们每次都选择减去最大的vvv即可,总共可以减k−nk-nk−n次,顺便更新(x,cur,v)(x,cur,v)(x,cur,v)到(x,cur+1,v′)(x,cur+1.

2020-11-25 00:30:46 206

原创 acm-(哈希、线段树)2020 China Collegiate Programming Contest, Weihai Site G.Caesar Cipher

传送门本题让对字符串进行区间加操作,然后随机询问两个子串是否相同。如果是普通的区间加操作,我们直接用线段树维护每个节点的哈希值即可,子串哈希值可以直接查询区间哈希值然后再除以基数的幂次获得。不过本题中区间加需要对655366553665536取模,不过我们可以再每次区间加后通过线段树找到所有刚好等于655366553665536的点,然后将它的值变成0即可,这样修改的次数其实不会很多,由于每655366553665536次区间加操作最多导致655366553665536次取模操作,故实际上均摊下来每次.

2020-11-24 18:20:52 163

原创 acm-(分组背包、lcm)2020 China Collegiate Programming Contest, Weihai Site L. Clock Master

传送门本题就是让将nnn分解为若干数,然后让这些数的lcmlcmlcm最大。本质上来说,我们就是让选择一些pkp^kpk,使得它们之和为nnn,且乘积最大,这其实相当于分组背包,对于每一组而言,我们可以选0,p1,p2,...0,p^1,p^2,...0,p1,p2,...,最后选出来的总和为nnn,而求最大乘积,由于题目取了InInIn,事实上就是求最大InInIn和,方程可以写成dp[j]=max(dp[j],dp[j−pk]+In(k))dp[j]=max(dp[j],dp[j-p^k]+In(.

2020-11-24 07:45:04 123

原创 acm-(思维、找规律、打表)Codeforces Round #676 (Div. 2) E. Swedish Heroes

传送门首先答案一定是∑i=1nbiai,(bi=−1,1)\sum_{i=1}^nb_ia_i,(b_i=-1,1)∑i=1n​bi​ai​,(bi​=−1,1)。我们考虑最终的答案中的{bi}\{b_i\}{bi​}序列有何性质,假设其中−1-1−1有xxx个,111有yyy个,那么满足(2x+y)%3=1(2x+y)\%3=1(2x+y)%3=1。这个可以通过打表看出(我其实看不出 ),这里给出一个证明:利用数学归纳法来证明,每次我们都会合并两个序列,考虑两个序列的性质,若两个序列都满足(2x.

2020-11-24 07:14:48 157

原创 acm-(分类讨论、思维、对称性)Codeforces Round #676 (Div. 2) D. Hexagons

传送门本题主要是利用对称性减少码量,首先注意到我们可以把从(0,0)(0,0)(0,0)出发的六条射线画出来,大致如下图所示:不难发现,我们可以从起点的六条射线之一出发,然后走到终点的六条射线之一,再顺着终点的射线走到终点。因此两个点的射线之间的交点显得尤为重要。由于终点不固定,我们考虑终点的射线与起点的射线相交的情况,然后根据对称性,我们先只考虑终点的②、⑥②、⑥②、⑥类型的射线与起点射线的相交情况,也就是我们只考虑这样的一条路径:从起点出发,经过起点的六条射线之一走到某个与终点②、⑥②、⑥②、.

2020-11-24 06:53:25 108

原创 acm-(lca,期望、树)2020 China Collegiate Programming Contest, Weihai Site C. Rencontre

传送门首先,三个点a,b,ca,b,ca,b,c到它们的中心点的距离之和其实就是d(a,b)+d(a,c)+d(b,c)2\frac{d(a,b)+d(a,c)+d(b,c)}{2}2d(a,b)+d(a,c)+d(b,c)​,d(x,y)d(x,y)d(x,y)表示xxx到yyy的最短路,这个结论很关键,证明很显然就不多说。于是我们分别求解每一项的期望即可,那么如何求解E(d(a,b))E(d(a,b))E(d(a,b))呢,考虑先求出所有点对的距离和,再除以点对总数即可,点对总数就是两个集合大小之.

2020-11-23 15:08:35 94

原创 acm-(bfs、思维)2020 China Collegiate Programming Contest, Weihai Site B.Labyrinth

传送门本题要求处理qqq次询问,每次求解任意两点之间距离。注意到障碍物其实非常少,只有42个,当起点和终点形成的矩形中没有障碍物的时候,最短路距离一定是∣xs−xt∣+∣ys−yt∣|x_s-x_t|+|y_s-y_t|∣xs​−xt​∣+∣ys​−yt​∣。当矩形中存在障碍物的时候,一定有一条最短路能够经过障碍物周围然后再到达终点,因此不妨预处理出所有障碍物周围四个位置到其它所有点的最短路,那么我们枚举这些位置作为起点到终点的中间位置,那么最短路就是dist(s,i)+dist(i,t)dist(s.

2020-11-23 15:01:14 145

原创 acm-(Nim博弈)Codeforces Round #685 (Div. 2) F. Nullify The Matrix

传送门本题题意就是两个人相互对一个矩阵进行操作:选定一个起点(r1,c1)(r_1,c_1)(r1​,c1​),一个终点(r2,c2)(r_2,c_2)(r2​,c2​),满足r2≥r1,c2≥c1r_2\ge r_1,c_2\ge c_1r2​≥r1​,c2​≥c1​。减少a[r1][c1]a[r_1][c_1]a[r1​][c1​]的值选择起点到终点的一条最短路径,路径上除了起点之外的点上的值随意分配(增加、减少或不变)当某一方无法操作就输掉博弈。我们对所有的点分个类,对于r+cr+c.

2020-11-23 11:09:04 98

原创 acm-(数位dp)2020ICPC·小米 网络选拔赛第二场 F.Modulo Nine

传送门首先转化一下题意,本质上就是要求ali∼ria_{l_i\sim r_i}ali​∼ri​​中有至少2个"3",其中ai=9或0a_i=9或0ai​=9或0代表aia_iai​有2个"3",ai=3或6a_i=3或6ai​=3或6代表aia_iai​有1个"3",其它情况则只有0个"3"。考虑数位dpdpdp的思想,枚举数位,假设枚举到当前iii位置,考虑从iii位置向前数,第111个"3"位于jjj,第222个"3"位于kkk,此时的合法方案数为dp[i][j][k]dp[i][j][k]dp.

2020-11-23 07:43:16 206

原创 acm-(思维、构造)Difficult Problems Equal Product

传送门首先由x1y1=x2y2x_1y_1=x_2y_2x1​y1​=x2​y2​我们可以推知∃a<b,a∣x1,b∣y1,x2=x1ab,y2=y1ba\exist a<b,a\mid x_1,b\mid y_1,x_2=\frac {x_1}{a}b,y_2=\frac{y_1}{b}a∃a<b,a∣x1​,b∣y1​,x2​=ax1​​b,y2​=by1​​a。证明:考虑令g=gcd(x1,x2),a=x1g,b=x2gg=gcd(x_1,x_2),a=\frac {x_1}g.

2020-11-23 07:24:18 80

原创 acm-(线段树、mex)Codeforces Round #678 (Div. 2) E. Complicated Computations

传送门本题不好直接求每个子串的mexmexmex,转化一下思路,对于iii而言,我们不妨检查是否存在一个子串使得mex=imex=imex=i。现在讨论满足怎样条件的一个子串s[l∼r]s[l\sim r]s[l∼r]的mex=imex=imex=i:s[l∼r]≠is[l\sim r]\ne is[l∼r]​=i1,2,...,i−1∈s[l∼r]1,2,...,i-1\in s[l\sim r]1,2,...,i−1∈s[l∼r]于是我们遍历sss数组,以当前位置r+1r+1r+1减去.

2020-11-23 07:07:02 441

原创 acm-(树、二分、思维)Codeforces Round #678 (Div. 2) D. Bandit in a City

传送门本题其实就是让把所有节点上的值通过单向路径转移到叶子节点,问叶子结点中最大值的最小值是多少。很容易想到二分,考虑二分最大值midmidmid,checkcheckcheck的时候直接让所有叶子节点都减去midmidmid,然后dfsdfsdfs不断往上求和即可,出现大于0的时候,说明叶子结点中的最大值一定会大于midmidmid,故返回falsefalsefalse,否则truetruetrue。不过需要小心可能会爆longlonglong longlonglong,当累加和绝对值大于1e161.

2020-11-23 06:56:07 87

原创 acm-(交互、随机、完全二叉树、lca)CF Difficult Problems Olha and Igor

传送门首先有个结论:以www为根的lca(u,v)lca(u,v)lca(u,v)是到u,v,wu,v,wu,v,w三点距离和最小的点。结论显然正确,证明略。我们考虑所有满足ask(u,v,w)≠u,v,wask(u,v,w)\ne u,v,wask(u,v,w)​=u,v,w的三元组(u,v,w)(u,v,w)(u,v,w),对于d=ask(u,v,w)d=ask(u,v,w)d=ask(u,v,w)而言,假设有cnt[d]cnt[d]cnt[d]个这样不同的三元组。假设dep[d]=i,i&gt.

2020-11-22 13:23:07 205

原创 acm-(异或、与、或、交互、思维)Codeforces Round #685 (Div. 2) E.Bitwise Queries

传送门本题中数字范围[0,n−1][0,n-1][0,n−1]这个条件以及nnn是2的幂次这个条件是解决问题的关键。首先有个结论:(x&y)+(x∣y)=x+y(x\&y)+(x|y)=x+y(x&y)+(x∣y)=x+y,然后很容易联想到通过计算a1,a2,a3a_1,a_2,a_3a1​,a2​,a3​这三个数两两之间的与或值,来解个方程从而得到它们三个分别的值,然后再让a1a_1a1​与剩下的数去异或从而得到其他数的值,可惜这样做要花费6+n−3=n+36+n-3=n+3.

2020-11-22 13:04:43 202

原创 acm-(差分、暴力、序列)Educational Codeforces Round 98 E. Two Editorials

传送门本质上就是找两个长度为kkk的窗口算贡献。考虑先固定第一个窗口位于[L,R](R−L+1=k)[L,R](R-L+1=k)[L,R](R−L+1=k),然后暴力遍历(li,ri)(l_i,r_i)(li​,ri​),考虑它们对第一个窗口的总贡献为smsmsm,然后考虑第二个窗口位于每个位置上的时候对应的附加贡献,smsmsm和附加贡献加起来后取maxmaxmax即可。本题的难点在于如何快速计算(li,ri)(l_i,r_i)(li​,ri​)对于第二个窗口在每个位置上的贡献。这里运用差分的方法.

2020-11-20 21:55:36 196

原创 acm-(异或、博弈)CF Difficult Problems GameGame

传送门设cnticnt_icnti​表示第iii位为1的数的数量。当cnti%2=0cnt_i\%2=0cnti​%2=0的时候,容易发现无论怎样博弈最终两方的异或值在这一位上的情况一定是相同的,故这一位不能决定胜负。考虑一个最大的i=ki=ki=k使得cnti%2==1cnt_i\%2==1cnti​%2==1,如果cntk−12%2==0\frac {cnt_k-1}2\%2==02cntk​−1​%2==0,容易发现先手必赢,而当cntk−12%2==1\frac{cnt_k-1}2\%2==.

2020-11-20 21:38:56 173

原创 acm-(线段树、max维护、结论)Codeforces Round #684 (Div. 2) E. Greedy Shopping

传送门本题需要知道一个结论,就是操作二找值的时候其实最多只会跳O(log(n))O(log(n))O(log(n))段,这样的话我们可以用线段树去二分查找那些符合条件的段。具体来说,对于操作一,我们每次找到恰好满足小于yyy的一个点iii,然后修改i∼xi\sim xi∼x段的值为yyy,线段树打懒标记的操作不多说了。对于操作二,我们用whilewhilewhile处理,假设现在位于curcurcur位置,每次都线段树二分找到前缀和小于等于y+sum[1∼cur−1]y+sum[1\sim cur-.

2020-11-19 16:54:02 89

原创 acm- (完全子图、团、暴力)Codeforces Round #684 (Div. 2) D. Graph Subset Problem

传送门首先,如果存在度数小于kkk的点,如果这个点的度数为k−1k-1k−1,那么它有机会成为一个大小为kkk的完全子图的一个顶点,于是我们不妨暴力遍历跟这个点相连的所有点,如果这些点的对应的边集的另一个顶点都能找到彼此,那么就找到了完全子图了。可以用binary_searchbinary\_searchbinary_search函数快速查找某个元素是否存在于某个有序数组中。如果发现不满足条件,那么这个点肯定不会成为大小为kkk的完全子图的某一个顶点,因此可以将这个点以及它连接的边从整个图中删除。度数.

2020-11-19 16:44:43 185

原创 acm-(线性基、nim博弈、SG函数)[2020 China Collegiate Programming Contest, Weihai Site]J.Steins;Game

传送门

2020-11-19 15:12:32 210

原创 acm-(区间覆盖)Educational Codeforces Round 95 (Rated for Div. 2) G. Three Occurrences

传送门本题考虑固定右端点rrr,然后看有多少个左端点lll符合条件。那么如何找合法的lll呢,我们假设数组last[a[r]][0∼2]last[a[r]][0\sim 2]last[a[r]][0∼2]分别表示元素a[r]a[r]a[r]在rrr之前(不包括rrr)最近的第一个位置、第二个位置、第三个位置。容易得出lll必定位于last[a[r]][2]+1∼last[a[r]][1]last[a[r]][2]+1\sim last[a[r]][1]last[a[r]][2]+1∼last[a[r.

2020-11-19 11:09:57 174

原创 acm-(期望)Educational Codeforces Round 95 (Rated for Div. 2) E. Expected Damage

传送门本题考查对于期望的理解。期望一般由两种求法,一种是计算总贡献,然后除以总状态数,本题中总状态数是n!n!n!,不过总贡献会非常难求。第二种则是利用一些对称性,然后直接计算某个贡献产生的概率。本题采用第二种方法,我们考虑对于ddd而言,假设有DDD个值满足大于等于bbb,设这些值为有用值,其它为无用值,那么对于ddd中第aaa个有用值后的任意值都会对期望产生贡献,而小于等于第aaa个有用值之前的数产生的贡献都为0。首先考虑有用值对期望的贡献,由于每个有用值出现在第aaa个有用值之后的概率是相同的,.

2020-11-19 10:45:27 131

原创 acm-(根号分治、序列)Codeforces Round #683 (Div. 2) F2. Frequency Problem (Hard Version)

传送门首先可以证明最终答案的子串中一定有一个元素是在整个串中出现次数最多的。为什么正确呢?我们考虑最终的答案子串的形成过程,我们可以最初取整个串作为子串,不过它可能不符合题目要求,即存在至少两个最大出现次数的元素,假设出现次数最多的元素是D,那么我们从整个串的头或尾部删除元素D,直到满足条件即可。然后容易发现当删除的是一个D,那么只有两种情况发生,如果D和其它某些元素变得相等了,那么此时就不用继续往下删了;如果D仍然大于其它元素,那么可以继续往下删。当删除的不是一个D,那么只可能是其它元素变得更小,所以.

2020-11-18 09:20:28 288

原创 acm-(二分图、染色)Codeforces Round #680 (Div. 2) E. Team-Building

传送门本题其实就是问有多少组对,满足这些组的所有点形成的子图是个二分图。直接枚举组对是O(n2)O(n^2)O(n2)的,考虑枚举不合法的组对,首先如果同一个组的所有点形成的子图存在奇环那么这个组与其他所有组形成的子图都一定不是一个二分图。然后考虑枚举那些两个端点位于不同组的边。我们将那些两个端点位于不同组的边分一下类,同一个类中我们让每条边的两个端点的所属组别情况都是一样的。对于同一个类的话边一定不会特别多,毕竟总边数才500000500000500000,因此考虑checkcheckcheck同.

2020-11-17 12:45:59 111

原创 acm-(序列、贡献计算)Codeforces Round #680 (Div. 2) D. Divide and Sum

传送门先考虑将数组aaa从小到大排列,对于a[1∼n]a[1\sim n]a[1∼n]假设我们选择xxx个数放在ppp序列中,那么不难得到我们必须在a[n+1∼2n]a[n+1\sim 2n]a[n+1∼2n]中同样选择xxx个数放在qqq序列中。对于特定的ppp和qqq而言,我们总是先拿出ppp中最小的一个数与qqq中最大的一个数作差求贡献,然后再拿出ppp中第二小的一个数与qqq中第二大的一个数作差求贡献…以此类推。由于我们在a[1∼n]a[1\sim n]a[1∼n]中选择了xxx个数放在pp.

2020-11-17 12:34:16 125

原创 acm-(康托展开)Codeforces Round #681 (Div. 2) E. Long Permutation

传送门本题需要注意到xxx很小,就算是最大的情况下,我们将所有的xxx累和起来也只有2e102e102e10,相当于最多也只会改变151515个数的排列,注意到15!>2e1015!>2e1015!>2e10,因此虽然nnn很大,但我们只需要维护整个排列末尾的151515个数的排列方式即可,让后利用逆康拓展开可以直接求出这151515个数在名次为kkk的情况下的排列情况。关于逆康拓展开详见acm-排列组合学习笔记第四部分ll fac[16],a[16],sum[maxn],b[16].

2020-11-16 10:59:00 112

原创 acm-(思维、差分)Codeforces Round #681 (Div. 2) D. Extreme Subtraction

传送门考虑关于aaa的差分数组ddd,操作一相当于给某一个ddd值加上kkk,操作二相当于给某一个ddd值减去kkk,我们发现最终一定要让ddd值都为000,于是我们让负的ddd做操作一,正的ddd做操作二,由于操作一会导致a1a_1a1​的减少,我们关注操作一的总贡献,假设其为sumsumsum,比较sumsumsum和a1a_1a1​的大小即可。若sum<a1sum<a_1sum<a1​说明a1a_1a1​最终会被减少为负数,输出NONONO即可,否则输出YESYESYES。in.

2020-11-15 00:58:32 84

原创 acm-(思维、异或)Codeforces Round #682 (Div. 2) E. Yurii Can Do Everything

传送门考虑固定lll,假设ala_lal​的最高位为kkk,于是我们从lll出发向右暴力枚举rrr的位置,在此期间保证sum(l+1,r−1)<2k+1sum(l+1,r-1)<2^{k+1}sum(l+1,r−1)<2k+1,然后对于每一个rrr都checkcheckcheck是否满足sum(l+1,r−1)=al xor arsum(l+1,r-1)=a_l\,xor\,a_rsum(l+1,r−1)=al​xorar​,满足的话答案+1+1+1。正着做完一遍后我们反转aaa数组然.

2020-11-14 16:21:21 199

空空如也

空空如也

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

TA关注的人

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