- 博客(5)
- 收藏
- 关注
原创 Getting Zero
在mod上考虑我们发现,32768为2的15次方,那么看第二条路我们发现是直接增加2的因子数,最多15次就能倍32768整除,也就变成了k*2的次方形式,mod后得k,最多不超过15次;我们发现是为了增加2的因子数才使用这条路,因为1到32768的数中包含2的次方数不同,进而我们使用打表的方法,预处理出1到32768的所有2的因子数,再进行遍历,注意,因为我们的次数最多不超过15次,所以只遍历15次即可。变成 $(v + 1) \% 32768$ 或者 $2\times v\%32768$,
2024-02-21 14:28:25
353
1
原创 Erase and Extend (Easy Version)
题意说可以删除最后的字符,也可以使当前字符翻倍,也就是说让字符增加的唯一途径就是翻倍,而第一个字符永远存在,我们可以从第一个字符开始枚举,如abcd,我们有a,ab,abc,abcd这四种情况,将不足k个的串翻倍,当大于k个时删去k个之后的元素即可,最后比较字典序找出最小的一个串即可。你需要找到 $s$ 进行操作后获得的所有长度为 $k$ 的字符串中**字典序最小**的字符串。- 将 $s$ 变为 $s+s$,$+$ 表示字符串连接,也就是复制一次字符串。### 样例输入 #1。### 样例输出 #2。
2024-02-20 16:29:23
1065
原创 Compression and Expansion
先将思路,这道题核心思想就是对“1”的理解,我们可以把问题简化成这样一个模型,当输入x==1时,在数列的后接上1,这毫无疑问,关键就是删除加一的操作,那么我们可以这么想,只要不是1的数都来自删除若干数加1得来的(若干数包括0),那么从后往前数就数列中一定存在x-1这个数等待被加,然后将这个数之后的全部删除,至于为什么要从后往前数,我们举个例子,1.3.2.2,如果输入3,从后往前数就有1.3.2.3,而从前往后数就有1.3.3,少了一个分支,因此根据题意我们了解到从后往前得到最优解。
2024-02-20 01:42:41
1081
原创 Points on the line
tip:这题似乎跟Blance Round那题思路一样,都是先求留下的符合题意的最长数列,那么删除的就是最少的,那么核心问题就变成了求最长符合题意的数列长,思路为遍历排序后的数列,找出max满足题意的数列长,至于为什么要排序,因为排序后的数列相邻数才最小·。题目大意: 给你n个数,要使最大值与最小值之差小于等于d,最少应该删除几个数。输入格式: 第一行n和d。### 样例输入 #1。### 样例输出 #1。### 样例输入 #2。### 样例输出 #2。### 样例输入 #3。### 样例输出 #3。
2024-02-19 20:07:22
827
1
原创 洛谷——Balanced Round
然后也是最重要的思想,使用逆向思维,让你求需要删除的最小数,也就是说只需要求符合条件的留下来的数的最大数量,剩下的也就是删除的最小数。对于第一个样例,我们可以移除前两个问题并得到一个问题的排列,其难度为【4,5,6】,连续的两个问题的难度之差的绝对值满足|5-4|=1≤1,|6-5|=1≤1。对于每个样例的第一行包含两个正整数n(1≤n≤2⋅10^5)和k(1≤k≤10^9),n代表初始问题的数量,k代表连续的两个问题难度之差的绝对值的最大值。你最少需要移除多少道题目,才能使问题的安排是平衡的?
2024-02-19 19:53:43
1466
1
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人