- 博客(53)
- 收藏
- 关注
原创 CF645F Cowslip Collections
一、题目点此看题题目翻译有一个长度为nnn的数组,每次向其插入一个数,问从中选kkk个数求gcd\gcdgcd的和,输出插入数字后的值。二、解法看到gcd\gcdgcd就可以往莫比乌斯反演的方向想了。设f(i)f(i)f(i)为gcd\gcdgcd为iii的方案数,答案为:∑i×f(i)\sum i\times f(i)∑i×f(i)设F(i)F(i)F(i)为gcd\gcd...
2020-03-30 12:00:44 235
原创 CF915G Coprime Arrays
一、题目点此看题二、解法设f(i)f(i)f(i)为值域在[1,k][1,k][1,k]的nnn个数,最后的gcd\gcdgcd为iii的方案数。设F(i)F(i)F(i)为值域在[1,k][1,k][1,k]的nnn个数,最后gcd\gcdgcd为iii的倍数的方案数。F(i)=∑i∣df(d)=(ki)nF(i)=\sum_{i|d}f(d)=(\frac{k}{i})^nF(i...
2020-03-30 08:25:28 197
原创 [SDOI2017]数字表格
一、题目点此看题二、解法所求:∏i=1n/d∏j=1m/df(gcd(i,j))\prod_{i=1}^{n/d}\prod_{j=1}^{m/d}f(\gcd(i,j))i=1∏n/dj=1∏m/df(gcd(i,j))老套路了,先枚举gcd\gcdgcd:∏d=1nf(d)∑i=1n/d∑j=1m/d[gcd(i,j)=1]\prod_{d=1}^nf(d)^{\sum_{...
2020-03-29 11:06:40 160 1
原创 SP5971 LCM Sum
一、题目点此看题二、解法先把最小公倍数化成gcd\gcdgcd的形式:∑i=1ningcd(i,n)\sum_{i=1}^n\frac{in}{\gcd(i,n)}i=1∑ngcd(i,n)in我们先枚举gcd\gcdgcd,保证iii是gcd\gcdgcd的倍数:∑d∣n∑i=1n/din[gcd(i,nd)=1]\sum_{d|n}\sum_{i=1}^{n/d}in[...
2020-03-29 09:23:05 179
原创 P2568 GCD
一、题目点此看题二、解法我们可以先枚举一个素数ddd,保证x,yx,yx,y都是他的倍数:∑d∑x=1n/d∑y=1m/d[gcd(x,y)=1]\sum_{d}\sum_{x=1}^{n/d}\sum_{y=1}^{m/d}[\gcd(x,y)=1]d∑x=1∑n/dy=1∑m/d[gcd(x,y)=1]显然后面的式子可以反演:∑d∑i=1n/dnid×mid×μ(i)\sum...
2020-03-29 08:56:22 183
原创 [SDOI2015]约数个数和
一、题目点此看题二、解法首先证明一个结论:d(i,j)=∑x∣i∑y∣j[gcd(x,y)=1]d(i,j)=\sum_{x|i}\sum_{y|j}[\gcd(x,y)=1]d(i,j)=x∣i∑y∣j∑[gcd(x,y)=1]证明考虑单个质因数ppp,设iii中有pap^apa,jjj中有pbp^bpb,等式右边的贡献是a+b+1a+b+1a+b+1,等式左边考虑xxx中没有pp...
2020-03-28 12:08:16 190
原创 于神之怒加强版
一、题目点此看题二、解法根据套路,先枚举gcd\gcdgcd:∑d=1ndk∑i=1n/d∑j=1m/d[gcd(i,j)=1]\sum_{d=1}^nd^k\sum_{i=1}^{n/d}\sum_{j=1}^{m/d}[gcd(i,j)=1]d=1∑ndki=1∑n/dj=1∑m/d[gcd(i,j)=1]后面那个式子就是最基础的反演:∑d=1ndk∑i=1n/dnid×mi...
2020-03-28 10:56:21 178
原创 [国家集训队]Crash的数字表格
一、题目点此看题二、解法把最小公倍数变成gcd\gcdgcd的形式:∑i=1n∑j=1mi×jgcd(i,j)\sum_{i=1}^n\sum_{j=1}^m\frac{i\times j}{\gcd(i,j)}i=1∑nj=1∑mgcd(i,j)i×j我们先枚举gcd\gcdgcd,然后保证i,ji,ji,j是gcd\gcdgcd的倍数:∑d=1nd∑i=1n/d∑j=1...
2020-03-27 20:58:42 188
原创 [SDOI2014]数表
一、题目点此看题二、解法首先不考虑aaa的限制,那么答案为:∑i=1n∑j=1mσ(gcd(i,j))\sum_{i=1}^n\sum_{j=1}^m \sigma(\gcd(i,j))i=1∑nj=1∑mσ(gcd(i,j))考虑先枚举这个gcd\gcdgcd:∑d=1n∑i=1n/d∑j=1m/dσ(d)[gcd(i,j)=1]\sum_{d=1}^n\sum_{i=1}^...
2020-03-27 11:55:26 171
原创 [HAOI2011]Problem b
一、题目点此看题二、解法首先来看一个简化的问题,a=1a=1a=1 和 c=1c=1c=1的情况,我们先把范围都除以kkk,问题就变成求互质数对的个数,考虑莫比乌斯反演。设 f(i)f(i)f(i) 为 gcd(x,y)=i\gcd(x,y)=igcd(x,y)=i 且 1≤x≤b,1≤y≤d1\leq x\leq b,1\leq y\leq d1≤x≤b,1≤y≤d 满足条件的对数。...
2020-03-27 08:47:23 140
原创 完全平方数
一、题目点此看题二、解法考虑二分答案,问题在于求出nnn以内的所有满足条件数的个数。从容斥方面考虑,个数 === 000个质数乘积平方的倍数个数 −-− 111个质数乘积平方的倍数 +++ 222个质数成绩平方的倍数 −-− 333个质数乘积平方的倍数 ..................可以用莫比乌斯函数优化这个过程,形式化地表达,个数为:∑i=1i≤nμ(i)ni2\sum_{i=...
2020-03-26 11:45:47 213
原创 [NOI2011]NOI 嘉年华
一、题目点此看题二、解法先离散化时间,设pre[i][j]pre[i][j]pre[i][j]为时间[0,i][0,i][0,i]中AAA站选了jjj个活动,BBB站最多能选的活动数,suf[i][j]suf[i][j]suf[i][j]为时间[i,t][i,t][i,t]中的............,定义类似,转移分为两种情况,我们枚举前一个点,把这个区间里的活动给AAA站/B/B/B站,...
2020-03-25 11:22:29 308
原创 [SDOI2012]任务安排
一、题目点此看题二、解法设f[i]f[i]f[i]为划分到iii的最小费用,设t[i],c[i]t[i],c[i]t[i],c[i]为时间///花费前缀和,转移如下:f[i]=f[j]+t[i]×(c[i]−c[j])+s×(c[n]−c[j])f[i]=f[j]+t[i]\times(c[i]-c[j])+s\times(c[n]-c[j])f[i]=f[j]+t[i]×(c[i]−c[...
2020-03-25 09:05:54 192
原创 [APIO2014]序列分割
一、题目点此看题二、解法首先明确如果确定了划分点之后,答案和划分顺序没有关系,你可以考虑每一个块的贡献,就是这个块的权值和乘上后面的权值和,显然和顺序无关。设dp[i][j]dp[i][j]dp[i][j]为划分到iii,划分了jjj个段,转移直接滚动:dp[i][j]=dp[k][j−1]+(s[n]−s[i])×(s[i]−s[k])dp[i][j]=dp[k][j-1]+(s[n]...
2020-03-24 16:22:04 155
原创 [USACO08MAR]土地购买
一、题目点此看题二、解法首先考虑如果有一个块长和宽都比另一个块要小,那么这个块就没有存在的意义了,我们可以先排序(长为第一关键字,宽为第二关键字,从小到大),然后从后往前扫,期间维护宽的最大值,如果最大值不比当前宽小,那么这个块没用,我们去除完没用的点之后再排一遍序(方法一样)。这样就可以愉快的dpdpdp了,设dp[i]dp[i]dp[i]为划分到iii的最小花费,转移如下:dp[i]...
2020-03-23 16:03:32 213
原创 [HNOI2008]玩具装箱
一、题目点此看题二、解法设dp[i]dp[i]dp[i]为划分到第iii个玩具的最小花费,不难列出转移:dp[i]=dp[j]+(s[i]−s[j]+i−j−1−L)2dp[i]=dp[j]+(s[i]-s[j]+i-j-1-L)^2dp[i]=dp[j]+(s[i]−s[j]+i−j−1−L)2转移是O(n2)O(n^2)O(n2)的,我们推一下式子,设a[i]=s[i]+ia[i]=s...
2020-03-23 15:14:39 124
原创 [NOI Online 提高组]序列
一、题目点此看题二、解法赛场上挂了是因为不知道每个操作能无限次使用,后来发现这道题挺简单的。首先我们可以把aaa变成000,bbb变成b−ab-ab−a 。然后对于t=2t=2t=2的操作,我们可以直接连边,在同一连通块里的点权值可以互相转化,我们把每一个连通块看作一个点。对于t=1t=1t=1的操作,如果我们把它看作点(连通块)连的边,那么如果两个点之间的路径长为偶数,那么他们的权值可...
2020-03-23 08:55:29 198
原创 CF258D Little Elephant and Broken Sorting
一、题目点此看题二、解法设 dp[i][j]=P(ai>aj)dp[i][j]=P(a_i>a_j)dp[i][j]=P(ai>aj),一开始直接n2n^2n2处理,考虑一次交换操作(x,y)(x,y)(x,y)的影响,如果不交换,那么dp[x][t]dp[x][t]dp[x][t]和dp[y][t]dp[y][t]dp[y][t]都不变,如果交换,那么dp[x][t]...
2020-03-22 10:58:14 167
原创 [TJOI2019]甲苯先生的线段树
一、题目点此看题二、解法c=1c=1c=1时,问题变成了求两个点的最长公共前缀(自己随便画个图就明白了)c=2c=2c=2时,我们先需要知道两个结论,现在分别给出结论及证明。结论111:点xxx到根的路径和为2x−cnt(x)2x-cnt(x)2x−cnt(x),其中cnt(x)cnt(x)cnt(x)是指的xxx中111的个数,你可以理解为每一个111都是一个拐点,由原先的二倍关系而多...
2020-03-21 11:09:29 186
原创 CF55D Beautiful numbers
一、题目点此看题二、解法首先一个数满足被一堆数整除等价于这个数满足被这一堆数的最小公倍数整除,[1,9][1,9][1,9]的最小公倍数是252025202520,且这个数有484848个因数。定义dp[i][j][k][l]dp[i][j][k][l]dp[i][j][k][l],为iii位,是否顶到上界,模252025202520的余数为kkk,现在的最小公倍数为lll(映射之后存进去...
2020-03-19 15:14:35 152
原创 [NOI2014]起床困难综合症
一、题目点此看题二、解法显然要用二进制贪心,我们从大到小地考虑每一位的选取情况。我们处理出第iii位选0/10/10/1最终得到的结果,O(n)O(n)O(n)跑一遍即可,然后如果选000产生贡献我们就直接加上贡献走人,否则选111产生贡献我们就看现在剩下的mmm还支不支持这一位选111,如果支持我们就加上贡献,再修改一下mmm。时间复杂度O(nlogn)O(n\log n)O(nlo...
2020-03-19 11:00:01 290
原创 [AHOI2009]同类分布
一、题目点此看题二、解法首先肯定想到我们要把数位和放进状态中,但是原数会有点棘手。我们可以先枚举数位和(也就是模数),设dp[i][j][k][l]dp[i][j][k][l]dp[i][j][k][l],为前iii位,是否顶到上界,数位和为kkk,余数为lll,我们最后要是k=k=k= 模数,并且l=0l=0l=0,然后就可以转移了。#include <cstdio>#i...
2020-03-19 10:27:09 114
原创 Balanced Numbers
一、题目点此看题二、解法很容易想到333进制状压,设dp[i][j][k]dp[i][j][k]dp[i][j][k],为还剩iii为,是否顶到上界,当前所有数位的出现情况的333进制状压(000为未出现,111为出现奇数次,222为出现偶数次),然后转移略。我在实现过程中遇到一个问题,就是怎么处理前导零,前导零是不能算进kkk中的,我想到了一个比较巧妙的方法,我们对初始化下手,如果i=n...
2020-03-19 10:10:40 144
原创 [CH弱省胡策R2]TATT
一、题目点此看题二、解法先排序,把aaa当作第一关键字,bbb当第二关键字,ccc当第三关键字,ddd当第四关键字排序,然后设f[i]f[i]f[i]前iii个组成的最大经过点数量(必须包含iii),转移要找到最大f[j]f[j]f[j],使得aj≤ai,bj≤bi.....a_j\leq a_i,b_j\leq b_i.....aj≤ai,bj≤bi.....,第一维通过排序解决了...
2020-03-18 16:28:25 180
原创 CF44G Shooting Gallery
一、题目点此看题翻译:有nnn个靶子,第iii个靶子在距离射击点zzz的地方,给出靶子的定位,有mmm个射击,按顺序进行,每个射击如果击中靶子会将其击倒,问每个射击会击中哪个靶子,输出靶子的编号(输入顺序)数据范围n,m≤100000n,m\leq 100000n,m≤100000,x,y,z≤107x,y,z\leq10^7x,y,z≤107二、解法我们把射击建k-d\text{k...
2020-03-18 10:00:54 199
原创 CF1010E Store
一、题目点此看题二、解法先考虑判断不正确,我们找出给定的坐标的最大和最大的x,y,zx,y,zx,y,z,然后判断一定不出现的点,如果一定不出现这点在这个区域内(也就是x,y,zx,y,zx,y,z都在最大和最小的范围内),那么就输入不合法。对于询问,我们先判断是否一定合法,然后假设它合法,那么最大和最小x,y,zx,y,zx,y,z都需要更新,更新后我们看包不包含一定不在的点,如果包含那...
2020-03-18 08:12:56 228
原创 Generating Synergy
一、题目二、解法考虑k-d\text{k-d}k-d树,把每一个点以第一维dfndfndfn序,第二维depdepdep深度插入到二维空间中,修改的话就对第一维在[dfin,dfou][dfin,dfou][dfin,dfou],第二维在[dep,dep+l][dep,dep+l][dep,dep+l]中的点打标记,类似于平衡树的修改。查询要注意一下,虽然只查询一个点,但是由于第二维会有相...
2020-03-17 15:14:37 224
原创 [BZOJ 3489]A simple rmq problem
一、题目点此看题二、解法在区间[l,r][l,r][l,r]中出现一次的充要条件是 pre<lpre<lpre<l 并且 suf>rsuf>rsuf>r ,考虑k-d\text{k-d}k-d树,我们把每一个数插入到三维空间中[i,pre,suf][i,pre,suf][i,pre,suf],然后询问就查询第一维在[l,r][l,r][l,r],第二维在[...
2020-03-17 11:11:39 145
原创 SJY摆棋子
一、题目点此看题二、解法也是板子题,不过要多写一个插入和替罪羊的拍扁重建,实现看代码好了。#include <cstdio>#include <iostream>#include <algorithm>using namespace std;const int M = 1000005;const int inf = 1e9;const dou...
2020-03-16 15:52:34 199
原创 [BZOJ 3053]The Closest M Points
一、题目二、解法做了这道题才真正掌握了k-d\text{k-d}k-d树板子,相比于二维,多维写法有修改。首先是建树,需要采用循环维度构建的方式(特别好写)然后是询问,先拿到树上点的维度(是那一维的中位数),然后看询问的点在这一维离左边还是右边更近,就去那边继续查询,维护一个优先队列,看另一边需不需要查询(在这一维询问点距离树上点的距离必须比优先队列最大距离小)口胡可能难以理解,请看代...
2020-03-16 11:15:56 173
原创 [CQOI2016]K远点对
一、题目点此看题二、解法k-d\text{k-d}k-d 树板题,本文会着重讲解一下 k-d\text{k-d}k-d 树的基本思路。首先讲建树,我们以某一维的中位数(居中的那个点)为基准划线,把图形分割成两部分,然后继续递归划分,这样形成的结构一定是一个二叉搜索树(替罪羊),如图:先说中位数的求法,可以用头文件algorithm\text{algorithm}algorithm里的n...
2020-03-15 15:44:30 187
原创 [BZOJ 3600]没有人的算术
一、题目二、解法我们把这些“数”hashhashhash一下,可以用平衡树实现。假设平衡树每个节点对应一个开区间(l,r)(l,r)(l,r),其中根节点对应(0,1)(0,1)(0,1),那么xxx左儿子对应(l,mid)(l,mid)(l,mid),右儿子对应(mid,r)(mid,r)(mid,r)。然后我们定义一个映射函数f(x)=(l+r)/2f(x)=(l+r)/2f(x)=(...
2020-03-14 20:38:59 220
原创 带插入区间K小值
一、题目点此看题二、解法既然要动态插入,外层用平衡树,还有查询第kkk小,内层就用权值线段树。内层要维护权值线段树,外层的平衡树要固定最好,我们可以选用替罪羊树,结构较为稳定,外层重构时内层重新插入就行了,复杂度O(nlog3n)O(n\log ^3n)O(nlog3n),如果用线段树合并的话可以做到O(nlog2n)O(n\log^2 n)O(nlog2n)插入和修改都比较好做,看...
2020-03-14 16:57:38 321
原创 [BJOI2017]开车
一、题目点此看题二、解法首先要明确答案如何算,方法为考虑每一条边的贡献,我们称两点之间的距离为边,那么这条边的贡献就是 距离乘上必须要经过它的车数(也就是左边的车减去车站 的绝对值):∑dis×∣car−stop∣\sum dis\times |car-stop|∑dis×∣car−stop∣那么第一次就很容易算了,绝对值这个东西很不好维护,我们可以靠虑分块,当然我们这里是对边分块,所以我...
2020-03-12 15:48:51 188
原创 [HEOI2015]公约数数列
一、题目点此看题二、解法对于这种维护奇怪东西的题就可以考虑分块qwqqwqqwq。看上去gcd\gcdgcd和异或没有什么联系,也不好一起维护,所以我们分开维护,本题的复杂度是由于一个数组中前缀gcd\gcdgcd的取值最多log\loglog种,因为改变一次至少要减12\frac{1}{2}21那么每一个块我们维护这些值:块内gcd\gcdgcd;前缀xorxorxor (整...
2020-03-12 09:09:57 252
原创 [HNOI2016]大数
一、题目点此看题二、解法首先考虑一个子串s[l..r]s[l..r]s[l..r]能被ppp整除的条件,设a[i]a[i]a[i]为s[i..n]s[i..n]s[i..n]的数模ppp后的值,有:(a[l]−a[r+1])÷10n−r=0mod p(a[l]-a[r+1])\div10^{n-r}=0\mod p(a[l]−a[r+1])÷10n−r=0modp分类讨论,当gcd(p...
2020-03-11 15:08:18 164
转载 [JOI 2014 Final]裁剪线
又一次不要脸(不经允许 )地转载了 JZM \text{ JZM } JZM 巨佬的博客。https://blog.csdn.net/qq_42101694/article/details/104775768
2020-03-10 18:56:09 299
原创 [SDOI2016]墙上的句子
一、题目点此看题二、解法没有什么好的做法,那就考虑网络流把,首先可以单独处理回文串的情况(贡献为111),然后把最少有多少个单词,满足翻转后依然是单词转化成最小割。先讲一下建图方法,再解释原因,我们规定字典序小的是正串,字典序大的是反串:把可能出现的正串和反串分别建一个点,把他们之间连一条容量为222的边,表示断开这条边花费222块钱,后面我们要保证断开边意味着正反串均会出现。把一定会...
2020-03-09 22:22:48 285
原创 [HAOI2015]数组游戏
一、题目点此看题二、解法这类翻棋子游戏有一个套路,可以把原游戏看成翻每一个棋子的组合游戏。想要求出每一个子游戏的sgsgsg函数值,转移时可以继续把后面的棋子拆成若干个子游戏,设sg[i]sg[i]sg[i]为第iii个位置的sgsgsg函数,转移就是sgsgsg函数前缀和。打表可以发现ni\frac{n}{i}in取值相同时sgsgsg函数值相同,其实这也不难意会,因为ni\frac...
2020-03-09 09:57:35 291
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人