赛后补题
文章平均质量分 56
赛后补题
ll的小唐
这个作者很懒,什么都没留下…
展开
-
Codeforces Round 901 (Div. 2)扫题
首先不考虑最少操作次数,本题求出n和m的最小公倍数就可以实现均分。也就是每位小朋友可以得到gcd(n,m)/m个苹果片。每个苹果被分成了gcd(n,m)/n份。那么从被分成的份数中可以得到分成的份数必须是2的次方数。所以在这里通过b&(b-1)去除数中的最后一个1,也可以用来检测是不是2的倍数。本题直接做得话删除并没有什么规律,也不是每次删最小的就是最优的选择。最后将所有得苹果片数求出来来,计算多出来的苹果片数就是切了多少刀,因为每切一刀就增加一个苹果片。本题要求将n个苹果,每次可以将一个苹果分成两半。原创 2023-11-16 20:47:23 · 137 阅读 · 0 评论 -
Codeforces Round 906 (Div. 2)扫题
那么对于有1节点参与的来说:a[i]+a[1]>=i。毕竟只要有一个a[i]>=i后后面再有节点相连就可以继承a[i]的值了。由于想要是完全不对称字符串,而添加的字符串是01,是一个偶数。如果左右两边都是1的话,那么就给左边位置添加01,如果左右两边都是0的话,那么就给右位置添加01。本题提供一个01的字符串,然后可以将01插入到字符串的任何位置,不限次数。又有添加的字符串时01,不改变01的相对数量。那么对于这道题来说两个连通块想要连接就必须有至少一个连通块的数值a[i]>=i。当然这是最小的条件。原创 2023-11-14 21:34:19 · 125 阅读 · 0 评论 -
Educational Codeforces Round 157 (Rated for Div. 2)C,D
C题要求寻找所有符合要求的拼串,那么一眼暴力就是枚举所有拼串组合的可能性,但这样必然会超时。我们不妨从每一个数作为左边或者作为右边来入手,当某一个数作为左边的时候那么这个拼后的串的中间点就去这个数里面去寻找,可能是在某处也可能是这一整个数。那么这样的去寻找就可以将所有符合要求的组合找到。那么我们选定一个数的某个部分作为拼后串的左半部分后,就可以确定右半部分需要总和是多少以及多长。在这里事先将每一个数的长度和总和求出来,那么在寻找的时候可以直接hash去寻找个数,加快速度。原创 2023-11-05 21:41:11 · 179 阅读 · 0 评论 -
B. 攻防演练
这时候就需要去记录后面各种字母的最近下标,从中选取最远的那一个就是可以包含集合里面全部字母的序列。还有一个小点:本题需要输入输出的数据量大,不能使用c++的cin和cout。那么ab中可以选a或选b都行,又有三个ab,和排列组合的方式相似,可以证明一定可以选全长度为3的所以排列。所谓倍增的方式其实是每次都双倍跳跃,同时数也在双倍增加。当第一次跳到最远的地方的时候未必就是最长的长度。在记录了各个字母最近下标的最远下标后,采用倍增的方式快速计算。随后看这样的序列有多少种就可以得到需要多长的长度了。原创 2023-08-20 20:29:37 · 97 阅读 · 1 评论