![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Atcoder
文章平均质量分 65
rag_doll
这个作者很懒,什么都没留下…
展开
-
AtCoder ABC215
本期难度适中。原创 2024-03-08 11:10:36 · 1020 阅读 · 0 评论 -
ABC212
本期开始题目变为8道,100+200+300+4002+5002+600的模式。F和G两个500分题均有难度,洛谷评分蓝。原创 2024-02-29 22:49:30 · 909 阅读 · 0 评论 -
AtCoder ABC201
本期很有难度,D E F都不是一眼能看出的题目。原创 2024-01-24 08:16:43 · 837 阅读 · 0 评论 -
AtCoder ABC198
本期F为群论题,很有难度。原创 2024-01-16 22:48:35 · 385 阅读 · 0 评论 -
AtCoder ABC197
本期难度适中,比起前几期的FFT和网络流要容易一些,但是需要仔细思考。原创 2024-01-16 22:19:52 · 337 阅读 · 0 评论 -
AtCoder ABC194
这期比193稍微简单一点。原创 2024-01-11 10:48:21 · 398 阅读 · 0 评论 -
AtCoder ABC189
这套题值得写一写,从C题开始就很有技巧。原创 2024-01-05 11:43:13 · 778 阅读 · 0 评论 -
AtCoder ABC188
本期题比上期更简单,只有一个绿题,而且并不是很难的数学题,估计比赛时能AK。原创 2024-01-03 11:29:32 · 341 阅读 · 0 评论 -
AtCoder ABC187
本期题比较简单,但是如果不懂套路就难以想到。原创 2024-01-03 08:52:39 · 935 阅读 · 0 评论 -
AtCoder ABC186
E题和F题两个绿题。原创 2023-12-29 14:29:16 · 790 阅读 · 0 评论 -
AtCoder ABC184
本期题目依旧不是很难。C题数学,D题DP,E题宽搜,F题是折半搜索模板题。原创 2023-12-27 21:58:44 · 452 阅读 · 0 评论 -
AtCoder ABC 183
本期考察STL的性质较多,如果熟悉的话基本可以秒掉。原创 2023-12-27 08:37:47 · 360 阅读 · 0 评论 -
Atcoder ABC179
这期的题都可以用py写。原创 2023-12-20 11:15:58 · 360 阅读 · 0 评论 -
AtCoder ABC176
因为答案肯定在maxh和maxw的那些行列中,因此遍历一下行h和列w,如果map[h][w] == 1则跳过,不然就可以直接确定有一个点的答案是maxh+maxw。普通的memcpy是过不了的,因此需要记录一下每次发生update的点对。设dp[i][x][y]是第i次结束后留下牌面为xy的最大得分。在上一轮留下牌为bb的情况下,可以拿走bbb,转移为aa。转移的时候我们需要遍历所有的牌dp[i][j]转移的时候我们可以遍历剩下的一张牌i,那么。上一轮留下两张牌为ax的情况下,最短路的做法,最小堆维护。原创 2023-12-14 15:58:40 · 47 阅读 · 0 评论 -
AtCoder ABC175
起点向每个字符串连一条权值为w[i]的边,从回文前缀和回文后缀向终点连一条权值为0的边。在单纯的dp路径问题上增加一个维度,表示当前行拿到k个数的情况下最多能得到的分数。每次维护字符串本身,以及字符串是在左边拼接还是在右边拼接作为一个状态节点。如果能移到负半轴,那么取余数r求r与d-r里的最小值。比如abcab可以看成(abcab,0)每次拿这些节点去匹配字符串,相当于一条边。如果不能移到负半轴,那么终点就是答案。正数和负数是一样的,因此取绝对值。匹配cba后变成(ab, 0)再匹配cba后变成(c,1)原创 2023-12-12 16:51:54 · 50 阅读 · 0 评论 -
AtCoder ABC174
现在遍历颜色数组c,取pos[i]为当前color的最新位置,维护每个color的在区间内的个数(只有0或者1)。换句话说,每个color在要维护的数列里只出现一次并计数1,这样可以保证区间内color的数量就是区间color集合的元素个数。题目本身不难,这种求最大值里的最小值或者最小值里的最大值都可以用二分来进行求解。但是即使用浮点数往上取整,很容易有精度的问题,WA一个点。一开始理解错了Round Up的意义,以为是四舍五入。首先离线查询,按r前往后排序。最后的R置换最前面的W。原创 2023-12-08 13:30:44 · 63 阅读 · 0 评论 -
AtCoder ABC172
正确的方法是二分答案,并在答案n中遍历第一组选取的i与第二组选取的n-i个数。这样就可以通过质因数分解的方式,枚举出能整除n的质数a,然后通过上述公式计算。如果贪心去选,始终会选第二组。而正确答案显然是选第一组。例如第一组是8 1 1 1 1 1 1…第二组是7 7 7 7 7 7 7…时间内暴力解决,即调和函数。这里采用了另一种解法,在。虽然N很大,但是可以在。原创 2023-12-06 17:23:57 · 78 阅读 · 0 评论 -
AtCoder ABC170
BFS ,采用dist数组标记,如果已经预先访问到了,而且计算得到的步数是相同的,那么就break,不需要再浪费后面的步数去计算。模拟题,使用stl中的multiset就可以。从小到大排序,有相同数不计入,暴力计算。维护幼儿园的最大堆,以及总体的最小堆。原创 2023-12-05 11:23:39 · 37 阅读 · 0 评论 -
AtCoder ABC165
找规律1,这个规律比较简单,打印一下易得。LIS在树上的应用,模板题。所以遇到这种情况加1即可。注意递归前后保留上下文。搜索,然后check。原创 2023-11-29 11:25:19 · 38 阅读 · 0 评论 -
AtCoder ABC163
如遍历到u=2后,枚举子节点3,发现子节点里面最大子树和为2,还剩下sz[v]-2=3。在dfs处理时,设当前的节点为u,不能简单的将sz[u]加到sum中,而需要预先记录下之前的sum值。的用意在于,确保取2个数与取3个数下面取到的和是不相同的。sum[i]数组按搜索顺序,意思为访问到当前,颜色为i的最大子树和。以上图为例,访问到2完成后,红色最大的子树是以2为节点,sum=6。的情况下,检查能取到的最大和与最小和,此时中间的所有数都能取到。本题的关键是建立sum数组,从而求出连通集的大小。原创 2023-11-28 13:33:37 · 55 阅读 · 0 评论 -
AtCoder ABC162
但实际上k的取值范围很小,我这里取的稍微放大了一点范围。然后遍历后两个数,求第一个的前缀和。为不选中i位置的数周前面一共选中了k个数的最大和。为选中i位置的数后前面一共选中了k个数的最大和。这是一个调和级数的时间复杂度。空间复杂度用滚动数组优化。注意到每个值g的方案。原创 2023-11-23 17:47:19 · 47 阅读 · 0 评论 -
Atcoder ABC159
既然n范围是10,那么在n的宽度上做一个位操作,若i位与i+1位之间有切割,i位设为1,枚举横方向的切割方案,然后在竖方向上做贪心。先统计总的,然后减去选到的那个数再重新计算。观察了一下,发现在做到 i位时,可以去计算。其中sum是当前计算的和,F代表方案数。的三重循环,因此要记录一下前缀和。总体来说本期比较简单。原创 2023-11-22 08:33:02 · 50 阅读 · 0 评论 -
Atcoder ABC158
选中时右边覆盖链一直往右覆盖,需要找到覆盖链不能覆盖的第一个数next dp[i]+=dp[next]每个数进入后,在被覆盖到的时候出栈,因为被覆盖了以后就没有继续存在的意义了。设置两个数组分别代表前后加入的字符,reverse时交换数组。10和大部分质数是互质的,因此可以用前缀和的方法。范围足够小,遍历100/0.08内的整数就好。2和5与10不是互质的,但是只要看尾数即可。为了方便在栈里加入一个很大的数代表位置n。不选时dp[i]+=dp[i+1]设dp[i]为从i到n的方案数。原创 2023-11-21 14:31:12 · 61 阅读 · 0 评论 -
AtCoder ABC156
枚举0的个数,设有i个位置为0,那么剩下的n-i位置中要安放n个球,且每个位置至少放1个球,a个球放在b位置中每个位置至少一个球的方案数等价于在a个球的空隙中插b-1个隔板,因此为。由于原始数组中每个数都为1,那么操作等价于将1变为0,然后看剩下的一些位置中如何放球。由于a.b都不大,因此可以做。注意用递推计算逆元.最小值实际上可以计算导数,将复杂度降为。从0到100模拟一遍位置最小的点。原创 2023-11-20 15:44:31 · 49 阅读 · 0 评论 -
AtCoder ABC154
cap表示搜索是否被限制,当之前搜索的数字比s小时cap=0,否则cap=1,开始时cap=1。函数是从(0,0)到(r,c)点的所有组合数的和。pos表示当前搜索到的位置(开始为0,结束为n)1.每个(r,c)点上的数都是一个组合数。签到题,注意大小写和以前的不一样。num表示已经使用的非0数字个数。2.可以用容斥原理将ans拆成。将g按列分解(行也一样)签到题2,用个窗口即可。数位DP(搜索)的例题。原创 2023-11-14 19:29:43 · 66 阅读 · 0 评论 -
AtCoder ABC152
比如下图中有两个constraint,原题求满足所有的限制的方案,需要枚举每种黑色放置的方案,很不好做。如果反过来求不满足限制的方案,即在某些限制路径上全填白色,求总的方案数,那么就比较好做。所以最终不满足任一约束的方案数是2+2-1=3个,因为三条边全取白的方案在0b01和0b10中都计数了一次,因此按照容斥原理予以减去。由于不同的限制路径下边的集合会有交集,因此需要使用容斥原理计算。在这种情况下,不满足条件的方案只有1个,就是三条边全取白。f(1)=2,因为边2可以取两种颜色,边0边1全取白。原创 2023-11-14 11:38:48 · 82 阅读 · 0 评论 -
AtCoder ABC150
单纯的kmp似乎没什么思路,但是如果将每个数组相邻的数进行异或操作,就变成了kmp模板题。原因是4折半后为2,导致求得的lcm可以被2整除,如6/2不为半数。中,第一部分贡献1,第二部分分别由前面的数字贡献了1+1,因此是3;这部分仅仅和前面的那一位相关(当然这一位也要填1),因此贡献值是。我们可以将其拆成两部分,第一部分是“只要填了1就可以贡献1”中,第一部分贡献1,第二部分由第一位1贡献了1,因此是2.看第3位,他对答案的贡献是3+2+1+2=8(从上往下)比较巧妙的计数方法是将每一位的计算拆开来。原创 2023-11-10 17:45:04 · 70 阅读 · 0 评论 -
AtCoder abc148
需要找到T能“躲藏”的最长路径,也就是da[i] > dt[i]的i。A只需要等待在前一个格子让T遇上A即可。首先对每个点分别求到A和到T的最短路径。记为da与dt数组,接下来稍微要动一下脑子。trailing zero只与5的个数有关,因此算一下5/25/125…原创 2023-11-08 15:31:19 · 98 阅读 · 0 评论 -
AtCoder ABC146
在队列后面插入,如果当前的数据比队列后面的数据要小,那么那些排在前面的就没有必要维护了(因为前面的肯定比当前数据先出队列)比较暴力的方法是维护一个堆,但是不知道为什么一直RE,卡在第3个handmake点上。题目比较简单,点出度最大的度数就是颜色的种类,从该点开始搜索。注意遍历到当前时有长度限制。维护一个单调递增的队列,队列头是。BFS不好写,还是要用DFS。于是改成了单调队列的方法。是单调递增,因此二分。原创 2023-11-07 11:26:37 · 69 阅读 · 0 评论 -
AtCoder abc 144
元素两两相乘的积很明显的应该从a正序,b倒序进行相乘,此时可以保证L最小。如果不满足性质,那么将a扣掉份额。最后累计要扣掉的份额,计算是否满足题目需求。N=600下,枚举每条可能删的边会超时。但是由于只需要删一条边,因此针对每个点,只可能是它期望值最大的子节点和它之间的那条边被删掉。当你看到求数组某函数最大值的最小值,并且毫无头绪的时候,就应该想到二分。求数组元素的两两相乘积最大值不能超过L的解法,并求L的最小值。分两种情况,一种是水比一半面积少,一种是水比一半面积多。体积和面积是等同考虑的。原创 2023-11-03 14:46:01 · 74 阅读 · 0 评论 -
AtCoder abc143
单纯floyd求最短路径是不行的,因为如一条路径是2,3,2,从点1到点3最短路径是7,而l=4时从点1到点4要加两次油。第二个图中如果路径为2,2,3, 最短路径还是7,但是只需要加一次油。如果点s到点t可以一次到达,点s到点t的距离设为1,否则设为INF。问题的关键是,第一个图中点1到点3是无法一次到达,而图2中可以。排序后two pointer。再求一次最短路径就是答案。因此修改原最短路径图为。本题需要证明单调性质。原创 2023-11-02 16:44:28 · 174 阅读 · 0 评论 -
AtCoder abc142
求gcd中的质因数个数+1。原创 2023-11-01 13:33:58 · 64 阅读 · 0 评论 -
Atcoder abc141
C++提交了几次都没有过,反而是pypy一次通过。堆贪心,每次操作都在最大的那一个,然后重新插入。不能在线性基中贪心地选取最大异或和。原创 2023-10-30 15:13:31 · 66 阅读 · 0 评论 -
AtCoder abc140
为此,需要维护一个双向链表,记录下每个位置的左边和右边比它大的位置。从小到大遍历数字i的位置,遍历完之后将i的位置删除。字符串可以规约成RR…这类题目的通解是计算每个点能取到几个区间,将贡献和累加起来。每次操作只有把整段的R或者L反向,才能减少不开心的点。反向思维,考虑不开心的点。2.3两种情况是一样的。遍历比较一下相邻的值。原创 2023-10-27 11:21:46 · 144 阅读 · 0 评论 -
AtCoder ABC 138
由于当前的位置可能是在列表的后面,因此S重复一遍。S中的每个字符都可以列出一个在S中的位置列表。二分搜索当前的位置,算出每次移动的step。排序贪心,小的应该先除,大的后除。pypy不出意外的挂了。原创 2023-10-25 11:35:34 · 122 阅读 · 0 评论 -
AtCoder abc137
问题是如何判断松弛点对于最后的结果有影响。答案是该松弛点应该在从1到N的路径上。应该从后往前考虑,按天计算,维护一个当前可以取到的最大堆。因此用两个dfs判断每个点是否会被1访问,被N反向访问。由于有环,只需要用bellman-ford计算最短路。该式的意义在于,假如我们构造一个多项式。首先易见每条边都减一次cost。费尔马小定理的灵活应用。只有当x取到d时,多项式。才模1,其余情况下多项式。原创 2023-10-24 19:14:10 · 59 阅读 · 0 评论 -
AtCoder abc 136
对于每个因数,先进行模运算,然后排序,将左边的减1,右边的加1,找到一个分界点。推一下可以发现连续的RR…L可以作为一个独立的循环节。这种一个加一一个减一的操作,应该马上想到其和是不变的。最后这个循环节内的数字集中在RL的交界处。然后遍历可以被总和整除的自然数。再处理一下奇偶性就好。原创 2023-10-24 08:17:08 · 105 阅读 · 0 评论 -
AtCoder abc 133
接下来的第一层子节点,第一个可以乘K-1,第二个乘K-2,依次递减。第二层子节点,第一个点可以乘K-2,第二个乘K-3,依次递减。如果LR相差在2019内,那么遍历LR。剩下由于M长度为奇数,可以凑出。接着从后往前计算M的各项。普通的乘法原理,画图想一想。之后的子节点和第二层相同。原创 2023-10-20 15:37:32 · 62 阅读 · 0 评论 -
AtCoder ABC132
求把n个相同的球分到m个相同的盒子,1每个盒子至少一个球2每个盒子球不限的组合数。一开始用dfs去求(3步能访问到的点对),明显TLE。走三的倍数步能回到0层,这样只要能走到。陷入了“会做,但不完全会做”的状况。重要的是想清楚每一块代表的数字。水题,排序找中间数两边的差值。原图分为3层,每个点拆成。空挡插隔板法,高中数学。原创 2023-10-19 17:11:11 · 118 阅读 · 0 评论 -
Atcoder abc131
atcoder abc131原创 2023-10-19 10:00:10 · 97 阅读 · 0 评论