P1852跳跳棋 题解
摘要: 好妙啊!这道题让我大开眼界! 写一篇题解加深一下印象。 思路 我重点对把原问题建模成一个树上问题的部分进行补充。 最开始读题的时候没有看到最多只跳过一个棋子,没想到这竟然是突破口。 我们假设一个状态 (x,y,z)(x,y,z)(x,y,z),不妨设 xyzxyzxyz。 考虑它能怎么变化?这里为了
4
0
0
[ABC338E] Chords 题解
摘要: 思路 思路还是很显然的,简单总结一下思路: 首先,将圆环从点 1112N2N2N 切开,并将其拉直成一条直线。 在切开状态下,原来的弦变成了直线上的曲线。我们需要判断这些曲线之间是否存在交点。 在切开状态下,曲线之间的交点等价于满足 Ai<Aj<Bi<BjAi<Aj<Bi<BjAi<Aj<Bi<Bj 的不
24
0
0
CF1898D Absolute Beauty 题解
摘要: 思路 容易发现,如果 ai>biai>biai>bi 则将 aiaiaibibibi 交换。 在数轴上标出要交换的四个数的位置若线段 aibiaibiaibi 和 线段 ajbjajbjajbj 互不相交,此时交换比两条线段处于其他位置时更优。 具体证明这里就不再赘述,其他题解讲的已经很清楚了。 所以只需
6
0
0
[ABC347E] Set Add Query题解
摘要: 思路 通过读题发现,每个数变化当且仅当这个数在集合内。所以不妨设它被添加进来的时间点为 LiLiLi,它被删除的时间点为 RiRiRi,所以它被增加的数量就是这段时间内集合数量之和。所以用一个变量 cntcntcnt 模拟当前集合内有多少个数,前缀和维护即可。具体实现参见代码。 代码 #includ
19
0
0
CF825F String Compression题解
摘要: 思路 容易想到是个动态规划。首先设 fififi 表示字符串前 iii 个字符所组成的字符串的答案。状态定义好了,接下来就是考虑如何转移了。因为由 fififi 可以得到所有 fjfjfj,其中 i+jleni+jleni+jlen,转移方程为 fi=fj+xfi=fj+xfi=fj+x,其中 xxx 为 字
11
0
0
P10378 [GESP202403 七级] 交流问题题解
摘要: 思路 我们把关系想成一张图,每次输入就给两个人连一条边。 因为一个人只有两种选择,所以我们在一个联通块内随便找一个点,跑一遍搜索,找出这个联通块内的答案。代码如下。 void dfs(int u,int color) { cnt2++;// cnt2是这个连通块内的总点数 cnt1+=color;/
50
0
0
[ABC352E]题解
摘要: 思路 这里提供一种暴力做法。方法就是当边数到达一个值过后就不加边了。我取的值是 500000500000500000,实际上可以开大一些,只要 xlogxxlogxxlogx 不超时就行了。 代码 赛时提交记录 #include <bits/stdc++.h> using namespace std; #define i
4
0
0
[ABC352D]题解
摘要: 题意 在长为 nnn 的序列 aaa 中 找出 kkk 个数,设它们的下表为 p1\(\)p2p1\(\)p2p1\(\)p2pkpkpk,满足这 kkk 个数从小到大排列过后是一个公差为 111 的等差数列。求满足条件的 kkk 个数的最大的 ppp 减去 最小的 ppp 最小
8
0
0
CF1859A题解
摘要: CF1859A题解 思路 考虑一种极端情况,bbb 数组内的数全部比 aaa 大,这样也无法整除,所以这就是这道题的突破口。我们让 bbb 数组内的数全部比 aaa 里的大,最方便的实现方法就是把原数组内的最大的数放进 bbb 数组,剩下的放进 aaa 数组。注意特判无解情况
4
0
0
[ABC258Ex] Odd Steps 题解
摘要: 思路 拿到这道题,第一时间肯定想到是 dpdpdp 题目。 朴素 DP 用 dpidpidpi 表示序列和为 iii 的序列个数。因为原数组由奇数组成,所以 dpdpdp 只可能由 dpi1dpi1dpi1dpi3dpi3dpi3 等等转移过来,若 iAiAiAdpi=0dpi=0dpi=0。即
6
0
0
点击右上角即可分享
微信分享提示
深色
回顶
展开