自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 2020暑期集训 day4 A 二进制dp

SoS DP代码

2020-12-13 20:14:44 125 1

原创 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∣n​bi​∗μi​,则若tottottot为0那么nnn与所有aia_iai​互质。枚举gcd ggg,搞个栈,从大到小把ggg的倍数加入,为了保证每对数仅在其gcdgcdgcd时被处理,我们用以上方法判断入栈数是否与栈内数互质,否则就弹出栈顶。代码...

2020-12-13 19:49:59 160

原创 Codefoces 612 div2 F LCC 线段树 期望

题面求出所有相邻两球相向、相背时相遇所需时间并排序。考虑每一种碰撞方案的贡献。可以用线段树维护维护特定情况(规定某些相邻小球无法碰撞)的概率。线段树每个节点存该区间左右端点小球分别向左向右跑的概率,合并时枚举中间两个小球方向,若该方向无限制就转移。所以从小到大将情况标为不可行,然后相遇时间*概率累加即可。代码...

2020-12-13 19:25:29 79

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

原创 迂回(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 268

原创 洛谷 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 160

原创 LOJ 6038 「雅礼集训 2017 Day5」远行

题面显然用LCT维护(需要维护子树信息)每条链的每个节点维护从链的开头开始的最长路长度,和链末尾开始的最长路长度,对于虚儿子维护一个堆(堆里存的是lma)Code...

2018-11-16 21:20:58 264

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

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

原创 CPOJ 平均数-NOIP十连测

题面二分答案,每个点减去答案,若一段区间平均数小于答案,那么它们的和小于零前缀和来一下,逆序对数就是小于平均数的数对数量归并排序搞一下Code...

2018-10-27 20:05:40 210

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

原创 LOJ 2587 「APIO2018」铁人两项

题面第一次写圆方树的题,感觉好难理解啊…所谓圆方树就是为图中的点双联通分量建一个方点,忽略点双联通分量中原来的边,改为点双联通分量中所有的点向该方点连边.本题中可以为所有联通块建出圆方树.考虑以下树形DP:以当前遍历到的点为ccc点计算经过它的路径.此题中一个点的贡献为经过它的路径乘以其权值每个原点相邻的都是方点,每个方点的权值为其代表的点双联通分量的点数,这样一来每个圆点作为sss...

2018-10-25 21:13:05 215

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

原创 CPOJ 2018.10.19提高测试 机器人退场 (exit)

只有一边有出口的可以忽略,求出每个点到左右两边的距离li,ril_i,r_ili​,ri​若一个点从左边出,那么lj<lil_j<l_ilj​<li​且rj>rir_j>r_irj​>ri​的点也必须从左边出,这个就是喜闻乐见的平面上dp的问题了,树状数组维护一下即可Code...

2018-10-21 20:26:59 132

原创 CPOJ 2018.10.19提高测试 垃圾机器人 (litter)

考虑对每一条路径差分,以此计算每个点iii在每轮中第kkk个捡的贡献:costi,k=(1+4)ai          (k=1)costi,k=((k+1)2−k2)ai=(2k+1)ai    &...

2018-10-21 20:16:55 147

原创 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<b)(a,b)(a<b)(a,b)(a<b)的数对个数枚举到iii时我们将a[i]+1a[i]+1a[i...

2018-10-16 15:55:12 356

原创 CPOJ 2018.10.14提高测试 图片拼图板

题面使用广搜,每次只保留估价函数前kkk小的状态(估价函数可以选每个数到最终位置的曼哈顿距离之和,kkk任选)Code

2018-10-15 14:16:00 194

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

原创 牛客网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 208

原创 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∑n​fi​(n−i)!(−1)ifif_ifi​为有iii个数不满足条件的合法排列数,即在二分图中选了iii条边的方案数二分...

2018-10-07 16:31:10 150

原创 牛客网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'\geq k} g_{i,j,k'}\\ans_{i,j}=\sum...

2018-09-26 20:53:49 135

原创 牛客网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 302

