- 博客(73)
- 收藏
- 关注
原创 Codeforces 613 div.2 F. Classical? 数论 莫比乌斯函数
题面对于一组数aia_iai,设bi=∑[i∣ai]b_i=\sum[i|a_i]bi=∑[i∣ai],tot=∑d∣nbi∗μitot=\sum_{d|n}b_i*\mu_itot=∑d∣nbi∗μi,则若tottottot为0那么nnn与所有aia_iai互质。枚举gcd ggg,搞个栈,从大到小把ggg的倍数加入,为了保证每对数仅在其gcdgcdgcd时被处理,我们用以上方法判断入栈数是否与栈内数互质,否则就弹出栈顶。代码...
2020-12-13 19:49:59
212
原创 Codefoces 612 div2 F LCC 线段树 期望
题面求出所有相邻两球相向、相背时相遇所需时间并排序。考虑每一种碰撞方案的贡献。可以用线段树维护维护特定情况(规定某些相邻小球无法碰撞)的概率。线段树每个节点存该区间左右端点小球分别向左向右跑的概率,合并时枚举中间两个小球方向,若该方向无限制就转移。所以从小到大将情况标为不可行,然后相遇时间*概率累加即可。代码...
2020-12-13 19:25:29
144
原创 2020暑期集训day2 C 图分层DP计数
类似∑sumi=∑ai(n−i+1)\sum sum_i=\sum a_i(n-i+1)∑sumi=∑ai(n−i+1)的优化代码
2020-12-13 19:01:53
128
原创 迂回(tour)
算点iii在第kkk个时刻到达恰好到达点jjj的方案数就是Ai,jkA^k_{i,j}Ai,jk,AAA为邻接矩阵所以我们需要算A1A^1A1到AkA^kAk一个办法是每个点再连出一个虚点,虚点连一个自环,引出路径让它在虚点里绕圈,但是这样nnn要多开一倍,复杂度无法接受另一个办法是:∑i=1kAi=∑i=1⌊k2⌋Ai+A⌊k2⌋∑i=1⌊k2⌋Ai+[k&1]Ak\...
2019-02-28 19:35:19
315
原创 洛谷 P3727 曼哈顿计划E
题面先求出每个节点的SG函数(打表)根据SGSGSG函数的定义SG(now)SG(now)SG(now)等于最小的SG(to)+1SG(to)+1SG(to)+1而且没有另一个SG(to′)=SG(to)+1SG(to')=SG(to)+1SG(to′)=SG(to)+1即000到SG(now)−1SG(now)-1SG(now)−1都有SG(to)SG(to)SG(to...
2018-11-19 21:56:21
197
原创 LOJ 6038 「雅礼集训 2017 Day5」远行
题面显然用LCT维护(需要维护子树信息)每条链的每个节点维护从链的开头开始的最长路长度,和链末尾开始的最长路长度,对于虚儿子维护一个堆(堆里存的是lma)Code...
2018-11-16 21:20:58
335
原创 CPOJ 太阳神-NOIP十连测-4-3
题面lcm(a,b)>nlcm(a,b)>nlcm(a,b)>n的难求,考虑求lcm≤nlcm\leq nlcm≤n的∑a∑b[abgcd(a,b)≤n]=∑g∑a∑b[ab≤ng]=∑gfng\begin{array}{l}\sum_a \sum_b[\frac{ab}{gcd(a,b)}\leq n]\\=\sum_g \sum_a \sum_b[a...
2018-10-30 11:12:28
302
原创 CPOJ 2018.10.29提高测试 Sequence
考虑两个数p1k1p_1^{k_1}p1k1,p2k2p_2^{k_2}p2k2设由他们各自的因子构成的数列为a1ia_{1i}a1i与a2ia_{2i}a2i,将bbb质因数分解后pip_ipi的幂次为did_idi显然gcd(a11,a12,…,a1n)=min(g1,p1d1)gcd(a21,a22,…,a2n)=min(g2,p2d2)gcd(a11,a12,…,a1...
2018-10-30 10:52:09
226
原创 CPOJ 平均数-NOIP十连测
题面二分答案,每个点减去答案,若一段区间平均数小于答案,那么它们的和小于零前缀和来一下,逆序对数就是小于平均数的数对数量归并排序搞一下Code...
2018-10-27 20:05:40
239
原创 CPOJ Dash Speed-NOIP十连测-2-3(分治)
题面考虑对时间分治,假设当前进行到[l,r][l,r][l,r],则将完全包含[l,r][l,r][l,r]的区间加入,其余区间分类,等到进入左右子区间时处理显然有一个结论,两棵树合并,新的直径的两个端点一定是原来两棵树的四个直径端点的其中两个并查集存一下直径端点即可退出当前区间时记得还原Code...
2018-10-27 20:00:46
244
原创 LOJ 2587 「APIO2018」铁人两项
题面第一次写圆方树的题,感觉好难理解啊…所谓圆方树就是为图中的点双联通分量建一个方点,忽略点双联通分量中原来的边,改为点双联通分量中所有的点向该方点连边.本题中可以为所有联通块建出圆方树.考虑以下树形DP:以当前遍历到的点为ccc点计算经过它的路径.此题中一个点的贡献为经过它的路径乘以其权值每个原点相邻的都是方点,每个方点的权值为其代表的点双联通分量的点数,这样一来每个圆点作为sss...
2018-10-25 21:13:05
248
原创 CPOJ 九校联考第六场day2 中间值(median)
可以扩展到求kkk大的情况:比较a[l1+k/2−1]a[l1+k/2-1]a[l1+k/2−1]与b[l2+k/2−1]b[l2+k/2-1]b[l2+k/2−1]的大小若a[l1+l/2−1]a[l1+l/2-1]a[l1+l/2−1]较小,则取a[l1]a[l1]a[l1]到a[l1+k/2−1]a[l1+k/2-1]a[l1+k/2−1]作为序列的前k/2k/2k/2位递归处理(l...
2018-10-21 21:30:28
213
原创 CPOJ 2018.10.19提高测试 机器人退场 (exit)
只有一边有出口的可以忽略,求出每个点到左右两边的距离li,ril_i,r_ili,ri若一个点从左边出,那么lj&lt;lil_j&lt;l_ilj<li且rj&gt;rir_j&gt;r_irj>ri的点也必须从左边出,这个就是喜闻乐见的平面上dp的问题了,树状数组维护一下即可Code...
2018-10-21 20:26:59
163
原创 CPOJ 2018.10.19提高测试 垃圾机器人 (litter)
考虑对每一条路径差分,以此计算每个点iii在每轮中第kkk个捡的贡献:costi,k=(1+4)ai&ThickSpace;&ThickSpace;&ThickSpace;&ThickSpace;&ThickSpace;(k=1)costi,k=((k+1)2−k2)ai=(2k+1)ai&ThickSpace;&ThickSpace;&...
2018-10-21 20:16:55
184
原创 CPOJ 九校联考第二场day1 优美序列
题面从左到右枚举优美区间的右端点,假设当前枚举到iii,那么区间[k,i][k,i][k,i]为优美区间当且仅当k+num==ik+num==ik+num==i其中numnumnum为[k,i][k,i][k,i]中相差为111的数对(a,b)(a&lt;b)(a,b)(a&lt;b)(a,b)(a<b)的数对个数枚举到iii时我们将a[i]+1a[i]+1a[i...
2018-10-16 15:55:12
391
原创 CPOJ 2018.10.14提高测试 图片拼图板
题面使用广搜,每次只保留估价函数前kkk小的状态(估价函数可以选每个数到最终位置的曼哈顿距离之和,kkk任选)Code
2018-10-15 14:16:00
243
原创 CF600E Lomsat gelral(DSU on tree)
题面先考虑O(n2)O(n^2)O(n2)暴力,DFSDFSDFS到每个点之后再暴力统计它的子树答案即可仔细观察,我们发现一个点没有好好利用它儿子的贡献.可以发现,每个点最后遍历到的一棵子树贡献可以被保留,这样计算该节点答案的时候就可以少遍历最后一棵子树,直接利用最后一棵子树的贡献.显然把最大的子树留到最后遍历最优,可以证明这样做是O(nlogn)O(nlogn)O(nlogn)的(然而我并不...
2018-10-15 10:59:46
168
原创 牛客网NOIP赛前集训营-提高组(第四场) C灭虫
题面考虑DP先把所有点离散化,设viv_ivi为离散化后第iii大的点的位置.按ppp排序,设fi,jf_{i,j}fi,j表示当前DP到第iii个点,最右端覆盖到jjj的最大区间总长度考虑第iii个区间往左和往右两种转移:往左:从大到小枚举kkk,假设k+1k+1k+1到i−1i-1i−1的点全部往右喷,mamama表示k+1k+1k+1到iii的点的rrr的最大值,l,p,rl,...
2018-10-08 09:22:34
238
原创 CPOJ九校联考第四场day1 排列permutation
题面试图构造二分图的模型,若第iii个位置上的数为aia_iai,那么左侧的iii向aia_iai连边.考虑用容斥计算答案,显然ans=∑i=0nfi(n−i)!(−1)ians=\sum_{i=0}^{n}f_i(n-i)!(-1)^ians=i=0∑nfi(n−i)!(−1)ifif_ifi为有iii个数不满足条件的合法排列数,即在二分图中选了iii条边的方案数二分...
2018-10-07 16:31:10
184
原创 牛客网NOIP赛前集训营-提高组(第三场) A-管道维修
题面考虑计算每个格子至少kkk步被修复的概率fi,j,kf_{i,j,k}fi,j,k(gi,j,kg_{i,j,k}gi,j,k为恰好kkk步被修复的概率)fi,j,k=∑k′≥kgi,j,k′ansi,j=∑kk⋅gi,j,k=∑kfi,j,kf_{i,j,k}=\sum_{k&#x27;\geq k} g_{i,j,k&#x27;}\\ans_{i,j}=\sum...
2018-09-26 20:53:49
160
原创 牛客网NOIP赛前集训营-提高组(第二场)_B_分糖果
题面考虑容斥(这也能容斥??..)(把和前一位相同的位看作1,不同的看作2,全为2的方案即为所求,这应该就是一个普通的容斥问题了)先考虑链的情况,显然有fi=∑jfj∗min(aj+1…ai)∗(−1)i−j+1f_i=\sum_j f_j*min(a_{j+1}\ldots a_i)*(-1)^{i-j+1}fi=j∑fj∗min(aj+1…ai)∗(−1)i−j+1这显...
2018-09-21 21:09:59
341
原创 CPOJ104 整除
题面 考虑分开每个质数处理,最后合并答案. 设这ccc个质数为p1,p2,…,pcp1,p2,…,pcp_1,p_2,\ldots,p_c n|(xm−x)⇔p1|(xm−x)∧p2|(xm−x)∧⋯∧pc|(xm−x)n|(xm−x)⇔p1|(xm−x)∧p2|(xm−x)∧⋯∧pc|(xm−x)n|(x^m-x)\Leftrightarrow p_1|(x^m-x)\wedge ...
2018-09-14 11:44:36
192
原创 CPOJ 排列变换
题面 每次肯定是选一个不在自己位置上的数连续换换换直到所有经过的位置都满足要求为止 一次换换换可能是这样的: 显然可以把红圈里开倒车的所有数都先换掉,这样显然可以让答案变小,然后剩下来的数都是单调的,再计入答案即可.Code...
2018-09-02 19:09:44
302
原创 后缀排序学习笔记
建议参考:后缀数组——处理字符串的有力工具 后缀排序即对一个字符串的每一个后缀进行排序,如果暴力进行排序,考虑到字符串比较的复杂度,效率至少是O(n2)O(n2)O(n^2)级别的. 考虑依次对每个位置开始的2i2i2^i个字符进行分组,把他们看成一个字符串,从小到大枚举iii进行处理,sj,j+2i−1sj,j+2i−1s_{j,j+2^i-1}的排名即(sj,j+2i−1−1+sj+2i−...
2018-08-27 10:40:30
1515
原创 BZOJ4162: shlw loves matrix II
4162: shlw loves matrix II 如果我们已知矩阵AAA的特征多项式p(x)p(x)p(x),其最高次数为kkk,由哈密尔顿-凯莱定理得知 p(A)=a0An+a1An−1+⋯+akAn−kp(A)=a0An+a1An−1+⋯+akAn−kp(A)=a_0A^n+a_1A^{n-1}+\dots+a_kA^{n-k} 显然a0=1a0=1a_0=1,那么 An=a1An...
2018-08-26 22:52:19
383
原创 洛谷P3586 [POI2015]LOG
P3586 [POI2015]LOG 数组里每个数至多被减去sss次,所以把大于sss的数看做sss,然后再yy一下此时数组里所有数之和大于等于scscsc是可行的充要条件,然后离散化之后树状数组搞一搞就好了. Code...
2018-08-24 10:23:13
326
原创 洛谷P3441 [POI2006]MET-Subway
P3441 [POI2006]MET-Subway 此题路径可以相交 不难想到选取的III条路径都是从叶子到叶子存在最优解,那么发现貌似叶子节点中最多只有2I2I2I个会被覆盖(每条路径从叶子到叶子,覆盖222个),类似的,发现从叶子节点往内推一层也是最多只有2I2I2I个会被覆盖,那么大胆猜测,如果从叶子节点向内拓扑分层后每一层最多只有2I2I2I个会被覆盖,考虑到每一层的节点并不一定有2I...
2018-08-24 09:57:02
250
原创 (扩展)BSGS学习笔记
现有同余方程 ax≡b(mod&nbsp;p)ax≡b(mod&nbsp;p)a^x\equiv b(mod\space p) 其中(a,p)=1(a,p)=1(a,p)=1 如果暴力枚举xxx的话,根据欧拉定理 aφ(p)≡1(mod&nbsp;p)aφ(p)≡1(mod&nbsp;p)a^{\varphi(p)}\equiv 1(mod\space p) 效率是O(p)O(p)O(p...
2018-08-23 23:19:55
207
原创 51NOD1690 区间求和2
1690 区间求和2 记s[i]为1~i中质数的个数(这里认为2不是质数),则a[i]和a[j]对答案的贡献为a[i]*a[j]*s[i+j-1]-a[i]*a[j]*s[j-i] 对于前一部分考虑每一个s[k]要乘以的a[i]*a[j]的总和,即i+j-1要等于k,这里可以用fft维护。s[j-i]的部分类似,可以将序列翻转后再求卷积。需要注意的是这里的k只可能是偶数。 Code...
2018-08-23 15:13:01
346
原创 HDOJ6436 Problem K. Pow2
Problem K. Pow2 预处理出凑出正负2的次幂所需的最少数字个数c[0/1][i] f[0][i]表示凑出了i及之前的位置,之后的位置都是0的最小花费 f[1][i]表示凑出了i及之前的位置,之后的位置都是1(假设2^b减去了一个数,i+1到b-1位都是1) if (a[i]=='0') { cmin(f[0][i],f[0][...
2018-08-23 12:40:39
243
原创 BZOJ4566: [Haoi2016]找相同字符
4566: [Haoi2016]找相同字符 对第一个串建出后缀自动机,统计出每个节点对答案的贡献,再用第二个串跑一边统计答案。//# pragma GCC optimize ("O2")//# pragma comment(linker, "/STACK:1024000000,1024000000")#include<bits/stdc++.h>#define lb(x...
2018-08-20 17:52:49
212
原创 BZOJ3413: 匹配
3413: 匹配 对主串建出后缀自动机与parent树,计算出每个节点最左边的r值(第一次出现的位置)与dfs序,建出n棵可持久化线段树,第i棵维护第一次出现位置小于等于i的parent树叶子节点个数,每个点在其dfs序的位置插入。询问时从0开始枚举询问串长度,考虑一个点now的right集合中第一次出现位置小于等于k的元素个数,那么就在第k棵线段树中询问parent树中now的子树。 Cod...
2018-08-20 09:40:47
386
原创 ARC013C - Ants on a Circle
C - Ants on a Circle 可以看做n只蚂蚁坐n辆车,两车交会时交换车上的蚂蚁,显然我们可以轻易求出每辆车最后的位置,而且每只蚂蚁的相对位置不变,蚂蚁1的后继是蚂蚁2,蚂蚁n的后继是蚂蚁1。 假设从0开始最左边一辆车上蚂蚁编号为1,最右边一辆车上蚂蚁编号为n,可以推出当一辆车顺时针跨过0时其他车上蚂蚁编号+1,即 {1,2,3,4,5,…,i,i+1,…,n}{1,2,3,4,...
2018-08-14 18:59:20
222
原创 洛谷P4121 [WC2005]双面棋盘
洛谷P4121 [WC2005]双面棋盘 使用线段树维护。线段树每个节点维护该区间左右两列每个点的连通性,逐层合并节点即可。 Code
2018-08-14 18:23:56
242
原创 Link_Cut_Tree学习笔记
洛谷P2147 [SDOI2008]洞穴勘测 LCT用来维护若干棵无根树,使用伸展树来实现.每棵伸展树维护原树上的一条重链,一棵伸展树中的根节点(非原树的根)的父亲单向指向另一棵伸展树中的它原树中该重链起始点的父亲节点.struct lct{ data tr[maxn]; void init() { LL i; fo(i,0,n)...
2018-08-14 07:56:23
142
原创 左偏树学习笔记
洛谷P3377 【模板】左偏树(可并堆) 设dpidpidp_i为点iii的子树中深度最大的点的深度,则左偏树满足性质dplson&gt;dprsondplson&gt;dprsondp_{lson}>dp_{rson},因此我们在合并两棵左偏树x,yx,yx,y(xxx应该在yyy上方)的时候,就递归地将xxx的右儿子和yyy合并,这样可以快速达到空节点.struct leftist_...
2018-08-10 21:22:45
99
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人