at
文章平均质量分 50
想出成果的acmer
当你越来越漂亮的时候,自然有人关注你,当你越来越有能力时,自然会有人看得起你,改变自己,你才有自信,梦想会慢慢的实现,要做好你自己,懒惰可以毁掉一个人,勤奋可以激发一个人,不要等到夕阳西下的时候才对自己说如果当初…如果…我就会怎么样,之类的话,都已经晚了,我只想告诉你一句话:要做一个连自己都羡慕的人!
展开
-
abc 288 D (差分)
有q组询问,每次询问一个区间是否为good:执行任意次operation,使得区间内所有数变成0.每次operation允许选择一个长度为k的区间,令该区间中的每个数都+c(c为任意常数)。因为这些位置的最后一个位置操作影响的是b[r+1],它不在[l,r]区间内,所以这些位置就可以任意变,一定能变成符合题意的。题目要求全变成0,也就是说要把b[l+1] 到 b[r] 都变成0,b[l] 变成 - a[l-1].1.对于模k相同的位置的差分数组的和要求是0才可以,因为每次操作和不变的。原创 2023-02-05 19:08:28 · 310 阅读 · 0 评论 -
abc 285_e
如果某个休息日距离最近的工作日有i天,那么他的贡献是ai.可以枚举之前一个休息日j在哪里,枚举从1到i-1即可。之后再加上[j+1,j-1]这个区间的贡献。已知j和i是休息日,那么在二者之间的天会有一半距离j更近,有一半距离i更近。令区间长度为len.如果是奇数,一个区间产生s[(len+1)/2]的贡献,另一个产生s[len/2]的贡献。除此之外,要注意到,有可能只选择一个休息日,所以上述枚举会漏掉这种情况。如果是偶数,左右区间都会产生s[len/2]的贡献。令dp[i]表示第i天为休息日的最大贡献。原创 2023-01-16 21:29:19 · 232 阅读 · 0 评论 -
abc 282 e(mutiset维护第k小)
对于删除的数x,如果x原创 2022-12-14 11:28:59 · 273 阅读 · 0 评论 -
abc 280 f(最短路也不会捏)
题目题意: 给定n个点m条边的有向图,每次给边都是(a,b,c),(b,a,-c)成对给出。q组询问,每次询问问两个点是否可达,若可达,输出最长路,顺便判断以下最长路是不是正无穷。思路: 并查集维护是否可达。有正环就说明最长路是正无穷。可以通过bfs判断,如果某个点被访问过且他的最长距离还能再次被更新,则说明存在正环。两点之间的路径比较特殊,可以bfs预处理每个连通分量中的根节点root到其他节点的距离数组,之后x->y = x->root + root->y. 假设x和y在root两边,没有问题;如果原创 2022-12-07 15:42:59 · 147 阅读 · 0 评论 -
abc 280 E(没开ll,调了半小时,输麻了)
题目题意: 起始有n滴血,有p的概率一刀2血,1-p的概率一刀1血,期望多少刀可以把怪砍到0血及以下。思路: 如果只是0血,直接开搞即可。假设目前n刀全是1血,然后依次把2刀1血换成1刀2血,用组合数统计期望即可。但是现在可能是-1血,那就额外计算以下-1血的情况,唯一的区别是最后必定是一刀2血,且之前伤害之和是n-1,假设n-1刀全是1血,然后依次把2刀1血换成1刀2血。PS: 遇到这种题还是先推明白式子再敲,推歪了然后再调再推很浪费时间。而且快速幂要开ll的,没开ll调了半小时,输。代码:原创 2022-12-06 16:31:24 · 133 阅读 · 0 评论 -
abc 280 D(侥幸蒙对捏)
题目题意: 给定最大为10^12的数k,求最小的n,满足n的阶乘为k的倍数。思路: 首先肯定需要对k分解质因数,其次肯定不能暴力从1开始枚举,因为遇到一个很大的质数2就寄了。那么我们从k的质因数角度考虑,n!必须要包含所有k的质因数对应的次数。如何凑k的质因数呢?比如k的质因数有2、3、5、7,只有2的倍数才存在因数,假设k中有3个2,至少需要2、4这两个数才能凑出来,所以n的取值不可能少于4了。对于k的每个质因子,我们都做此操作,取一个最大值。注意: k除完以后可能还剩下一个数,ans还要和他取一个原创 2022-12-04 15:55:02 · 178 阅读 · 0 评论 -
abc-270 D(经典D比E难)
一共有n堆石子,每个人每次可以取a[i]个石子(1原创 2022-09-24 22:03:07 · 207 阅读 · 0 评论 -
abc243 E(还久内阁摆烂)
题目题意: 给定n个点m条边的简单图,初始保证连通,你需要删除尽可能多的边。删边的要求:1.删除该边后该图仍然连通。2.删除该边后任意两点之间的最短距离不变。思路: 正难则反,真删确实有点难写。但是可以考虑哪些边必不能删除,如果删除后不连通或者最短路改变,就不能删除。通过floyd预处理最短路。枚举两点(i,j)和中间点k,如果dist[i][j] 可以通过 dist[i][k] + dist[k][j]得到时间复杂度:代码:...原创 2022-03-13 20:47:03 · 277 阅读 · 0 评论 -
abc242 D(脑子一团浆糊)
题目题意: 给定仅含A、B、C的字符串,进行至多t = 1e18次迭代,每次迭代是独立地将A->BC,B->CA,C->AB.求t次迭代后,第k个位置的字母是what?思路: 感觉是除除除,因为我们可以根据k反推推回它是由数组原始位置的哪个字母变来的。然后哩?如果t很大,我们发现这个字母是a、b、c轮着变换的,%3即可。注意这里下标从0开始,方可保证%3正确性和一致性。怎么想出来的俺也不知道,被自己菜哭了,今晚连着两把都被暴捶。时间复杂度: O(log1e18)代码:// Pro原创 2022-03-05 22:53:13 · 319 阅读 · 0 评论 -
arc136 B(靠,猜了个结论猜对了没敢写,还是太菜了,明天康康怎么证明)
题目题意: 给定长度为n的数组a、b,判断能否将A变成B。你可以执行无限次operation: 选择i(1<=i<=n-2),将a[i]、a[i+1]、a[i+2]循环右移。思路: 如果每个数不一样好弄,因为我发现逆序对奇偶性一致的能变,否则不能变。但是有想相同的数,瞎猜了一个结论一定是Yes,但是感觉挺离谱,没敢写,淦。看了题解发现猜对了,明天康康怎么证明,先回宿舍摆烂咯。时间复杂度: O(nlogn)代码:// Problem: B - Triple Shift// Contes原创 2022-02-27 22:39:08 · 324 阅读 · 3 评论 -
abc241 E(难蚌,一晚上补一道题,连个找循环节的题都敲不明白QAQ)
题目题意: 给定长度为n的数组(从0开始),执行k次操作。当前维护的和为sum,则增加a[sum % n]。(k <= 1e12)思路: 肯定不能暴力,k太大了。感觉大概率有循环节,打表看了看样例都 有,于是猜测大伙都有(不会证明)。然后就找找循环节就行,如果一个(sum % n)出现第二次,那就找到咧,然后随便算算就行了。今天算了半晚上还一直wa,太菜辣。时间复杂度: O(n)代码:#include<bits/stdc++.h>using namespace std;con原创 2022-02-27 22:23:20 · 93 阅读 · 0 评论 -
abc241 C(逆天盲僧竟是我自己)
题目题意: 自以为英语好,然后逆天的读错了题,卡了半天。最后实在受不了了看了眼D,发现D用multiset维护一下就完了。本题题意为给定nn的矩阵,有白色和黑色方块。你可以至多将两个白色方块变成黑色方块。判断能否凑出6个连续的黑色方块,横着、竖着、斜着都算。(n<=1000)思路: 直接枚举起点,然后四种情况都枚举一下即可。刚开始读错题了,问了队友,然后重新读了一遍题,感觉没问题了。我逆天的斜着只枚举了一种情况,赛后才反应过来。手有点生疏了,好久没有呼呼敲题。太菜辣。什么逆天盲僧时间复杂度:原创 2022-02-26 22:28:11 · 260 阅读 · 0 评论 -
abc-240 (为什么别人求的对称轴和我求的不一样...)
题目**题意:**给定数组C,给定n组(x,y).说明数组接下来会有y个x.数组B为数组C的前缀和,数组A为数组B的前缀和。Sigma y = m. 求Ai的最大值.(1<=i<=m).n = 2e5,m = 1e9,-4 <= x <= 4.思路: 等差数列求求和,推出表达式,然后对称轴的值也代入求求,即可求出最大值。因为函数在闭区间连续,必定有最值。二次函数其最值必在端点和对称轴(在范围内)中取.时间复杂度: O(n)代码:// Problem: F - Sum S原创 2022-02-21 11:02:10 · 493 阅读 · 0 评论 -
abc-239 E(多想想数据范围的暗示)
题目题意: 给定以1为根的树,树上每个点有点权x[i].有Q次询问,每次查询为i为子树树根中第k大的点权值.(n<=1e5,k<=20)思路: 仔细观察k最大为20,暗示我们什么呢?暗示dfs时可以只将儿子最大的20个与父节点最大的20个比较,更新父节点信息。每个点会被搜到一次,每个点用2klog(2k)时间排序更新前20大的数。而且,vector从0开始,我的第i大从1开始,调bug调了半天。lao的一时间复杂度: O(nk*log(k)),题解说log(nk),不知道怎么算的QAQ.原创 2022-02-21 09:55:03 · 439 阅读 · 0 评论 -
arc135 A(时间复杂度分析)
题目题意: 将x进行分解,使得分解后的所有数的乘积达到最大。对于x,可以将其分解为x/2(上取整)和x/2(下取整)思路: 记忆化搜索。当x<=4,不用分。否则,一直分。时间复杂度: O(logX) or O(logX * loglogX) 采用unordered_map假设n = 2 ^ k,T(n) = T(n/2)+1.T(n) = k = logn假设n != 2^k, 2^k-1 <= n < 2^k,可以证明最多执行2k次f(x),T(n) < 2 *原创 2022-02-14 16:30:08 · 213 阅读 · 0 评论 -
arc135 C(证的并不是很明)
题目题意: 给定数组a,可以执行任意次操作。选定数组中任意一个数a[i],令整个数组均执行^a[i].执行完操作后数组a的最大和。思路: 可以证明不执行操作和执行操作1次包含了所有情况。时间复杂度: O(nlogn)代码:// Problem: C - XOR to All// Contest: AtCoder - AtCoder Regular Contest 135// URL: https://atcoder.jp/contests/arc135/tasks/arc135_c// M原创 2022-02-14 10:51:45 · 272 阅读 · 0 评论 -
abc238 C(偷偷用__int128做题是吧)
题目题意: 求Sigma f(i) , f(x): <=x且和x位数相同的数的个数。 n = 1e18思路: 猜!1-910-99100-999都是从1开始,等差数列求和就完了。当时用了一个笨方法,都爆ll了,改用__int128偷偷过了。实际上是取模没有加括号,导致爆了,学废了。时间复杂度: O(logn)代码:// Problem: C - digitnum// Contest: AtCoder - Monoxer Programming Contest 2022(AtCo原创 2022-02-06 21:11:55 · 185 阅读 · 0 评论 -
abc238 D (签的并不是很到)
题目题意:x & y = ax + y = s判断是否存在非负整数x、y满足条件思路: 首先考虑到两个数至少都是a,s >= 2 *a.先假定x和y都是a,然后去凑s-2 * a剩余位置。如果剩余位置在a中出现过,那寄了,因为这一位用过。s >= 2 * a and ( (s-2 *a) & a) == 0或者特殊一点,x = a,y = s-a. x & y == a时间复杂度: O(1)代码:// Problem: D - AND an原创 2022-02-05 22:53:24 · 410 阅读 · 0 评论 -
abc237 D(想了一个小时结果跟模拟双向链表的插入一毛一样,老废物了,思路不清晰,建议remake)
题目题意: 给定长度为n的操作序列,对一个数字序列进行操作。数字序列初始只有0,包含两种操作。L: 插入i 到i-1左边R: 插入i到i-1右边思路: 用双端队列维护,倒着逆操作。但是我没有想到这么神仙的做法,想了半天,然后开始乱写,就硬乱写。没有捋清楚思路,边想边调。最后发现写了一个双向链表的插入。。。写了一小时,什么菜鸡啊。时间复杂度: O(n)代码:// Problem: D - LR insertion// Contest: AtCoder - AtCoder Beginner C原创 2022-02-05 17:58:04 · 1508 阅读 · 0 评论 -
abc237 E(spfa已死)
题目题意: 给定n个点的点权值hi,m条边。规定有向边(u,v)的边权为hu - hv (hu > hv)-2(hu - hv) (hu < hv)0 (hu = hv)求点1到其他点的最长路。思路: 所有边取反然后spfa跑最短路,赛后加强数据以后就不行了。考虑用Dij跑最短路,把所有边取反,但是有负边权,需要换一种建图方式。把所有诸如的(u,v)边都加上 h[u] + h[v].这样就没有负边权了。自己推一下对于势能的影响。 p’ = p + (h[st] - h[ed]).原创 2022-02-05 17:32:54 · 427 阅读 · 0 评论 -
abc-235 DE
D:题目题意: 初始数为1.给定倍数a、目标数n.提供两种operation.1: 当前数x * a2: 当前数x循环左移一位(当x >= 10 且x 不是10的倍数时才能使用)求最少的操作数,或者输出不可达。思路: bfs.我直接从目标数n开始逆向操作,一直wa两个点。还没查明原因,可能是逆操作写歪了。该题的思路还是应该从1开始搜索,bfs求最短路。每个点最多被搜索一次,而一个点至多两条边,其中操作2需要花log(n)的时间,因为要循环移位。因此总时间复杂度为O(nlogn + 2原创 2022-01-16 15:49:23 · 195 阅读 · 0 评论 -
abc228 E(费马小定理)
题目一直没发现哪里错了,直到同学说了幂指数取模和结果取模不一样。。。代码: just 快速幂// Problem: E - Integer Sequence Fair// Contest: AtCoder - TOYOTA SYSTEMS Programming Contest 2021(AtCoder Beginner Contest 228)// URL: https://atcoder.jp/contests/abc228/tasks/abc228_e// Memory Limit: 1原创 2021-11-24 22:20:49 · 192 阅读 · 0 评论 -
abc211 D题
题目题意: 给定n次操作(2e5),使得区间[l,l+r-1]每个点的值+1。输出值为1-n的点的个数。(l和r为1e9)**思路:**显然,需要离散化。而且是对区间+1,可用差分。可用vector存操作的点以及是+1还是-1.排序后扫一遍,每个操作的贡献是下一个点-这个点,中间点的个数。代码:// Problem: D - Online games// Contest: AtCoder - AtCoder Beginner Contest 221// URL: https://atcoder.原创 2021-10-03 22:14:09 · 108 阅读 · 0 评论