自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(12)
  • 收藏
  • 关注

原创 AtCoder Beginner Contest 174 ABC174 C题 Repsept

题意:给定一个序列,序列是7,77,777.....,再给定一个值K,问在序列中,第一次出现K的倍数的位置在哪?题目很良心,放在C题的位置,很容易就可以猜出来答案范围在给定的数字范围以内,可以直接暴力,但证明这个题解法的正确性比做这个题难多了,下面是题解的证明。%p一定=1,W为p的欧拉函数(1到p-1中和p互质的数字个数 )而p的欧拉函数大小一定在p的范围里(1e6),故直接枚举即可。假设k是7的倍数,则可以把7除过去,原理同上,否则,由于7和9k互质,%乘法具有分配律,原式可转化为。

2024-05-08 16:17:12 276

原创 AtCoder Beginner Contest 252 ABC252 D题 Distinct Trio

正常思路:枚举中间元素,加上两边元素数量各自乘积,减去左右两边相同元素的组数,减去左边元素和自己相同的组数,减去右边元素和自己相同的组数,容斥一下,还要加上2倍左右两边和自己相同的组数,可以在线性时间解决,就是细节有点多。好的思路:不就是求比自己小的元素的数量乘以比自己大的元素的数量*自己的数量,没有细节,非常好些,下面是第一种思路的code。给定一个序列,求三元组的数量,使得三个元素位置不同,大小也各不相同。

2024-04-25 17:04:56 204 1

原创 AtCoder Regular Contest 137 ARC137 B题

选择 一个连续子序列,翻转其中的元素:将 0 转换为 1 ,反之亦然。在此,您可以选择一个空子序列,在这种情况下, 序列中的元素不会发生变化。考虑类似于最大子序和的做法,可以线性求得,由于每次加入一个值,序列的值的变化一定是+1/-1的,所以1的数目肯定是可以每一个都取到的。由于翻转会使得1也变成0,所以我们希望使得某一个序列 0的数目-1的数目最大。您的得分就是 序列 中 1 的个数。最小同理,最终答案就是最大+最小(二者为正的情况)给你一个长度为 N的01序列 .下面的操作你要做一次。

2024-04-25 16:59:50 99 1

原创 AtCoder Regular Contest 174 ARC174 B题 Bought Review

显然1,2星评论也是不用刷的,那么三星评论需要刷吗?这里会有个误区,就是会觉得如果三星评论价格足够低,可以疯狂刷三星使得平均值逼近与3,然后使用4/5星刷一下就可以到3,下面来证明他的错误性。用从 1 到 5 的整数颗星来评论餐馆,起初对于每颗星都有各自的原始数量,餐馆老板想让自己餐馆的平均评分>=3,所以要刷好评,1-5星的评论有各自的一个价格,问平均评分刷到3星的最低价格。否则的话,多用一个五星又太浪费,奇数-1用五星,剩下一个用四星即可。如果为奇数,但五星价格<=四星,也全部用五星。

2024-04-25 16:50:39 199 1

原创 AtCoder Beginner Contest 280 D题 Factorial and Multiple

考虑容斥,对于素因子x来说,具有该因子的数字一定是x的倍数,但一个数字显然可能具有多个x因子,所以容斥,枚举x的1,2,3...次方的倍数对答案贡献。将x分解成素数积,可以注意到一个事实,即n的阶乘可以整除x,那么对于任意x的一个素数,将n的阶乘分解成素数积后,该素数的数量一定大于等于x的数量。也有其他做法:由于x不是很大,素因子不会有很多个,每个素因子的数目也不会很多,我们直接枚举素因子x的倍数,算出每个倍数有多少个素因子即可。我们可以二分n,直至找到最小的n,满足n的阶乘的x的因子数目>=y。

2024-04-24 16:32:08 127

原创 2023 (ICPC) Jiangxi Provincial Contest(江西省赛)

要使得其最小,即要找到最小的两端差分,查询操作变成了查询前最小k-1段差分之和,这一点我们可以先将差分数组求出来,随后排序+前缀和,但这里还有一个修改操作,这也是让我止步的地方,想了很久没有思路,但这里注意到修改后的值不是凭空产生的的,是与左右两个数有关系的,这里注意到。具体的,每次操作会先给出操作的类型,如果是 0 表示是第一种操作,如 果是 1 表示是第二种操作。取最大值n,则对于x=a左右一定范围的函数,超过一定范围后,其在x=a的值一定大于n,则这些范围的函数可以不用再看,我们取极端情况,其。

