
codeforces
文章平均质量分 83
新笑雨
这个作者很懒,什么都没留下…
展开
-
2-SAT备忘(codeforces 1791H)
例题解法:每一列的三个式子中里至少要有两个为1。可以看成任意两个式子里要有一个为1,所以就是任意两个式子不能为0。一列等价于3条限制。建完图之后直接跑2-SAT就行。2-SAT本质上是将一些01变量间的限制关系以图的形式表现出来。在同一个SCC里则不可行。感性理解一下就是我们选了。然后判定可行解只需要对全图跑SCC,如果。并且在一长串路径后得到我们还得选。,我们会建两个点分别表示。然后我们定义一条限制。原创 2024-08-04 12:23:15 · 1181 阅读 · 0 评论 -
codeforces 1728E
exgcd原创 2022-09-14 10:38:42 · 247 阅读 · 1 评论 -
codeforces 1553D
一个与标答不同的想法首先,根据观察可知:如果我们从前往后匹配,当前匹配上了s 的第i个字符,那么下一个能匹配的一定是与当前位置i的奇偶性不同的位置。然后我们就分奇偶建立序列自动机,然后从头开始时枚举是从奇数位置开始还是偶数位置。普遍的坑点()...原创 2021-07-24 10:58:31 · 250 阅读 · 0 评论 -
codeforces 1083E
luogu链接解法首先可以观察到所有矩形排成了类似楼梯的形状,所以如果对x排序,y也是有序的。先按x从小到大排序然后考虑dp:f[i]表示最后一个矩形选择的是第i个的最大价值f[i]表示最后一个矩形选择的是第i个的最大价值f[i]表示最后一个矩形选择的是第i个的最大价值转移:f[i]=maxj=1i−1(f[i],f[j]+y[i]∗(x[i]−x[j])−a[i])f[i]=max_{...原创 2020-04-21 20:00:47 · 5253 阅读 · 0 评论 -
codeforces 1338C
luogu链接吐槽:赛后10min就写出来了。。。一开始把打表程序写错了导致规律找错了。。。解法首先打表找规律,发现和4的倍数有关,然后分n%3的值讨论。n mod 3==1n ~~mod~~3==1n mod 3==1:每4的k次方分一段。每一段里的数都是连续的n mod&nb...原创 2020-04-13 18:03:02 · 176 阅读 · 0 评论 -
codeforces 605E
luogu链接解法(好像在哪里见过几乎一样的问题?)考虑这种图上的期望一般倒着算,所以可以从终点反推回起点。然后考虑我们更新点到终点的距离的过程,我们每次选出一个目前到终点距离最近的点,用它去更新和它相邻的点的距离,这个是也是最短路的思想。由于没有负权边,所以考虑用迪杰斯特拉转移方程d[u]=∑vd[v]∗p[u][v]∗(1−pr[u]),更新的时候按d从小到大的顺序d[u]=\su...原创 2020-04-02 22:17:21 · 151 阅读 · 0 评论 -
codeforces 704B
luogu链接解法高妙的dp:首先调整一下权值:ai=ai+xi,bi=bi−xi,ci=ci+xi,di=di−xia_i=a_i+x_i,b_i=b_i-x_i,c_i=c_i+x_i,d_i=d_i-x_iai=ai+xi,bi=bi−xi,ci=ci+xi,di=di−xi这样就可以:f(i,j)=di+aj  ...原创 2020-03-30 21:20:10 · 216 阅读 · 0 评论 -
codeforces 671D
luogu链接解法设f[i]表示覆盖了i的子树和i的返祖边的最小代价,那么答案就是∑i∈son[1]f[i]\sum_{i\in son[1]} f[i]∑i∈son[1]f[i],但是f[i]的方案不一定是最终的最优方案,如果某个方案可以向上延伸的更长,即使现在代价比较高,也有可能是最终更优的方案,所以我们需要维护所有有可能成为答案的方案。然后再给当前点选出一个最小的作为f。因为要选最小...原创 2020-03-28 15:37:18 · 472 阅读 · 0 评论 -
codeforces 585E
luogu链接解法考虑枚举gcd==g,计算每个gcd的贡献:记c[g]表示数列中为g的倍数的数有多少个,然后考虑一个g的贡献就是(n−c[g])∗(2c[g]−1)(n-c[g])*(2^{c[g]}-1)(n−c[g])∗(2c[g]−1),前一个计算的是x,后一个计算的是{S}。但是这样是有计算多余的:举个例子:当g=6g=6g=6的时候,a数列中有2,6,那么会把S={6},x=2S...原创 2020-03-26 20:47:00 · 295 阅读 · 0 评论 -
codeforces 573E
题目链接解法首先有一个n^2的dp:f[i][j]表示前i个元素,选了j个时的最大价值:f[i][j]=max(f[i−1][j],f[i−1][j−1]+a[i]∗j)f[i][j]表示前i个元素,选了j个时的最大价值:f[i][j]=max(f[i-1][j],f[i-1][j-1]+a[i]*j)f[i][j]表示前i个元素,选了j个时的最大价值:f[i][j]=max(f[i−1][j...原创 2020-03-19 17:39:57 · 204 阅读 · 0 评论 -
codeforces 1325F
题目链接题意给一个n个点m条边的无向联通图,要求在图上要么找出一个至少ceil(sqrt(n))个点的环,要么找出一个cail(sqrt(n))个点的独立集数据范围n≤1e5 m≤2e5n\le 1e5~~~~~m\le 2e5n≤1e5 m≤2e5解法(没有证明其正确性,...原创 2020-03-15 21:12:11 · 1526 阅读 · 0 评论 -
codeforces 1304E
题目链接题意有一棵树,多次询问,每次额外在树上加一条边x,y(这个不会带到下一次询问中),再问两个点a,b能否恰好走k条边到达,边可以反复走。数据范围树上节点数≤1e5,询问数≤1e5,k≤1e9树上节点数\le 1e5,询问数\le 1e5,k\le 1e9树上节点数≤1e5,询问数≤1e5,k≤1e9解法感觉非常结论。。。推了一下后发现从a走到b要么不走新边,要么从a走到x,要么从...原创 2020-02-16 16:50:48 · 186 阅读 · 0 评论 -
codeforces 1303E
题目链接题意有一个字符串s,和一个字符串t,问可不可以将t分为前后两个部分,使得每个部分都对应一个s中的子序列,且这两个子序列不相交。数据范围字符串总长<=400解法首先有一个naive的O(n4)O(n^4)O(n4)解法,设dp状态f[i][j][k]表示考虑到s串的第i个字符,t的前半部分考虑到的位置为j,后半部分考虑到的位置为k的状态是否可行,然后需要枚举前半部分的总长。...原创 2020-02-16 16:43:45 · 188 阅读 · 0 评论 -
codeforces 498B
题目链接题意用T秒时间按顺序听N首歌,第i首歌播放时间为ti秒,且每播放一秒都会有pipi的概率被识别出来,跳到下一首。若某首歌播放时间过完仍未被识别出,也跳到下一首。若时间有剩余而歌已全部听完则直接结束。求听歌数量的期望。1≤N,T≤5000解法DP首先考虑一个暴力dp:dp[i][j]表示听了前i首歌,花了j的时间的概率。然后转移考虑枚举最后一首歌花了多少时间:dp[i][j]=...原创 2020-02-08 11:12:52 · 177 阅读 · 0 评论 -
codeforces 1252L
题目链接orz zhf题意有n个节点每个点有一条出边,保证这些出边把图联通,这条出边可以用mim_imi种材料建造,这些材料读入,然后有k个工人,每个工人能够使用一种材料,这个也是读入的,问有没有合理分配工人,建边的方法,使得剪出来的图联通,如果有,输出方案。数据范围k,n<=2000,∑mi≤10000\sum m_i \le 10000∑mi≤10000解法有源汇上下界...原创 2020-02-04 17:09:56 · 291 阅读 · 0 评论 -
codeforces 1290C
题目链接题意有一个长度为n的01字符串和m个子集,保证任意3个子集∩为空,问将长度从1到n的字符串前缀全部变成1的最小步数,其中每一步可以做的事情是选择一个子集,将这些位置上的字符全部取反。保证可以将整个字符串变成全1状态数据范围n,m≤3e5n,m \le 3e5n,m≤3e5解法首先观察到,任意3个子集的交为空说明任意一个位置只会最多在两个子集中出现,所以对于一个位置,如果它出现在...原创 2020-02-03 18:50:33 · 238 阅读 · 0 评论 -
codeforces 1295E
题目链接题意有一个排列p,需要先将其在中间分割开,分割成非空的两个部分,然后每个p[i]有一个权值a[i],意思是把p[i]从一个集合调整到另一个集合的代价是a[i],要求最后第一个集合里的所有数都比第二个集合里的数小。球最小花费数据范围∣p∣≤2e5,a[i]≤1e9|p|\le 2e5,a[i]\le 1e9∣p∣≤2e5,a[i]≤1e9解法考虑枚举最终第一个集合的大小,从0到n...原创 2020-01-30 19:52:30 · 200 阅读 · 0 评论 -
codeforces 1292C
题目链接题意有一棵n个点的树,要给树上的每一条边一个不同的权值,范围在0~n-1,要求S=∑1≤u<v≤nmex(u,v)S=\sum_{1\le u<v\le n} mex(u,v)S=∑1≤u<v≤nmex(u,v)最大,输出SSS数据范围n≤2000n\le 2000n≤2000解法dp首先考虑把mex转化一下,可以变成对于一条路径,有权值0时答案加上所有...原创 2020-01-27 19:12:39 · 255 阅读 · 0 评论 -
codeforces 1292B
题目链接题意有一些标记点,其中每个点都是上一个点根据一定的规律变化而来的:xi=xi−1∗ax+bx,yi=yi−1∗ay+byx_i=x_{i-1}*ax+bx,y_i=y_{i-1}*ay+byxi=xi−1∗ax+bx,yi=yi−1∗ay+by给一个起点,每一个时刻可以想上下左右中的一个方向移动一步,给出总时间t,问最多可以经过几个标记点。数据范围2≤ax,ay≤100...原创 2020-01-22 09:47:41 · 190 阅读 · 0 评论 -
codeforces 848C
题目链接题意给定长度为n的数组, 定义数字X在[l,r]内的值为数字X在[l,r]内最后一次出现位置的下标减去第一次出现位置的下标给定m次询问, 每次询问有三个整数a,b,c,询问规则如下:当a=1时, 将数组内第b个元素更改为c当a=2时, 求区间[b,c]所有数字的值的和输入:第一行两个整数n,m第二行n个整数, 表示数组第3到3+m行, 每行三个整数, 表示每次询问输出:...原创 2020-01-15 17:50:49 · 331 阅读 · 0 评论 -
codeforces 17E
题目链接题意给定一个长度为n的小写字母串。问你有多少对相交的回文子 串(包含也算相交) 。 输入格式第一行是字符串长度n(1<=n<=2*10^6),第二行字符串 输出格式相交的回文子串个数%51123987Translated by liyifeng解法因为首先是回文串,所以考虑manacher,求出每个节点的f[i],然后考虑直接求相交的回文串对数量不是很好求,所以用...原创 2020-01-15 09:23:35 · 247 阅读 · 0 评论 -
codeforces 700E
题目链接题意给一个字符串S,要求构造字符串序列s1,s2,...,sks_1,s_2,...,s_ks1,s2,...,sk,满足任意s都是S的子串,且任意i∈[2,n],都有sis_isi在si−1s_{i-1}si−1里出现了至少2次,问k最大可以是多少。数据范围∣S∣≤200000|S|\le 200000∣S∣≤200000解法SAM+线段树合并考虑先对原串建出SA...原创 2020-01-14 19:05:56 · 220 阅读 · 0 评论 -
codeforces 1280D
题目链接题意给一棵树,树上每个点有两个权值,分别是wi,bi要求将树分成m个联通块,要求最多能有几个联通块内的∑wi>∑bi\sum wi \gt \sum bi∑wi>∑bi数据范围多组数据,组数<=100n,m<=3000∑n≤1e5\sum n\le 1e5∑n≤1e5解法树形背包首先有一个简单的想法:f[i][j][k]表示第i个点的子树,被分成...原创 2020-01-11 15:59:53 · 204 阅读 · 0 评论 -
codeforces 1111D
题目链接题意给一个长度为n(n≤2e5)n(n\le 2e5)n(n≤2e5)的字符串,字符集为大写字母和小写字母,有q次询问.每次指定两个位置,要求将所有和这两个位置的字母相同的字母都放在字符串的同一半,然后其它每种字母也要放在字符串的同一半.对每组询问,回答合法方案数mod 1e9+7mod~1e9+7mod 1e9+7.解法首先考虑对问题的转化,将哪些字母放在字符...原创 2020-01-10 19:39:47 · 153 阅读 · 0 评论 -
codeforces 915G
题目链接题意给两个数n,k问对于一个长度为n,元素范围为1到k1到k1到k的数组a,有多少个a的总gcd为1,记这个值为bib_ibi,要求输出∑i=1k(bi xor i)\sum_{i=1}^k(b_i ~xor ~i)∑i=1k(bi xor i)数据范围n,k≤2e6n,k\le 2e6n,k≤2e6解法首先列出bbb的式子:bm...原创 2020-01-09 16:26:32 · 177 阅读 · 0 评论 -
codeforces 1214F
题目链接题意有一个长度为m的环形铁路,在铁路的某些点上有一些人或一些办公室,现在要求给每个人配一个办公室,让所有人的上班路程最短。人和办公室的数量都是n。数据范围m≤1e9,n≤2e5m\le 1e9,n\le 2e5m≤1e9,n≤2e5解法参考博文首先可以发现,如果不是环,而是一条链,那么一定是将人和办公室分别排序,然后一一对应,因为如果不是这样,就一定会花费更多的路程.然后如...原创 2020-01-08 18:10:14 · 198 阅读 · 0 评论 -
codeforces 1263F
题目链接题意给两棵有根树,叶子数相同,每个叶子都连接着某个电机,同一棵树的叶子连着不同的电机,电机数等于叶子数,问最多可以删掉几条边,使得每台电机至少连接着一个树根数据范围叶子数num≤1000,树的节点个数n,m≤2000叶子数num\le 1000,树的节点个数n,m\le 2000叶子数num≤1000,树的节点个数n,m≤2000解法dp设val[0/1][l][r]表示第0...原创 2020-01-07 19:44:43 · 245 阅读 · 0 评论 -
codeforces 1239D
题目链接题意有n个人和n只猫,其中第i个人至少认识第i只猫,还会给出其他的m条认识关系,现在需要选出jjj个人,ppp只猫,j+p==nj+p==nj+p==n,然后1≤j,p1\le j,p1≤j,p,问是否存在满足条件的方案,如果有,随便输出一个解法首先可以把猫这个概念丢掉,变成n个人之间有m条单向的认识关系,然后题目可以转化成是否存在一个没有出度的强连通分量,且总的强连通分量数大于一...原创 2020-01-07 15:30:10 · 283 阅读 · 0 评论 -
codeforces 1257F
题目链接题意有n个数,要求找到一个数x,使得每个数都与x异或后,所有数的二进制表示中的1的数量一样.数据范围n≤100,0≤数,x<230n\le 100 ,0 \le 数,x< 2^{30}n≤100,0≤数,x<230解法meet in middle分别搜索x的前15位,用一个结构体存n个数二进制表示下1的个数,然后把搜索的结果存下来,然后搜索后15位,将后15...原创 2020-01-06 18:58:28 · 206 阅读 · 0 评论 -
codeforces 1284E
题目链接题意给n(n≤2500)n(n\le 2500)n(n≤2500)个点,保证没有三点共线,求每个点可以被其它4个点严格包含的方案数之和。解法考虑用总数减去不合法的方案数,先枚举被包含的点,然后总数就是Cn−14C^{4}_{n-1}Cn−14,不合法的方案数是这4个点都在过被包含的点的某条直线的一侧,这个需要把所有点先按和被包含的点的相对位置极角排序,然后双指针扫过去。复杂度O...原创 2020-01-05 21:11:57 · 167 阅读 · 0 评论 -
codeforces 1284C
题目链接题意定义一个排列aaa的一个区间[l,r][l,r][l,r]是好的,当且仅当alalal到ararar中的最大值-最小值=r-l.求长度为n的所有排列中总共有多少个好的区间,答案对一个给定质数取模解法首先观察一下题目的样例,可以发现l=r的区间一定符合要求,这样的区间有n!×nn! \times nn!×n个,然后长度为n的区间也一定符合要求,这样的区间有n!n!n!个,这对我...原创 2020-01-05 20:49:45 · 193 阅读 · 0 评论 -
codeforces 1271E
题意定义一个函数f(x)=x2(x==even),f(x)=f(x−1)(x==odd)f(x)= \frac{x}{2} (x==even),f(x)=f(x-1) (x==odd)f(x)=2x(x==even),f(x)=f(x−1)(x==odd)再定义path(x)path(x)path(x)表示从xxx开始,一直到1的路径上,所有出现的数,例:path(1)={1},path(...原创 2019-12-20 21:14:04 · 395 阅读 · 0 评论