原创 CPOJ111 跳房子

题面

2018-09-16 20:48:42 362

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

原创 CPOJ 矩阵交换

题面 考虑用链表维护,矩阵里每个点维护一个向下和向右的指针,每次O(n)O(n)O(n)维护即可Code

2018-09-02 19:16:32 322

原创 CPOJ 排列变换

题面 每次肯定是选一个不在自己位置上的数连续换换换直到所有经过的位置都满足要求为止 一次换换换可能是这样的: 显然可以把红圈里开倒车的所有数都先换掉,这样显然可以让答案变小,然后剩下来的数都是单调的,再计入答案即可.Code...

2018-09-02 19:09:44 246

原创 CPOJ “或”游戏

题面 显然只让最高位最高的一个数乘最优,然后算出前后缀算一下就可以每一个数O(1)O(1)O(1)算答案了.Code

2018-09-02 18:52:19 131

原创 后缀排序学习笔记

建议参考:后缀数组——处理字符串的有力工具 后缀排序即对一个字符串的每一个后缀进行排序,如果暴力进行排序,考虑到字符串比较的复杂度,效率至少是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 1480

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

原创 洛谷P3586 [POI2015]LOG

P3586 [POI2015]LOG 数组里每个数至多被减去sss次,所以把大于sss的数看做sss,然后再yy一下此时数组里所有数之和大于等于scscsc是可行的充要条件,然后离散化之后树状数组搞一搞就好了. Code...

2018-08-24 10:23:13 260

原创 洛谷P3441 [POI2006]MET-Subway

P3441 [POI2006]MET-Subway 此题路径可以相交 不难想到选取的III条路径都是从叶子到叶子存在最优解,那么发现貌似叶子节点中最多只有2I2I2I个会被覆盖(每条路径从叶子到叶子,覆盖222个),类似的,发现从叶子节点往内推一层也是最多只有2I2I2I个会被覆盖,那么大胆猜测,如果从叶子节点向内拓扑分层后每一层最多只有2I2I2I个会被覆盖,考虑到每一层的节点并不一定有2I...

2018-08-24 09:57:02 195

原创 (扩展)BSGS学习笔记

现有同余方程 ax≡b(mod p)ax≡b(mod p)a^x\equiv b(mod\space p) 其中(a,p)=1(a,p)=1(a,p)=1 如果暴力枚举xxx的话,根据欧拉定理 aφ(p)≡1(mod p)aφ(p)≡1(mod p)a^{\varphi(p)}\equiv 1(mod\space p) 效率是O(p)O(p)O(p...

2018-08-23 23:19:55 152

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

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

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

原创 BZOJ3413: 匹配

3413: 匹配 对主串建出后缀自动机与parent树,计算出每个节点最左边的r值(第一次出现的位置)与dfs序,建出n棵可持久化线段树,第i棵维护第一次出现位置小于等于i的parent树叶子节点个数,每个点在其dfs序的位置插入。询问时从0开始枚举询问串长度,考虑一个点now的right集合中第一次出现位置小于等于k的元素个数,那么就在第k棵线段树中询问parent树中now的子树。 Cod...

2018-08-20 09:40:47 320

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

原创 洛谷P4121 [WC2005]双面棋盘

洛谷P4121 [WC2005]双面棋盘 使用线段树维护。线段树每个节点维护该区间左右两列每个点的连通性,逐层合并节点即可。 Code

2018-08-14 18:23:56 184

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

原创 左偏树学习笔记

洛谷P3377 【模板】左偏树(可并堆) 设dpidpidp_i为点iii的子树中深度最大的点的深度,则左偏树满足性质dplson>dprsondplson>dprsondp_{lson}>dp_{rson},因此我们在合并两棵左偏树x,yx,yx,y(xxx应该在yyy上方)的时候,就递归地将xxx的右儿子和yyy合并,这样可以快速达到空节点.struct leftist_...

2018-08-10 21:22:45 75

空空如也

空空如也

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

TA关注的人

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