2023-05-25 12:03:52 976 4

原创 Codeforces Round 666

同时考虑到随着q增大,花费一定是先减小后增大,若ans一旦变大,则break,同时考虑到n过大导致答案直接爆掉,所以当花费大于1e15时直接break(这是不可能用到的取值,且后面的底数可以不用考虑,因为随着底数增大,答案更加会超过1e15。=0,先选择前n-1个数,将前n-1个数加上(n-1)*a[i],再选择最后一个数加上(n-1)*a[n],使得序列的所有数字全部变为原先的n倍,最后选择整个区间,所有数字减去n*(a[i]),这样每个数字都成为了0。若n==1,则一次即可,后面加0就行。

2023-05-24 15:13:51 71

原创 Educational Codeforces Round 94

题意:给定一个长为2n-1的01字符串S,要求你构造一个长为n的字符串,使得该字符串与 s[1..n], s[2..n+1], s[3..n+2], ..., s[n..2n−1].至少存在一位相等观察到每个字符串都有s[n],因此只需要将字符串全部改为s[n]即可。

2023-05-24 11:15:48 150

原创 2023第五届河南省CCPC大学生程序设计竞赛题解

初始时K个数字为0,考虑这样一个事实:若分给一个数字0.5,则其会变成1,而后只能给他1及以上的值,其才能变为2,对答案贡献(2-1(1是其原来的贡献)=1)而若将给他的1变为2个0.5,交给2个为0的值,对答案贡献为2-0=2,所以我们先给是0的地方0.5,使其贡献为1,若没有剩余,则所有数加起来之和就是最大贡献,若有剩余,对于任意一个数字,给他1的倍数是最划算的。首先想到线段树维护区间最值,只要每段的最大值小于等于下一段的最小值即可,但n过大,k从1到n,每次查询n/k,达到n方级别。

2023-05-10 13:25:59 1463

原创 AtCoder beginner contest 44 (ABC 44)题解

给定两个数字N,S,问是否存在一个进制b,使得N转化为b进制后,每一位的数字之和等于S(注意这里的每一位是该进制下的位,不是单独的一个数字,例如在100进制下,87564的每一位是64,75,8)若存在多个b,取最小的。才能继续,这样可以大大降低常数,同时b可能为1,为1时需要特判,否则进入check函数时会陷入死循环。若S<N,数据范围显然不能考虑从小到大枚举b,后面想到二分,但进制数从小到大变化,转化后的。,可以选取1-N张卡片,问有多少种选法使得每次选中的卡片上的数字之和的严格平均值为A。

2023-05-04 17:42:01 309 1

原创 AtCoder beginner contest 43 (ABC 43)题解

给定一个字符串和一个空串,字符串只包含01B三种字符,从字符串首开始,若为0/1则在空串后添加0/1;若为B且字符串不为空,则删除字符串最后一个字符,;给定一个只包含小写字母的字符串S,对于S中的大小≥2的连续字串,若字串内存在一个字母出现次数>字串大小的一半时,则输出这个字串的左端点和右端点,若S中不存在这样的字串,输出。考虑当长度为4时,必须至少出现3个字母相等,则长度为4时的条件等价与长度为3时的条件。,若存在两个字母相等,则存在这样的字串,同时注意特判长度为2时的情况。

2023-04-27 10:25:53 77 1

原创 AtCoder beginner contest 042 (ABC 042)题解

左下角的限制区域使得右边出现了一个”口子“即红色区域,该区域的点的方案数由于在限制区域的上方,使得其方案数可以正常求得,且每个到达右下角的点必然经过三个点中的一个(可能会有多个,此时为了避免重复计算,我们在算出到达红色区域的方块的个数时,不乘以红色方块到达右下角的方案数,而是乘以红色方块各自下面的方块到达右下角的方案数,这样相当于使得红色方块不向右走,而是只往向下走(因为向右走的方案已经包含在右边方块的方案数里面了))对于点(n,m)来说,“到达(n,m)"这件事有从(n,m-1)

2023-04-26 20:20:54 161 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除