07 2024 档案

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