11 2022 档案

摘要:L. Fenwick Tree 题链 题目都说了 我们可以将这个序列看作二叉搜索树 我们显然序列越往后层数越高 我们一层一层的考虑 我们要是当前s[i]=1 显然是要往下一层传递一个贡献的 要是当前遍历到s[i]=1 但是 tr[i]=0 显然不行 tr[i]=1 满足 那么tr[i]>=2呢 我们 阅读全文
posted @ 2022-11-30 23:01 ycllz 阅读(86) 评论(0) 推荐(1) 编辑
摘要:Find the Maximum 题链 整理题意发现就是找一个连通块 然后让他的平均绝对值最大 平时的背包都是n2的 显然不能做了 我们考虑猜一些结论 当时我想的就是可能最多不会很多点 比如我们要是次大与最大挨着显然很好 要是离一个点比如 10 1 10 我们拿着显然也很好 要是离两个点比如 10 阅读全文
posted @ 2022-11-30 19:23 ycllz 阅读(16) 评论(0) 推荐(0) 编辑
摘要:Divisions 题链 构造 重点是以最少的变量最简单的方式 第一下就想到了二进制平凑 我们发现我们只需要让S先是一个单调不减的序列 要是有相等的 我们就可以拿去B 并且拿去B的满足每个数字不相干 但是我们仔细发现每个块只有2^n-1种(因为大家公用了空这种) 那没关系 我们除了最后加1就可以了 阅读全文
posted @ 2022-11-30 14:59 ycllz 阅读(18) 评论(0) 推荐(0) 编辑
摘要:E. Placing Jinas 题链 稍微手写一下发现就是一个杨辉三角 然后我们知道杨辉三角第n行第m个是C(m-1,n-1) 我们对应转化过来就是C(n+m-2,m-1) 然后我们注意处理的组合数到4e5因为最大是n+m-2 int a[N],b[N]; int qmi(int a,int k, 阅读全文
posted @ 2022-11-29 23:36 ycllz 阅读(16) 评论(0) 推荐(0) 编辑
摘要:G2. Passable Paths (hard version) 题链 我们思考一条链的特性 发现只要“确定”两端之后 就可以用LCA一遍判断是否是一条链的 我们如何确定两端 首先深度最深的一定是一端p1 另一端p2也可以用LCA判断 我们p2一定是与lca(p1,p2)!=p1,p2 让后我们也 阅读全文
posted @ 2022-11-29 21:26 ycllz 阅读(15) 评论(0) 推荐(0) 编辑
摘要:D. Doremy's Pegging Game 题目链接 挺难的一道计数 计数问题最重要的是考虑如果划分集合 然后不重不漏地计算出来 我们考虑枚举每一个序列的结束点 就是有n个 然后这n个显然是等价的 所以我们最后n即可 然后我们可以发现我们结束状态一定是“一边”点 就是最远的点距离不超过n/2 阅读全文
posted @ 2022-11-29 19:13 ycllz 阅读(42) 评论(0) 推荐(0) 编辑
摘要:F. Multi-Colored Segments 洛谷最优解 显然我们对于每一个线段可以分成左右两端考虑 我们先按照l sort一遍 然后每次计算与他最近的值 我们维护两个最大的r即可 然后每次更新 然后我们再倒着做一遍 对于每一个r 找到最近的l 然后每次更新l 我们l要记录次大和最大 因为颜色 阅读全文
posted @ 2022-11-29 01:49 ycllz 阅读(16) 评论(0) 推荐(0) 编辑
摘要:B. Fibonacci Strings 观察斐波那契数列 发现他们是相邻之间都有“进位”的 比如 a + b = c 按照题目要求我们对于一个数来说 我们为了不选相邻的背包 我们显然要贪心的选大的 这样 我们才不会出现选a+b==c的情况 所以我们直接贪心 将所有的c[i]放进优先队列 然后大的背 阅读全文
posted @ 2022-11-28 22:11 ycllz 阅读(29) 评论(0) 推荐(0) 编辑
摘要:A. Tower 首先我们先感性理解一下这个我们现用/2操作变了 再用+-1肯定是不坏的 比如我们现在a b两点需要用多次/2操作 我们先/2了再上下 相当于把上下操作*几倍的贡献 然后我们知道了就相当于n个数经过多个/2操作之后 大家都集中在了比较密集的地方再上下操作 这里我们可以理解为路径的问题 阅读全文
posted @ 2022-11-28 19:56 ycllz 阅读(178) 评论(0) 推荐(0) 编辑
摘要:C. Wish I Knew How to Sort 我们会发现此题的终点状态只有一个 起点状态也只有一个 所以我们的状态表示可以非常简单 我们可以发现我们为了达到最终的状态 我们用一些1来填补最后几个0的位置才是有效交换 所以dp[i]表示有i个位置的1待补的期望步数 这样我们的状态转移就是: d 阅读全文
posted @ 2022-11-28 19:25 ycllz 阅读(34) 评论(0) 推荐(0) 编辑
摘要:F. MEX vs MED 一开始写了个感觉每个点只会搞一次的那种线性 感性理解了很对 结果又wa又t int left=l-z-1,right=n-r; int cnt=2*now; for(int len=min(n-z,cnt);len>=r-l+1;len--) ans+=min({left 阅读全文
posted @ 2022-11-28 01:19 ycllz 阅读(19) 评论(0) 推荐(0) 编辑
摘要:F1. Nearest Beautiful Number (easy version) 很像网络赛北大出的那题 感觉这题是简化版 我们只需要把所有数都搞出来 然后二分即可 我们先枚举k==1的情况 这个很简单 先枚举长度 然后枚举数 k==2的情况呢 我们也是先枚举长度 然后再枚举两个数为什么 然后 阅读全文
posted @ 2022-11-26 22:09 ycllz 阅读(16) 评论(0) 推荐(0) 编辑
摘要:E. Obtain a Permutation 我们显然可以按列来看 对于每一列 我们发现我们求的就是一个模式串与模板串的最大匹配+位移贡献 因为模板串肯定是不同元素 我们直接 对于模式串的每个元素算出它距离模板串自己的位置的位移贡献 开个桶就可以了 最后要注意的就是判断(a[j][i]-i-1)/ 阅读全文
posted @ 2022-11-24 21:37 ycllz 阅读(20) 评论(0) 推荐(0) 编辑
摘要:D. Dr. Evil Underscores 看完题发现是异或 不难按位考虑 观察样例发现好像要是只要是一个分支的时候就可以为消除这一位的影响 我们直接建出字典树 发现要是该位只有一个分支我们显然可以选择与此分支相同的消除这一位的影响 要是不同 我们就相当于 选择进一个分支 这就是我们的dp了 d 阅读全文
posted @ 2022-11-24 20:48 ycllz 阅读(12) 评论(0) 推荐(0) 编辑
摘要:D. Cow and Fields 对于每个点 我们可以通过两次bfs求出 他离1最近的距离和离n最近的距离 对于连边就是 让d1[i]+d2[j]+1去更新最短路 我们要让d1[i]+d2[j]+1最大 我们先直接sort出来 发现第二个样例都过不了 原来是d1[i]+d2[j]可能在一条线上 我 阅读全文
posted @ 2022-11-24 00:09 ycllz 阅读(15) 评论(0) 推荐(0) 编辑
摘要:D. Paths on the Tree 思考问题我们发现我们路径总是可以走到底的 而不会中途中断 而且对于每一个分叉点 也就是每个儿子至少都会有当前还剩的k/儿子数 取余剩下的我们可以分给其他点 这样我们就可以想出一个比较暴力的状态 dp[u][k]表示u节点有k条路径经过的max 我们转移的时候 阅读全文
posted @ 2022-11-23 02:00 ycllz 阅读(27) 评论(0) 推荐(0) 编辑
摘要:D. Carry Bit 很好转化题意 发现就是一个进位就会产生1贡献 那我们发现要产生进位 至少在低位会有一个1 1出现 然后接着下一位我们要让他继续进位的话只有 01 10 11三种选择 00则会断掉进位 所以对于每一个长度为n的数组来说 我们要找出有k个进位的方案数 我们可以先枚举我们进位段有 阅读全文
posted @ 2022-11-21 15:12 ycllz 阅读(94) 评论(0) 推荐(0) 编辑
摘要:H. Crystalfly 我们观察发现只有时间1和3才是有效的情况 我们首先来考虑只有1的情况 那我们设f[u]表示u点蝴蝶已经被驱散的子树的max g[u]来表示u点蝴蝶没有被驱散的子树的max实际上g[u]只比f[u]多一个a[u] 我们只有1的情况就是选一个点g[v]其他都是f[v]我们维护 阅读全文
posted @ 2022-11-20 21:38 ycllz 阅读(12) 评论(0) 推荐(0) 编辑
摘要:C2. Skyscrapers (hard version) 相比于C1我们暴力找峰值 我们优化转移 考虑递推 l[i]表示以i作为峰值左边所有呈单调增图形的值 r[i]同 考虑这个的转移 要是左边一个比他高肯定不从比他高的转移 我们画个图会发现转移是找到左边第一个比他低的点来转移 这个可以用单调栈 阅读全文
posted @ 2022-11-20 19:26 ycllz 阅读(14) 评论(0) 推荐(0) 编辑
摘要:C. Klee in Solitary Confinement 我们先选出x和x+k两个数单独操作 我们统计的是x+k的最大贡献 转化题意 我们可以直接记录一个操作前x+k的贡献 然后再选取一个区间 就相当于 当前x+k就是-1的贡献 而x就是+1的贡献 这样就变成了我们之前的很金典的问题:选出一段 阅读全文
posted @ 2022-11-20 00:23 ycllz 阅读(30) 评论(0) 推荐(0) 编辑
摘要:G. Restore the Permutation 对于一个序列 要是我们从数小a[i]的开始 每次给这个a[i]选一个最接近她的一个小的 显然我们这样是 最合法的 但是怎么保证字典序最小呢 显然我们需要从后往前做 这样可以让字典序最小 但是这样合法性会差吗? 我们构造一种最维和的序列 2 4 6 阅读全文
posted @ 2022-11-19 14:47 ycllz 阅读(32) 评论(0) 推荐(0) 编辑
摘要:D. ConstructOR 转化题意 a|x=k1d b|x=k2d 我们考虑k1 k2同样 就只用让x包含a|b 对于a|b的每一位 我们用d的最后一位来填补 然后在线的要是a|b这里有 我们的x没有 显然要让d来填了 这样子就做完了 但是注意的就是我们的a|b的最后一位1要是小于d的最后一位1 阅读全文
posted @ 2022-11-16 22:59 ycllz 阅读(30) 评论(0) 推荐(0) 编辑
摘要:I. Infection n=2000,我们考虑dp 我们转化题意 发现就是找一个连通子块 然后连通块的权重就是其中任何一个点的a[i]其他都是p[i] 但是对于连通块相接的点 我们都要让他是(1-p[i]) 因为有选定源点这一个条件 我们本来的dp[i][j]还要加一维[0/1] 表示 第i个节点 阅读全文
posted @ 2022-11-15 14:06 ycllz 阅读(341) 评论(0) 推荐(0) 编辑
摘要:B. Bitwise Exclusive-OR Sequence 我们考虑一种构造方式就是 让一个点为0 然后连接他的就一直异或上他连接的目标 这样虽然不能符合题意 达到最小但是 我们可以发现这个如果出现环的话 就会有冲突 我们必须让这个环的异或和为0 才是合法的 然后我们考虑如何去最小值 我们发现 阅读全文
posted @ 2022-11-13 21:24 ycllz 阅读(29) 评论(0) 推荐(0) 编辑
摘要:C. Zero-Sum Prefixes 考虑通过0来分块 我们令第一个块内没有0 其他都有 我们计算第一个块直接前缀和即可 后面因为每个块都有一个0 所以我们可以选择更改一次 我们更改显然是对他前缀和进行操作 我们直接处理出前缀和 再维护一下mx即可 我们思考一下为什么这样做是正确的 1.对于每一 阅读全文
posted @ 2022-11-13 01:58 ycllz 阅读(109) 评论(0) 推荐(0) 编辑
摘要:D. Checkpoints 对于单独的一个1 我们知道他的贡献为2 11 呢贡献值为4 101 贡献值为8 1001 贡献值为16 然后二进制拼凑就可以了 对于有奇数的显然-1 void solve(){ int n;cin>>n; if(n&1){ cout<<-1<<endl; return; 阅读全文
posted @ 2022-11-11 17:42 ycllz 阅读(9) 评论(0) 推荐(0) 编辑
摘要:C. Three Bags 我们发现这个题无非就是找一个最小的 吸收了其他两组的数再回报过去 但是自己组的只有两种选择 要吗直接负汇报过去 要吗就又要牺牲另一组的最小的一个数吸收这一组的贡献再回报给第三组 所以答案就是要吗牺牲两个最小的 要吗牺牲一组 void solve(){ int a,b,c; 阅读全文
posted @ 2022-11-11 16:52 ycllz 阅读(12) 评论(0) 推荐(0) 编辑
摘要:F. Unusual Matrix 这种题两种操作就相当于那种差分后再总体减的那种 我们考虑先只进行一种操作 比如说是行 我们对于每一行应该只有可能经过0/1次变换 都变成一摸一样的 然后再考虑列操作才可以得到全0矩阵 我们以第一行为模板 直接看通过一次变换后可以不可以变成一样的就可以了 int n 阅读全文
posted @ 2022-11-11 14:54 ycllz 阅读(12) 评论(0) 推荐(0) 编辑
摘要:E. K-periodic Garland 对于一个序列 显然我们只有%m相同的位置上才能放置1 不然肯定不合法 所以我们把他分成m个部分 记录一下总和 然后转化一下题意 发现他就是一个 然后我们直接暴力 然后贴板子就可以了 greedy做法 void solve(){ int n,m;cin>>n 阅读全文
posted @ 2022-11-11 12:18 ycllz 阅读(13) 评论(0) 推荐(0) 编辑
摘要:G. Strange Beauty 观察性质 我们发现他就是一个单向的关系 要是我们3能被9整除 那我们来一个能整除9的 那么一定能整除3 就是这个性质 我们考虑dp dp[i]表示我们以a[i]结尾的max 对于每一个数 我们只需要枚举他的因子即可 void solve(){ int n;cin> 阅读全文
posted @ 2022-11-10 23:06 ycllz 阅读(11) 评论(0) 推荐(0) 编辑
摘要:B1. Painting the Array I dp似乎不好考虑在本题 因为无论无何我们都需要维护前面的值 我只能做到n2的 我们考虑贪心: 就是把题转化成 当前数 放在那一队的后面 要是当前队尾都相等并且与x相等我们就随便放就好 因为两者性质相同 我们只考虑队尾 所以是一样的 要是队尾不相等了 阅读全文
posted @ 2022-11-10 20:56 ycllz 阅读(18) 评论(0) 推荐(0) 编辑
摘要:D. Playlist 对于一个序列 我们每一轮至少减少一个 并且减少的多少个同时也只会更新多少个不同的相邻的组 我们运用dsu将相邻gcd大于1的合并 就相当于将这个序列分成几个块 每次我们只询问这么块相邻的是否gcd==1 是我们加入ans 否则我们合并 当且仅当我们的ans数组为n了或者是只剩 阅读全文
posted @ 2022-11-10 16:47 ycllz 阅读(19) 评论(0) 推荐(0) 编辑
摘要:G. Old Floppy Drive 维护一个前缀和 再维护一个单调的前缀和 因为我们后面的数花费更大 只有贡献更大的时候才会有用 这样就好做了 对于每个查询我们知道他最少的轮数肯定时单调的减去最后一个数/一轮的值上取整 但是前面会有数比他花费少一点 记住我们前面是具有单调性的 我们直接二分出这个 阅读全文
posted @ 2022-11-09 17:28 ycllz 阅读(19) 评论(0) 推荐(0) 编辑
摘要:D. Genius's Gambit 构造 要是a>=k的构造很好想出来 但是a+b-1>k&&k>a时 其实也可以构造出来 我们考虑让中间的一些1经过减法变成0 然后到高位时再与低位的1相减 例如: 11111100000 10111100001 这样我们最多就可以得到a+b-2个1了! 最后注意 阅读全文
posted @ 2022-11-09 16:29 ycllz 阅读(19) 评论(0) 推荐(0) 编辑
摘要:C. 1D Sokoban 我们左右两边其实是一样的 我们就针对右边讨论 左边转化成整数就是右边一样的了 对于我们第一个箱子 我们枚举第一个箱子到每一个特殊点 这样显然包含最优解 考虑反例 要是我们这个箱子不放在一个特殊点 而是放在一个特殊点前面一些位置 我们显然应该把就近的特殊点全部覆盖掉 所以我 阅读全文
posted @ 2022-11-09 15:05 ycllz 阅读(12) 评论(0) 推荐(0) 编辑
摘要:B. Up the Strip 考虑dp dp[i]表示当前i位置的cnt 考虑转移 我们对于第一个操作显然只用维护一个后缀和即可 dp[i]+=s[i+1] 对于第二个操作 也很简单 我们知道i的值 z除一个数j下取整等于i z的范围就是 [ij,ij+j) 然后我们就会发现这是一个调和级数 最后 阅读全文
posted @ 2022-11-09 03:04 ycllz 阅读(17) 评论(0) 推荐(0) 编辑
摘要:A. Binary Literature 我们观察发现 就是找两个串要是最长公共子序列大于等于n的 我们就一定可以构造出一个出来 但是传统的最长公共子序列是n2的 我们考虑一些特殊的性质 我们发现他只是一个01串 01串的匹配可以说是非常大 三个01串 一定可以找到两个的0或者1 有大于等于n个的0 阅读全文
posted @ 2022-11-09 01:06 ycllz 阅读(17) 评论(0) 推荐(0) 编辑
摘要:F. Education 考虑贪心 显然我们每次只有这样一种情况 就是钱够了就升级 然后到一个位置就一直不动了 不可能我们先在一个位置钱赚够了 再赚几轮 再去下一级 那么证明我们知道下一级赚的更多 我们还要在这个少的赚几轮 不是春春脑瘫吗 所以我们枚举在每一个位置速通前面的 再在这个位置狂赚 时间复 阅读全文
posted @ 2022-11-07 13:04 ycllz 阅读(15) 评论(0) 推荐(0) 编辑
摘要:D. Inconvenient Pairs 观察完样例我们发现发现有且仅有一个共同区间的才是一对 这样我们直接记录x,y 二分出他在哪个区间内 check在共同区间的个数即可 但是还有另一种解法 我们直接对点进行排序 我们将他是这个区间的拿出来 然后就可以直接做了 bool cmp(pair<int 阅读全文
posted @ 2022-11-06 23:49 ycllz 阅读(13) 评论(0) 推荐(0) 编辑
摘要:B. AquaMoon and Chess 简单计数 观察样例 我们发现如果是 00111100 这样是11是随便可以放置在任何地方 但是要是011100这样的 就会有个单独的1出来 我们显然可以这样 011 100 我们左边的11可以在左边随便移动左边的0是l个 01 1100 右边的11也可以在 阅读全文
posted @ 2022-11-06 21:51 ycllz 阅读(21) 评论(0) 推荐(0) 编辑
摘要:D. Yet Another Problem 观察题干 发现一定要是odd 考虑发掘性质 发现之后还会将[l,r]长度为奇数的区间全部赋值成这个区间的异或和 我们设长度为len len-1个偶数个异或为0 最后一个异或剩下来还是总体的异或和 也就是我们进行了一次操作后异或和是不变的 我们考虑用这个性 阅读全文
posted @ 2022-11-06 17:03 ycllz 阅读(23) 评论(0) 推荐(0) 编辑
摘要:D. MEX Sequences 对于一个数x 要是前面出现过0,1,2...x-1 我们显然可以将他放在后面 要是前面出现过0 1 2 ... x-1 x 我们也可以将他放在后面 但是观察样例 还有一种情况就是 0 1 2 ... x-2 我们可以把 x 放在后面 但是之后我们只能放x-2 和 x 阅读全文
posted @ 2022-11-05 21:55 ycllz 阅读(16) 评论(0) 推荐(0) 编辑
摘要:D. Frog Traveler 考虑dp dp[i]表示i高度的时候最少多少步能达到 然后再bfs就可以了 但是这样是n2的 虽然看起来只有n个点 我们考虑优化 我们主要复杂度是当前点 还会去搜索其他已经入队的点 这样怎么办呢 我们可以维护一个set 要是已经入队的点 我们就不用去搜索了 我们直接 阅读全文
posted @ 2022-11-05 13:09 ycllz 阅读(16) 评论(0) 推荐(0) 编辑
摘要:G. MinOr Tree 看到或运算 我们思考如何按位来做 我们可以贪心的 从高位到低位的 要是该位可以都用0的来构成一颗生成树 我们显然是很高兴的 但是怎么check? 我们每次遍历一次边 要是满足要求: 1.该位是0 2.不是处于同一个连通块 这样子写出来 发现过不了第三个样例 我们发现还有第 阅读全文
posted @ 2022-11-04 20:28 ycllz 阅读(14) 评论(0) 推荐(0) 编辑
摘要:E. Rescheduling the Exam 显然我们能想到的每次操作都是先将最小的取出来操作 要是我们有两个数都是最小的 我们只有相邻的时候才能操作 要是大于两个 那我们就不管怎么操作都是寄的 我们直接输出即可 int cnt=0; for(auto i:v)if(i==mnn)cnt++; 阅读全文
posted @ 2022-11-04 18:13 ycllz 阅读(14) 评论(0) 推荐(0) 编辑
摘要:F. Kirei and the Linear Function 首先我们知道的是给定长度w 都是%9意义下的 所以我们枚举四个位置的数就是9^4 预处理出来答案 这里我们要去w长度的串%9 但是w的位数过高 我们不能直接就是 转成int来做 我们这里就有一个引理 x \mod 9的值与 x 的各位 阅读全文
posted @ 2022-11-04 12:05 ycllz 阅读(23) 评论(0) 推荐(0) 编辑
摘要:D. Explorer Space 我们考虑一个性质 就是他最多就是找到一条k/2的最短路径然后回来 这样是肯定是包含最优解的 这个观察第二个样例 我们将其改变一下 要是我们一半的长度等于k长度环的一半 那显然包含最优解 要是我们这个k长度的环 一半大一半小 显然我们也包含最优解 这样我们的dp状态 阅读全文
posted @ 2022-11-03 21:01 ycllz 阅读(18) 评论(0) 推荐(0) 编辑
摘要:C. Petya and Exam https://codeforces.com/contest/1282/problem/C 考虑贪心 先对于时间排序 然后贪心 我们可以不考 那我们可以在此之前离开 然后在离开之前这段时间多做几道easy if(v[i].second)ans=max(ans,re 阅读全文
posted @ 2022-11-03 14:00 ycllz 阅读(17) 评论(0) 推荐(0) 编辑
摘要:E2. Three Blocks Palindrome (hard version) 我们考虑一种最优构造 对于一个数x 我们肯定要的是他的前几个 再最后几个 中间选最多的一个数 这样显然是最优的 我们枚举x 再枚举前面要的长度 中间选的最多的一个数可以通过logn求解 总的时间复杂度是O(nvlo 阅读全文
posted @ 2022-11-02 22:46 ycllz 阅读(17) 评论(0) 推荐(0) 编辑
摘要:D1. Prefix-Suffix Palindrome (Easy version) easy版本 我们只需要n2 dp预处理出快速判断回文串 然后我们再通过双指针O(n)求解最大串 int dp[5010][5010]; void solve(){ string s;cin>>s; int n= 阅读全文
posted @ 2022-11-02 17:30 ycllz 阅读(19) 评论(0) 推荐(0) 编辑
摘要:E. New Year Parties 对于最大值 我们显然可以sort之后 贪心一下即可 正确性显然 对于最小值 我们发现会有三种情况 一种是三个挨在一起 一种是两个挨在一起 还有一种就是两个只隔了一个空隙 我们直接dp求解即可 void solve(){ int n;cin>>n; vector 阅读全文
posted @ 2022-11-02 14:22 ycllz 阅读(23) 评论(0) 推荐(0) 编辑
摘要:D. Christmas Trees 显然对于一个中间的点 要是不能向两边最近的扩展 我们直接判定他没有用处了 这样我们就有了bfs的做法 我们先把原点放进去要是能扩展 我们显然可以直接扩展 否则直接将其删去 这里有个小技巧就是mp.count要是0的话也是算的 还有这道题不知道咋回事有点卡常 线性 阅读全文
posted @ 2022-11-01 22:20 ycllz 阅读(16) 评论(0) 推荐(0) 编辑
摘要:D. Same GCDs 对于题目所给的公式 gcd(a,m)=gcd(a+x,m) 由辗转相除我们把第二个式子变一下 gcd((a+x)%m,m)x的取值范围为[0,m) (a+x)%m也是 所以我们可以直接写成 gcd(a,m)=gcd(x,m) 我们设gcd为g k1g=a k2g=m k3* 阅读全文
posted @ 2022-11-01 20:24 ycllz 阅读(13) 评论(0) 推荐(0) 编辑
摘要:C. Uncle Bogdan and Country Happiness 看完样例发现 我们要是通往该点不开心的人数很少是没有什么限制的 只要是合法的 也就是h[i]在[-经过该点的人数,经过该点的人数]的范围内就是可以的 我们主要check的是 通往该点不开心人数较多的时候 我们肯定光靠自己的该 阅读全文
posted @ 2022-11-01 15:56 ycllz 阅读(15) 评论(0) 推荐(0) 编辑
摘要:D. Task On The Board 观察样例 我们发现一定会有0的存在 然后呢? 我们发现给出的题意中只是小的字符一定会加上与比它大的字符的距离 数据范围是50 我们知道了最大的字符 我们考虑如何去找第二大的字符 显然第二大的字符只会加上与最大字符的距离 我们直接枚举一维 计算与大字符的贡献 阅读全文
posted @ 2022-11-01 14:35 ycllz 阅读(21) 评论(0) 推荐(0) 编辑
摘要:E. Two Platforms 读完题 发现好像跟y坐标没关系 考虑dp dp[i][0/1/2]表示以第i个点结尾的用了0/1/2个板子的max 显然我们对于0我们都是初始化为0 对于dp[i][1]我们直接dp[i-k][0]+区间[i-k,i]点的个数 对于dp[i][2]我们显然相交不会是 阅读全文
posted @ 2022-11-01 13:25 ycllz 阅读(17) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示