div题解
文章平均质量分 64
issue是fw
19 years old, struggling in life, chasing daydreams.
展开
-
GYM 102501 K. Birdwatching(bfs,思维)
Link考虑先把所有边反向,问题转化为从kkk出发,在不经过k−>vk->vk−>v路径的条件下无法到达点vvv的合法vvv个数一个点vvv和kkk有边时,由于是反向图我们从kkk走到vvv再走到uuu,此时在原图中就存在u−>v−>ku->v->ku−>v−>k这条路径那么点uuu显然不是一个合法点就这样我们不断枚举和kkk相邻的点vvv,然后钦定v−>kv->kv−>k是原图路径的最后一步于是我们在反向图上bfsbfsb原创 2021-11-01 19:24:52 · 323 阅读 · 0 评论 -
Educational Codeforces Round 116 (Rated for Div. 2) E. Arena(组合数,DP )
Link考虑第一批人在第kkk轮死掉,那么这些死掉的人血量在[(k−1)∗(n−1)+1,k∗(n−1)][(k-1)*(n-1)+1,k*(n-1)][(k−1)∗(n−1)+1,k∗(n−1)]范围内定义f[i][j]f[i][j]f[i][j]表示已经死了iii个人,且剩下的n−in-in−i个人可以是[j+1,x][j+1,x][j+1,x]的任何血量转移的时候枚举下一批过了kkk轮死掉qqq人,那么容易推得下一批人的血量范围是[j+(k−1)∗(n−i−1)+1,j+k∗(n−i−1)][原创 2021-10-31 19:14:35 · 338 阅读 · 0 评论 -
E.Binary Cards(分治,贪心)
Link考虑2a2^a2a最多被选择一次.如果选择两次2a,2a2^a,2^a2a,2a,明显是不如选2a,2a+12^a,2^{a+1}2a,2a+1优秀那么知道这个以后,就会发现如果选择2a2^a2a,就不会再选2−a2^{-a}2−a因为2a,−2a2^a,-2^{a}2a,−2a肯定是不如2a,−2a+12^{a},-2^{a+1}2a,−2a+1优秀的这样我们就能得到对于一个aaa,要么选择2a2^a2a,要么选择2−a2^{-a}2−a我们从a=0a=0a=0的情况开始考虑如果存在数原创 2021-10-30 12:12:02 · 230 阅读 · 0 评论 -
Codeforces Round #469 (Div. 1 A-E)
A - ZebrasLINK考虑一个子序列必定是以000开头,后面跟着若干个101010然后考虑当前ai=1a_i=1ai=1,暂时存下来,等下一个遇到的000去匹配若ai=0a_i=0ai=0,如果之前有111未被匹配,就匹配上去,然后接在刚好能接的某个子序列的后面如果之前的111都被匹配了,只能以这个000开头新加一个子序列#include <bits/stdc++.h>using namespace std;const int maxn = 3e5+10;char a原创 2021-10-30 12:11:41 · 283 阅读 · 2 评论 -
Codeforces Round #751 (Div. 2)E. Optimal Insertion(结论,分治)
Link结论一对bbb排序,设bib_ibi放在apia_{p_i}api的前面,那么最优策略下可以是p1<p2<p3......p_1<p_2<p_3......p1<p2<p3......的一组解可以反证,如果最有策略不满足上式,也就是存在i,ji,ji,j满足bi<bj&&pi>pjb_i<b_j\&\&p_i>p_jbi<bj&&pi>pj那么对于aa原创 2021-10-27 18:15:10 · 394 阅读 · 0 评论 -
2019-2020 ACM-ICPC Pacific Northwest Regional Contest (Div. 1)
D - Dividing By Two给定数A,BA,BA,B,每次可以把AAA加111,或者把A/2A/2A/2(要求AAA为偶数)问最少多少次可以把AAA变成BBB考虑把BBB变成AAA,相当于每次只能乘以222或让自己减111设共执行k1k_1k1次乘222操作,k2k_2k2次减111操作A=B∗2k1−∑i=1k22ziA=B*2^{k_1}-\sum\limits_{i=1}^{k_2} 2^{z_i}A=B∗2k1−i=1∑k22zi其中zi∈[0,k1]z_i\in原创 2021-10-21 15:32:24 · 291 阅读 · 0 评论 -
#749 (div1+div2) E. Moment of Bloom(生成树,欧拉回路)
Link考虑uuu点在qqq次询问中出现次数为奇数次那必定无法使所有边经过偶数次,因为uuu的邻边被经过了奇数次,邻边就必然有一条边被经过奇数次考虑所有点在qqq次询问中都出现了偶数次,那么建一颗生成树我们断言,对于询问u,vu,vu,v只需从uuu在树上走到vvv即可满足最后每条边经过偶数次考虑构造一张新图,对于询问(u,v)(u,v)(u,v)在新图上由点uuu向点vvv连一条边这样新图形成若干个连通分量,考虑每个连通分量的度数都是偶数这么这个连通分量必定存在欧拉回路,从起点出发必定回到终原创 2021-10-20 15:24:12 · 340 阅读 · 0 评论 -
CF1140E Palindrome-less Arrays(巧妙的递推)
LINK题意一个数组有些位置是???,你可以使用[1,k][1,k][1,k]填充满足最后对于i∈[1,n−2]i\in[1,n-2]i∈[1,n−2]有ai!=ai+2a_i!=a_{i+2}ai!=ai+2,求方案数我们分成奇数索引构成的数组和偶数索引构成的数组分别考虑现在设奇数索引构成的数组为aaa,条件限制相当于相邻元素值不能相同.考虑到???可能连成一块,这就变得非常麻烦,其实可以把连续的???缩成一个块设f[i][0]f[i][0]f[i][0]表示???块长度为iii,且问原创 2021-10-13 17:13:22 · 228 阅读 · 0 评论 -
CF1140C Playlist(优先队列)
LINK每首歌形存成一个形如{ti,bi}\{t_i,b_i\}{ti,bi}的pairpairpair,按照bib_ibi的大小进行小到大排序考虑现在我们枚举bnb_nbn作为最小的好听程度,显然只有第nnn首歌满足条件接下来我们枚举bn−1b_{n-1}bn−1作为最小的好听程度,显然[n−1,n][n-1,n][n−1,n]都是可选的于是我们从这些歌曲选出ttt值最大的前kkk首歌即可以此类推,我们枚举bib_ibi作为最小的好听程度,显然[i,n][i,n][i,n]都是可选的原创 2021-10-13 15:14:39 · 225 阅读 · 0 评论 -
Codeforces Round #746 (Div. 2) D. Hemose in ICPC ?(交互,dfs序)
LINK给一棵nnn个节点、边权未知的树定义两个节点之间的距离为路径上所有边权的gcdgcdgcd。每次你可以询问一个节点集合然后交互程序会返回所给集合中最大的距离,求在不超过121212次询问的前提下距离最大的两个节点的编号。(n<=103n<=10^3n<=103)先询问一次所有节点得到mxmxmx然后注意到210>=10002^{10}>=1000210>=1000,那么肯定与二分有关我们处理出这棵树的dfsdfsdfs序直接在dfsdfsdfs序原创 2021-10-12 17:03:07 · 204 阅读 · 0 评论 -
Educational Codeforces Round 115 (Rated for Div. 2) D. Training Session(容斥,思维)
LINKnnn个元素每个拥有ai,bia_i,b_iai,bi两个属性,没有两个元素的两个属性都相同.问选出三个元素使得他们的aaa属性各不相同或bbb属性各不相同的方案数。ai,bi<=n<=2∗105a_i,b_i<=n<=2*10^5ai,bi<=n<=2∗105首先总方案数有(n3)=n∗(n−1)∗(n−2)6\binom{n}{3}=\frac{n*(n-1)*(n-2)}{6}(3n)=6n∗(n−1)∗(n−2)考虑减去不合法的方案原创 2021-10-11 21:10:14 · 255 阅读 · 6 评论 -
Codeforces Round #747 (Div. 2) D. The Number of Imposters(并查集,二分图)
LINK注意到当AAA说BBB是好人,无非两种情况.Ⅰ.AAA是好人说真话,那么BBB也是好人Ⅱ.AAA是坏人说假话,那么BBB也是坏人抽象出来也就是A,BA,BA,B属于同一类而当AAA说BBB是坏人时,也就是A,BA,BA,B属于不同的类我们可以用并查集先对形如"AAA说BBB是好人"这种关系处理不断合并这些人,最后得到一些连通块,同一个连通块内的人要么都是好人好么都是坏人再考虑形如"AAA说BBB是坏人"这种关系,要求A,BA,BA,B所在连通块恰好有一个是好人一个是坏人于是我们可以原创 2021-10-11 11:59:01 · 339 阅读 · 0 评论 -
CF1158B The minimal unique substring(构造)
Link设w=n−k2w=\frac{n-k}{2}w=2n−k,如下构造可保证一定有解[w个1+1个0] [w个1+1个0] ..... [w个1+1个0] [若干个1]①.存在长度为k的子串满足仅出现过一次因为s[l+1.....n−l]s[l+1.....n-l]s[l+1.....n−l]是一个长度为kkk的子串,且仅出现过这一次因为这个子串以000开头,下一次000至少要在s2w+2s_{2w+2}s2w+2出现,然而以这个位置开头的子串已经容不下长度为kkk的子串了因为2w+2原创 2021-10-07 15:49:05 · 255 阅读 · 0 评论 -
Educational Round 64 C. Match Points(二分,贪心)
Link贪心,但不是无脑贪心.一开始想的是,从小到大对于每个数xxx找到第一个大于等于x+zx+zx+z且没有被用过的数字让他们匹配因为这样可以让后续的数字尽可能大但是这样一来,剩下的数字都很大,然而差值却非常小,比zzz还小,反而不能匹配,所以这个贪心是错的…先对数组aaa排序考虑二分答案kkk,那么选出最小的kkk个数和最大的kkk个数来匹配一定是最优的我们让aia_iai和an−i+1a_{n-i+1}an−i+1匹配,如果这都不行那就没办法了,时间复杂度O(nlog(n))O(n原创 2021-10-07 11:54:17 · 203 阅读 · 0 评论 -
CF1149B Three Religions(DP)
Link注意到任何时刻s1,s2,s3s_1,s_2,s_3s1,s2,s3的长度不会多于250250250那么定义f[i][j][k]f[i][j][k]f[i][j][k]表示当三个串分别匹配到i,j,ki,j,ki,j,k位置时,匹配到SSS串的最左端位置这个预处理一个nxt[i][j]nxt[i][j]nxt[i][j]数字就很好转移了,表示[i+1,n][i+1,n][i+1,n]中最早出现字母jjj的位置如果串s1,s2,s3s_1,s_2,s_3s1,s2,s3确定,这个f原创 2021-10-07 11:02:04 · 213 阅读 · 0 评论 -
CF1408D Searchlights(优化暴力)
Link有nnn个强盗坐标为(ai,bi)(a_i,b_i)(ai,bi),mmm个灯坐标为(ci,di)(c_i,d_i)(ci,di)现在你需要给所有强盗的aia_iai加上xxx,给所有的bib_ibi加上yyy满足x+yx+yx+y最小且不存在任何i,ji,ji,j满足ai<=ci&&bi<=dja_i<=c_i\&\&b_i<=d_jai<=ci&&bi<=dj考虑确定的强盗iii和灯原创 2021-10-06 11:20:30 · 245 阅读 · 0 评论 -
CF1408B Arrays Sum
Link考虑到∑i=1mbi,j=aj\sum\limits_{i=1}^m b_{i,j}=a_ji=1∑mbi,j=aj若aj=aj−1a_j=a_{j-1}aj=aj−1,那么我们也令bi,j=bi,j−1b_{i,j}=b_{i,j-1}bi,j=bi,j−1,这样仍满足条件而且没有产生任何新数字若aj>aj−1a_j>a_{j-1}aj>aj−1,那么某些bi,jb_{i,j}bi,j就需要变大显然我们只需要选择某个iii使bi,j=bi,j−1+aj原创 2021-10-06 09:21:42 · 263 阅读 · 0 评论 -
CF1416A k-Amazing Numbers(思维)
Link考虑到什么样的数会在所有大小为kkk的区间中出现显然,设这个数字为xxx,相邻两个xxx的间隔必须小于等于kkk(为了方便,我们令a0=an+1=xa_0=a_{n+1}=xa0=an+1=x)显然这是充分必要条件.必要性:若存在相邻xxx的间隔大于kkk,那么xxx不在这个间隔里长kkk的区间中出现充分性:考虑第iii个xxx的位置在posipos_iposi,那么在区间右端点落在[posi,posi+k−1][pos_i,pos_i+k-1][posi,posi+k−1]都包原创 2021-10-05 09:38:23 · 248 阅读 · 0 评论 -
1405. C. Balanced Bitstring(思维)
Link考虑到[1,k][1,k][1,k]和[2,k+1][2,k+1][2,k+1]只有一个位置不同,所以必定有a1=ak+1a_1=a_{k+1}a1=ak+1推广一下得到ai=ai+ka_i=a_{i+k}ai=ai+k,用这个可以特判掉一些无解的情况也就是可以分为kkk组a1=a1+k=a2+k...a_1=a_{1+k}=a_{2+k}...a1=a1+k=a2+k...这样如果只存在一个0/10/10/1,我们就可以把其他问号都赋值为0/10/10/1,若都有就无解否原创 2021-10-04 15:31:29 · 247 阅读 · 0 评论 -
1380 D - Berserk And Fireball(思维,贪心)
LINK考虑怎样删除区间[l,r][l,r][l,r]内的战士考虑一种无脑的做法,让区间[l,r][l,r][l,r]一直使用狂暴,剩下一个和al−1a_l-1al−1或ar+1a_{r+1}ar+1狂暴就能全部消除但如果区间中的最大数比al−1a_{l-1}al−1和ar+1a_{r+1}ar+1都大,那么最后它是无法消除的,我们称这种数字为特殊数字所以应该先用火球术把这种比两边大的数字消掉才行此时如果(r−l+1)<k(r-l+1)<k(r−l+1)<k,不足以使用一原创 2021-10-03 16:50:04 · 279 阅读 · 0 评论 -
CF1364D Ehab‘s Last Corollary(思维,环,二分图,构造)
LINK考虑一个环如果长大于等于kkk,那么我们每次隔点取点,取出了⌈k2⌉\lceil \frac{k}{2}\rceil⌈2k⌉个不相关点当然,这个环必须是复杂环中的最小环,否则可能点和点之间仍然存在边若这个最小环点数已经小于等于kkk,输出这个环即可否则可以隔点取,输出这个独立集(输出⌈k2⌉\lceil \frac{k}{2}\rceil⌈2k⌉个点即可)至于无环的情况,显然只可能是一棵树,对树二分图染色,必然有一侧的点大于等于⌈n2⌉\lceil \frac{n}{2}\rceil⌈原创 2021-10-03 11:22:47 · 316 阅读 · 3 评论 -
CF1444B Divide and Sum(结论题)
LINK把长度2∗n2*n2∗n的aaa数组分成两个长度nnn的数组ppp和qqq对ppp递增排序,对qqq递减排序,计算f(p,q)=∑i=1n∣pi−qi∣f(p,q)=\sum\limits_{i=1}^n |p_i-q_i|f(p,q)=i=1∑n∣pi−qi∣求对于任意的p,qp,qp,q,他们的f(p,q)f(p,q)f(p,q)之和。没啥好说的,结论题,想不出又不会猜.结论:无论那种划分得到的p,qp,qp,q,f(p,q)f(p,q)f(p,q)的值都是较大的那nnn个数减原创 2021-10-03 09:47:18 · 188 阅读 · 0 评论 -
1451E2 - Bitwise Queries (Hard Version)(交互,思维,位运算猜数组)
LINK先用n−1n-1n−1次操作得到所有ai⊕ai−1a_i\oplus a_{i-1}ai⊕ai−1还剩333步可以知晓任意一个数,根据异或的性质就能求出其他所有数考虑到用两次操作可以得到两数之和a+b=2∗(a&b)+(a⊕b)a+b=2*(a\&b)+(a\oplus b)a+b=2∗(a&b)+(a⊕b)考虑能否得到三数之和,我们考虑先求出三数之和的两倍2∗(a+b+c)=(a+b)+(a+c)+(b+c)2*(a+b+c)=(a+b)+(a+c)+(b+原创 2021-10-02 20:50:39 · 277 阅读 · 0 评论 -
CF1451D Circle Game(博弈)
LINK考虑后手总是走相反的操作先手往右走后手就往上走,先手往上走后手就往右走,这样后手走完后落点一定在y=kxy=kxy=kx上先手走完落点一定在y=kx+ky=kx+ky=kx+k或y=kx−ky=kx-ky=kx−k上按照这个策略设一共能走sss轮,则有2s2k2<=d22s^2k^2<=d^22s2k2<=d2在这之后如果先手不能走,那么后手必胜.如果能走,则后手没办法取胜因为先手第一次往上走一步,之后的每一步都和后手做相反的操作,最后一定是后手不能走#inclu原创 2021-10-02 17:36:48 · 244 阅读 · 0 评论 -
1455 D. Sequence and Swaps(思维)
LINK考虑枚举以iii位置作为开头而jjj位置作为结尾位置,可以得到最后排序后的数组那么扫描所有ak!=bka_k!=b_kak!=bk的索引kkk如果此时ak<bka_k<b_kak<bk是无解的,因为交换操作只能让数字变小如果此时ak==bka_k==b_kak==bk,不需要管如果此时ak>bka_k>b_kak>bk,需要把aka_kak加入操作队列,且此时的操作前驱是数字bib_ibi对应的索引位置但是此时的复杂度比较劣,为O(原创 2021-10-02 11:06:17 · 268 阅读 · 0 评论 -
1581 A. CQXYM Count Permutations(思维)
LINK题意给定nnn,求[1,2n][1,2n][1,2n]的全排列中,满足有至少nnn个iii满足pi+1>pip_{i+1}>p_ipi+1>pi的排列有多少种??发现存在k(k>=n)k(k>=n)k(k>=n)个iii满足pi+1>pip_{i+1}>p_ipi+1>pi也就是存在k(k<n)k(k<n)k(k<n)个iii不满足pi+1>pip_{i+1}>p_ipi+1>pi条件原创 2021-10-01 15:43:03 · 367 阅读 · 0 评论 -
Codeforces Global Round 12 1450.C2. Errich-Tac-Toe (Hard Version)(构造,三分图)
LINKEasy Version考虑对这个图染色分类,(i,j)(i,j)(i,j)格子归为(i+j)%3(i+j)\%3(i+j)%3类然后在这三类格子中看看哪一类的标记最少,把那一类的X\rm XX都改成O\rm OO这样做一定合法,因为任何连续的三个格子一定包含我们修改过的O\rm OO#include <bits/stdc++.h>using namespace std;const int maxn = 3e5+10;int t,n,kl[19];char a[509]原创 2021-10-01 15:04:33 · 230 阅读 · 0 评论 -
Codeforces Global Round 12 D. Rating Compression(思维,尺取)
LINK先特判掉k=1k=1k=1和k=nk=nk=n的情况(下面说的任意kkk都不包括k=1k=1k=1和k=nk=nk=n)考虑任何一个排列的最小值都是111如果111出现在数组的中间位置,显然不合法,因为对于任何的kkk必然会尺取到两次111由此可得,111必然出现在开头或结尾,且不能同时出现那我们考虑判断k=n−1k=n-1k=n−1是否合法不妨设开头为111,那么现在相当于判断[2,n][2,n][2,n]的最小值是否为222,是的话就合法如果此时不合法,那更小的kkk也不可能合法,原创 2021-10-01 14:09:09 · 226 阅读 · 0 评论 -
Educational Codeforces Round 101 D. Ceil Divisions(构造)
LINK考虑1,21,21,2不去管,问题变成花n+5n+5n+5步操作使剩下的[3,n][3,n][3,n]都变成111考虑选定一个数xxx让[3,x−1][3,x-1][3,x−1]的数字都除以nnn来变成111让[x+1,n−1][x+1,n-1][x+1,n−1]的数字都除以nnn来变成111让nnn一直除以xxx来变成111,而xxx一直除以222来变成111考虑这样做的操作次数,除去x,nx,nx,n每个数花费一次,用掉n−4n-4n−4次操作,还剩999次操作考虑均摊,让nnn变原创 2021-09-30 12:04:51 · 219 阅读 · 0 评论 -
Educational Codeforces Round 49 E. Inverse Coloring(思维,差分,dp)
link题意给出一个n∗nn*nn∗n的矩阵,要求在每个位置涂上黑/白色,要求满足:任意相邻的两行,其颜色要么完全相同,要么完全相反。任意相邻的两列,其颜色也要么相同要么完全相反。且这个矩形中,不存在任意一个大小大于等于k的同色矩形。求方案数第一个比较有技巧的点是一个矩形确定了第一行第一列的颜色后,整个矩形的颜色就被确定了现在考虑怎样来判断是否存在大于等于kkk的同色矩形,我们只需要找到最大的那个是否小于kkk即可我们先计算第一行最大连续同色段长为xxx,第一列为yyy那么x∗y<原创 2021-09-15 15:45:33 · 255 阅读 · 0 评论 -
Global Round 16D2. Seating Arrangements (hard version)(模拟,贪心)
LINK考虑对aia_iai进行排序,然后把相同的aia_iai对应的索引都浓缩起来假设有kkk个人的aia_iai值都相同,他们的位置分布在[l,r][l,r][l,r]的座位范围内我们能做的只是让他们内部调整座位而已如果[l,r][l,r][l,r]的座位都在同一行内,显然我们根据这kkk个人的序号从大到小,一次从左到右放下去比较好如果[l,r][l,r][l,r]的座位分布在多行,那么有[l,s1][l,s_1][l,s1]位于同一行,且s1s_1s1位置位于该行的结尾位置[s原创 2021-09-14 16:50:06 · 300 阅读 · 0 评论 -
Educational Codeforces Round 107 (Rated for Div. 2) E. Colorings and Dominoes(思维)
LINK考虑一个确定的染色方案中,每个ooo非红即蓝那么就有一个非常好的性质,就是一个格子如果为红色不可能去和上下的格子结合,一个格子如果是蓝色那么不可能和左右结合所以可以把行和列拆开来,分别计算每一行的最大贡献和每一列的最大贡献定义f[i]f[i]f[i]表示连续iii个ooo的所有方案造成的总贡献Ⅰ.当第iii个位置为蓝色时,贡献是f[i−1]f[i-1]f[i−1]Ⅱ.当第iii个位置是红色时①.当第i−1i-1i−1个位置也是红色时,让i,i−1i,i-1i,i−1结合结果不会变差此原创 2021-09-04 19:24:28 · 256 阅读 · 0 评论 -
Codeforces Round #721 (Div. 2) C. Sequence Pair Weight(map)
LINK考虑aj==ai(i>j)a_j==a_i(i>j)aj==ai(i>j)时造成的贡献为j∗(n−i+1)j*(n-i+1)j∗(n−i+1)因为当一个子数组左端点小于等于jjj,右端点大于等于iii就可以包含这个对而且前面有若干个位置等于aia_iai,这些位置是j1,j2.....j_1,j_2.....j1,j2.....也就是和他们造成的贡献和是(n−i+1)∗∑j(n-i+1)*\sum j(n−i+1)∗∑j用个mapmapmap记录一下就好了#原创 2021-09-03 22:38:55 · 206 阅读 · 0 评论 -
Codeforces Global Round 14 E. Phoenix and Computers(组合数,dp)
LINK灯=电脑考虑最后的点灯状态,大概是一段连续的灯被手动打开,一个被动打开,一段连续的灯被打开…再单独考虑打开一段连续长kkk的灯是怎么做到的由于不能使任何一盏灯被动打开,唯一的策略是先打开其中的任意一盏灯,之后每次都选择左边和右边任意一盏没打开的灯去打开于是方案数为2k−12^{k-1}2k−1那么定义f[i][j]f[i][j]f[i][j]表示前iii盏灯,手动打开了jjj盏的方案数f[i][j]=∑k=1i−jf[i−k−1][j−k]∗2k−1∗(jk)f[i][j]=\sum\原创 2021-09-03 20:26:51 · 248 阅读 · 0 评论 -
Codeforces Round #720 (Div. 2) 1521 C. Nastia and a Hidden Permutation(交互,技巧)
LINK一个1−n1-n1−n的排列ppp,你可以询问至多⌊3n2⌋+30\lfloor \frac{3n}{2}\rfloor+30⌊23n⌋+30次来得到这个排列每次询问先选定一个数xxx,然后询问分为两种Ⅰ.得到max{min(x,pi),min(x+1,pj)}\max\{\min(x,p_i),\min(x+1,p_{j})\}max{min(x,pi),min(x+1,pj)}的值Ⅱ.得到min{max(x,pi),max(x+1,pj)}\min\{\max(x,p_原创 2021-09-02 19:41:29 · 521 阅读 · 0 评论 -
#739 (Div. 3) 1560. F2. Nearest Beautiful Number (hard version)[数位dp+二分]
LINK考虑数位dpdpdp,对于不超过kkk种数字的限制,我们使用一个101010位的二进制数来表示[0,9][0,9][0,9]是否已经出现过定义f[i][j][k]f[i][j][k]f[i][j][k]表示高位枚举到低位的第iii位,已有数字的二进制状态为jjj,在不超过kkk种数字的限制下有多少个数满足限制这样数位dpdpdp的复杂度是10∗210∗1010*2^{10}*1010∗210∗10对于每组询问nnn,我们先使用数位dpdpdp求出[1,n−1][1,n-1][1,n−1]有x原创 2021-08-25 21:35:40 · 243 阅读 · 0 评论 -
Codeforces Round #737 (Div. 2) D. Ezzat and Grid(线段树,dp)
LINK定义f[i]f[i]f[i]表示以第iii行结尾,最少删掉的行数若第iii行与第jjj行有交,有转移f[i]=f[j]+(i−j−1)f[i]=f[j]+(i-j-1)f[i]=f[j]+(i−j−1)但是显然不能暴力枚举jjj,而且判断线段是否有交也得枚举,也是个大问题考虑j1,j2j_1,j_2j1,j2行都覆盖了点www,下次某一行iii如果覆盖了点www,显然是从j1,j2j_1,j_2j1,j2挑一个代价更小的转移而来然后再注意转移方程,其实可以写成f[i]=(f[j原创 2021-08-10 10:38:24 · 369 阅读 · 0 评论 -
Codeforces Round #737 (Div. 2) 1557. C. Moamen and XOR(组合数,位)
LINK题意构造一个长nnn的数组aaa,使得ai∈[0,2k−1]a_i\in[0,2^k-1]ai∈[0,2k−1]且满足a1&a2&a3...&an=a1⊕a2⊕a3...⊕ana_1\&a_2\&a_3...\&a_n=a_1\oplus a_2 \oplus a_3...\oplus a_na1&a2&a3...&an=a1⊕a2⊕a3...⊕an求方案数考虑从二进制高位依次考虑到低位在之前的位原创 2021-08-10 10:27:31 · 274 阅读 · 0 评论 -
Codeforces Round #736 (Div. 2) D. Integers Have Friends(差分+区间gcd)
LINK也就是找到一段区间[l,r][l,r][l,r],满足ai=ki∗m+sa_i=k_i*m+sai=ki∗m+s其中kik_iki为系数,s<ms<ms<m考虑枚举sss,把数组每个数都减去sss,这样相当于求最长的子区间满足gcd>=2gcd>=2gcd>=2但是枚举sss太浪费时间,我们可以直接做数组aaa的差分数组消掉sss于是在差分数组上求一个最长的区间满足gcd>=2gcd>=2gcd>=2即可区间gcdgcdgcd原创 2021-08-04 16:33:59 · 316 阅读 · 0 评论 -
Educational 112 1555.A. PizzaForces(思维)
LINK三种饼(6,8,106,8,106,8,10)的单位代价都是2.52.52.5考虑nnn为偶数时候当n<6n<6n<6特判掉否则,使用6,8,106,8,106,8,10一定可以恰好凑成nnn因为使用3,4,53,4,53,4,5去凑nnn是一个等价的问题,而且3,4,53,4,53,4,5可以凑成任何大于等于333的数考虑当nnn为奇数时此时不能恰好凑成nnn了,但是可以恰好凑成n−1n-1n−1然后为了凑成n−1n-1n−1买的饼一定存在不全为101010饼的方原创 2021-07-31 08:50:20 · 588 阅读 · 0 评论