- 博客(102)
- 收藏
- 关注

原创 Atcoder Beginner Contest 307D 题解
给定一个长度为n的字符串,我们每次选取一个被括号( )包围的子串从该串中去掉,要求该子串中除了首尾字符不再包含 '(' 和 ')',输出这个串最后的样子。
2023-08-01 09:01:12
122

原创 AtCoder Beginner Contest 233D 后缀和+二分
链接:D - Count Interval题意:给定n个数及k的值,问这个序列中,能找到多少段闭区间,使得闭区间内所有数字求和是k。思路:数据比较大(n是2e5,|k|是1e15),处理一段区间的和,我们首先会想到用前后缀和来加加减减,这里我们具体用后缀和处理,通过求出下标id的后缀和 last[id](不含id本身),我们可以知道一段闭区间 [L, R]中所有元素的和为 a[L] + last[L] - last[R],我们需要让这个值等于给定的k。第二步思路就是怎么找这些元素和等..
2021-12-29 00:55:17
217

原创 Atcoder - 161D 数位dp
<Atcoder - 161D> 数位dphttps://atcoder.jp/contests/abc161/tasks/abc161_d题意:定义一种数 lun number:该数任意相邻的两个数位差的绝对值不超过1比如 123,234,12121,1010 都是 lun number;而 256,18,102 都不是 lun number输入1e5以内的 k ...
2020-04-06 14:46:24
460

原创 Atcoder - 151D BFS最短路问题
<Atcoder - 151D> BFShttps://atcoder.jp/contests/abc151/tasks/abc151_d题意:求任意两个可互相到达的点的最短路的最大值。思路:几乎是板子题,小范围数据直接暴力,碰到点就进行bfs,bfs停止的条件就是走不动了,也就是当前点(i, j)能走到的最远距离且是到达最远处的最短路径。不断维护到这个最远处的最短...
2020-03-24 15:09:34
461

原创 Codeforces - 1305C 同余 + 鸽巢原理 and Codeforces - 982C 树上dfs
<Codeforces - 1305C> 同余 + 鸽巢原理http://codeforces.com/problemset/problem/1305/C题意:给定n个数,n个数两两做差取绝对值,所有差的绝对值做累乘,再对m取模,求这个模的值。思路:如果n > m,则n个数中必有至少两个数对m同余,模就是0,如果n < m,m又是1e3范围内的,直接暴力...
2020-03-22 13:40:47
400

原创 Codeforces - 1295D 欧拉函数 and Codeforces - 1270C 构造
<Codeforces - 1295D> 欧拉函数http://codeforces.com/contest/1295/problem/D题意:给出a和m,在[0,m)内选一个x,满足gcd(a, m) = gcd(a + x, m),问x取值有多少种。思路:设g = gcd(a, m)令a = xg, m = yg题设gcd(xg, yg) = (xg + z...
2020-03-22 12:31:22
371

原创 Atcoder - 091C 扫描线 and Atcoder - 062D 优先队列 + 前后缀和
<Atcoder - 091C> 扫描线https://atcoder.jp/contests/abc091/tasks/arc092_a题意:有n个红点,n个蓝点,所选的红点和蓝点能够成友好的条件是:红点的横纵坐标分别小于蓝点的横纵坐标。取过的点不能重复取,问最多能构成几对友好。思路:定义结构体,将所有红点蓝点统一按照x升序排列。然从后往前扫,碰到蓝点就传入set...
2020-03-22 11:52:19
718
原创 Atcoder Beginner Contest 254D 题解
我们以n = 6为例,那么最大的完全平方就是36,36的前一半平方根内的因子就是1, 2, 3, 4, 6,而我们想通过,6直接就能找出这五个因子,6的因子只有1,2,3,6没有4,但是6的因子,两两相乘就能得到2 * 2= 4,这样36的前一半因子就构造完毕了。这时候 i 的因子就全部找到了,然后我们用刚才说的用 i 的因子两两相乘得到 i 以内,i^2的全部因子,此时pr存的即为所求,我们可以测一下pr的输出验证是否是想要的结果。
2023-08-09 09:18:38
155
原创 Atcoder Beginner 238(MPC2022) - D 二进制枚举+构造
题意:问是否可以找到两个非负整数 x 和 y 使得按位与运算得到 a 且加和得到 s思路:捋一个大体思路,首先看数据,都是LL而且还有1e5个查询,那必然是二进制枚举了。其次按位与没法逆向,所以我们逆向处理加和。首先要想两个数按位与结果是a,那么a中是1的二进制位,x、y 也必须满足这个位置是1,所以标记a是1的二进制位vis[bit] = 1。那么我们分别把x、y 拆成 a 加上某个数p1、p2,那么p1和p2对于a是1的二进制位就要反过来置为0即后续操作对标记取反 ( !vis[bit] )
2022-03-20 13:33:17
399
原创 ATcoder Beginner 234D
题意:给定n和k(1 <= k <= n <= 5e5),输入的n个数为1 ~ n的乱序,求前k个数,前k + 1个数,...,前n个数中第k大的数分别是多少思路:这题顺着想就不方便操作,因为要不断往序列里加入一些数,就算用优先队列也处理不了5e5的数据量,根据每次更新的序列做O(n)的线性时间选择也不现实,都是很繁琐且细节难实现的做法。但是倒着处理就很顺手,我们可以先处理前n个数也就是所有数中的第k大,因为这n个数分别就是1~n,所以n个数里的第k大一定是 ans = n
2022-03-18 22:53:33
323
原创 Codeforces - 1335E1 枚举 + vector应用
<Codeforces - 1335E1>枚举 + vector应用http://codeforces.com/contest/1335/problem/E1题意:cas个查询,每个查询给定一个数列,让你删除其中一些元素,使得这个数列变成 {aa...a}{bb...b}{aa...a} 型的回文串,求这个回文串的最大长度。比如数列121333121删除黑色两个2以后...
2020-04-16 10:49:44
323
原创 Atcoder - 162D 枚举
<Atcoder - 162D> 枚举https://atcoder.jp/contests/abc162/tasks/abc162_d题意:给定一个只由字符 'B','G','R' 组成的一个串S,求满足下列条件的三元组{Si,Sj,Sk}的个数:(1) Si != Sj && Si != Sk && Sj != Sk(2) j -...
2020-04-14 11:01:31
401
原创 Codeforces - 1334C 贪心
<Codeforces - 1334C> 贪心http://codeforces.com/contest/1334/problem/C题意:一共cas个查询,每个查询内顺时针排列着n个怪物,每个怪物有两个属性,属性a表示生命值,属性b表示死的时候自爆对下一个怪物产生的伤害,怪物的生命值<=0时视为死亡,你可以对怪物射击,每次涉及伤害都是1,问你最少开几枪,可以杀死所有...
2020-04-13 09:56:54
310
原创 Atcoder - 156D 组合数 / Lucas定理
<Atcoder - 156D>https://atcoder.jp/contests/abc156/tasks/abc156_d题意:有n束花,需要从其中挑出若干束,但是不能挑a束或b束,问多少种选法。即求:ans = (2 ^ n) - C(n, a) - C(n, b) - 1思路:<法一> 组合数AC代码:#include <...
2020-04-10 12:36:08
351
原创 Codeforces - 1332D 构造 + 位运算
<Codeforces - 1332D> 构造 + 位运算http://codeforces.com/problemset/problem/1332/D题意:从(1,1)出发到(n,m),只能向右或向下走,每走一步就进行一次按位与,结果是最后这个按位与的最大值。Bob写了一个dp算法,但是得到的结果并不是真正的答案。(因为这个算法有误)构造矩阵满足真正答案与Bod的...
2020-04-03 19:45:36
257
原创 Atcoder - 129D vector应用
<Atcoder - 129D>vector应用https://atcoder.jp/contests/abc129/tasks/abc129_d题意:给定一个由.和#组成的矩阵,在点处选择一个位置放灯,灯光可以在该点处向上下左右四个方向发射,但是碰到#就停止,问可以被灯光辐射到的最大点数。看下样例1,题意就清楚了,选(2,2)放灯,算上自己最多可以辐射8个点。...
2020-03-30 14:00:38
360
原创 Codeforces - 1225C 二进制位的应用
<Codeforces - 1225C> 位运算http://codeforces.com/contest/1225/problem/C题意:给定n,p,求满足n = (2^a1 + p) + (2^a2 + p) + (2^a3 + p) + ... + (2^ak + p)的最小的k值(a1 ~ ak可以有相等的值)。例如,n = 24,p = -1,此时k = 4...
2020-03-26 10:38:10
328
原创 Atcoder Grand 036 - A 叉积
<Atcoder Grand 036 - A> 叉积https://atcoder.jp/contests/agc036/tasks/agc036_a题意:已知面积S,在第一象限内构造3个坐标,使得三点连线围成的三角形面积为S/2,打印坐标。思路:S = ad - bc,先将一点定在原点(0,0),另外两点坐标是(a, b)和(c,d)。ad必然不小于S,初始化a ...
2020-03-22 14:17:56
322
原创 Atcoder Beginner 119D 122C 题解(都是二分)
<At-119D>题意:给你一个n,一个m,表示有n个景点1,和m个景点2,q个查询,表示你每次的位置。你想要至少游览景点1和景点2各一个,问你最小花费。思路:二分处理一下,分别处理当前查询的位置的前后的景点1和景点2,然后前1,前2; 前1,后2;前2,前1;前2,后1;后1,前2;后1,后2;后2,前1;后2,后1。8种方式维护一个最小值就ok了...
2019-03-27 20:23:30
348
原创 Codeforces 1140C Playlist 题解
题意: 给你一个n,给你一个k,表示从n个二元组 <x, y> 中最多选出k个,产生一个贡献值。这个贡献值指的是,这选出的最多k个二元组的x属性加和,乘这些选出的二元组的y属性的最小值。求这个贡献值的最大值。思路: 我的想法是,结构体排序加优先队列维护队头处理,结构体本身按照y属性升序排,然后优先队列按照x属性降序,即队头是最小的 ,大体是为了让在x属性降序以后...
2019-03-27 19:46:55
470
原创 Codeforces 1082B(vector的应用) 题解 + 1088C(思维) 题解
Codeforces 1082B: http://codeforces.com/contest/1082/problem/B题意:给你一个串,只包含S和G这两个字符,让你最多交换一次 S和G的位置,使得连续的G的长度达到最长,打印这个最大长度。思路:记两个vector,分别存每个 S 前面有几个连续的 G,后面有几个连读的 G,然后用max维护一下,这两个值的和的最大值,有一点需要...
2018-12-06 12:01:26
342
原创 vector + 二进制枚举: Atcoder Dwacon 5th - B
链接:https://dwacon5th-prelims.contest.atcoder.jp/tasks/dwacon5th_prelims_b题意:给定一个长度为n的序列,这n个数在序列中,一共会形成 n * (n + 1) / 2 个连续子序列,比如,1 2 3,可以形成:{1}, {1,2},{1,2,3},{2,3},{3},这 6 个连续子序列,构成这个子序列的某一元素索引...
2018-12-01 13:35:06
334
原创 挂机水题日记 Cf - 75C
链接:http://codeforces.com/problemset/problem/75/C题意:给你两个数a ,b(1e9范围内),q个查询区间 [ l, r],问你这些区间内能找到的 a 和 b 的公因子最大是多少。思路:水题,枚举 gcd 因子的时候开平方优化完就过了。核心思路就是枚举 gcd (a, b) 的因子,用max维护一下,那么枚举的过程中,如果a,b 的...
2018-11-12 15:22:10
234
原创 Atcoder Beginner 085D 084D 题解
ABC 084 - D:https://abc084.contest.atcoder.jp/tasks/abc084_d题意:在1~1e5以内,有一种判定合法的方式:就是如果当前数 x 是素数,且 (x + 1) / 2也是素数,那么这个数就是合法的。给你 q 个查询区间,问你每段区间内存在多少个合法的数。思路:这题考点就是预处理配合前缀的使用,先枚举1e5以内的素数,然后继续枚举...
2018-10-29 17:51:28
303
原创 2018-10-7 Atcoder 刷题日记
Atcoder Beginner 068 - C题意:有 n 个岛屿,k 条船,这 k 条船分别连接 ai 岛屿和 bi 岛屿,问能否只是用两条船就从 岛屿1到达岛屿 n思路:这题我使用set处理的,当岛屿起点为1的时候,将其从岛屿1出发所能到达的所有岛屿 P 存进set中,然后再看到达终点是岛屿n 的这些船的起点,如果这些起点有在set中的,那就成立了,即满足 1 ->...
2018-10-07 19:48:17
269
原创 计蒜客上蓝桥杯模拟题的部分题解
一、https://www.jisuanke.com/contest/990?view=challenges<A>链接:https://nanti.jisuanke.com/t/20682思路:按照题意暴力就行了,答案是1.AC代码:#include <bits/stdc++.h>using namespace std;typedef long lo...
2018-09-22 20:37:47
294
原创 Atcoder Beginner 059 C 题解
题意:有一个长度为n的序列,你可以进行两种操作,选去某个数加1或者减1。那我进行这个操作的目的,是为了让这个序列保持以下这种状态:1)这个数列进行到任意一项的前缀和都不用允许为0;2)这个数列进行到第 i 项的前缀和与第 i+1 项的前缀和符号必须不同。求,最少操作步数。思路:这题就是先对前缀和的第一项为正还是为负分别进行一次复杂度为O(n)的讨论,由于这道题我代码的注释写...
2018-09-22 19:57:57
438
原创 Atcoder Beginner 077 C题题解
题意:有三个数组 a[]、 b[]、c[],有一个数n表示这三个数组的元素个数,从这三个数组里各挑一个数,组成三元组<a[i],b[j],c[k]>,且要求,a[i] < b[j] < c[k]。问能组成多少个这样的三元组。注意一点,比如 n = 3时,三个数组分别为:1 2 31 2 31 2 3答案是27,不是1,因为尽管只能构成三元组&l...
2018-09-04 07:58:33
325
原创 Atcoder Beginner 106 ~ 108 C题题解
本人因为身体原因博客断更了很长时间,唉,程序员还是要注重身体,尤其是我这种辣鸡的程序员,如果代码能力不高然后再身体不好那可就gg了啊T^T话说ABC107是我打Atcoder开始以来,排名最靠前的,第145,竟然排名页第8页就能看到我~这是从没有过的hhh,不过也就涨了70多分 >^<好了闲话不多说了~直接上这三场比赛的C题题解:< ABC106 - C >...
2018-09-01 23:32:46
415
原创 2018-7-19 ACM 专项刷题 最短路
最短路三种算法的模板:1. 弗洛伊德:#include <cstdio>#include <cstdlib>#include <cstring>#include <cmath>#include <string>#include <map>#include <queue>#include &am
2018-07-19 09:49:44
279
原创 2018-7-18 ACM 刷题日记
<Codeforces - 1009B>题意:给定一个只由'0'、'1'、'2' 组成的串,只能将0 1互换,1 2互换,不能将0 2互换,求形成字典序最小的的串。思路:因为1既可以和0换,又可以和2换,所以1的位置是自由的,即1可以挪到任意位置,而0和2的相对位置是固定的,也就是说,可以先将串中所有1都删了,剩下这个新串只由0和2组成,这个顺序就是不能动的了,接下来我...
2018-07-18 10:37:01
283
原创 2018-7-16 ACM 刷题日记
<Codeforces - 702C>题意: 给两个数组,让第一个数组里每个元素,都与第二个数组的每个元素求差再取绝对值,然后找到第一个数组里每一元素对应的这些差值的最小值,再求这些最小值里的最大值。思路: 这是在一套二分专题里的一个题,就是一个二分的思路,有两个封装好的二分函数,lower_bound( ) 和 upper_bound( )。这里介绍下 lower_bou...
2018-07-16 11:00:31
344
原创 2018-7-16 ACM 专项刷题 简单动态规划
周末休息了两天,没去训练,今天补一下动态规划的部分,真的很难,就放下板子吧,慢慢理解中。<LIS - 最长上升子序列>对应题目:POJ - 2533模板:#include <cstdio>#include <cstring>#include <cmath>#include <algorithm>using namespace std;co...
2018-07-16 09:31:56
328
原创 2018-7-13 ACM 专项刷题 栈 + 队列 + 树状数组
写的有些久,拖到7-14号凌晨才写完,因为我自己也在慢慢理解中,还是要多做题,做的题越多,理解越深刻。1. 栈:stack是一种先进入的元素后弹出的数据结构。有一种常见的栈的应用就是检查括号匹配与否。对应题目及题解链接:https://blog.youkuaiyun.com/ericgipsy/article/details/799808742.队列与优先队列: <队列&g...
2018-07-14 01:07:00
796
原创 2018-7-12 ACM 专项刷题 简单数论
1. Gcd & Lcm:#include <cstdio>#include <cstdlib>#include <cmath>#include <cstring>#include <algorithm>using namespace std;typedef long long LL;LL a, b;LL gcd...
2018-07-12 23:26:16
667
原创 2018-7-11 ACM 专项刷题 dfs + bfs
1. 递归:先说一个递归的含义,就是在某个函数内部调用这个函数本身,或者说,调用一个与该函数完全相同的函数。最简单的一个递归的应用就是,辗转相除法求最大公约数Gcd:LL gcd(LL x, LL y) { if(x % y == 0) return y; else return gcd(y, x % y);} 2. dfs(深度优先搜索):dfs 也有几...
2018-07-11 21:12:53
1150
原创 2018-7-10 ACM 刷题日记
<Codeforces 1005C>题意:给定一个序列,问至少需要删除多少个数,使得序列中的每个数都能在该序列里找到一个数(自己除外),进行加和形成2^n。思路:思路就是map的应用,先开一个数组 powT[maxx],存 1<<30以内的2^n,然后声明两个map,分别是 mp 和 vis。先将传进数组的每个数的mp值都为 i (即每个数的角标),这样我在枚举数组内每个元...
2018-07-10 21:36:54
265
原创 2018-7-9 ACM 刷题日记
<Codeforces 977D>题意:给定一串序列,问能否让序列形成一个顺序,使得序列某一项是由它前一项乘2或者前一项整除3得来的,打印该顺序。思路:一开始我的思路是这样的,就是先找只能被3整除和只能被2整除的(即不能同时被3和2整除,即不能被6整除的数),然后:先将只能被3整除的降序排,因为下一项是由当前项除3得到的,显然递减,故降序;再将只能被2整除的升序排,因为下一项是由当前项...
2018-07-09 11:25:39
291
原创 2018-7-8 ACM 刷题日记
<Codeforces 1004B>题意:有n个花盆,放两种花A,B,有m个区间,每个区间的价值是:A花个数 * B花个数。问怎么摆放花让所有区间的价值和最大。思路:设每段区间 A 花有 a 个,B 花有 b 个,根据均值不等式,当 a * b 取最大值时,当且仅当 a == b。所以要求每段区间内 a == b即可。所以只需要将A、B交替摆放,就能让每段区间的A花个数等于B花个数。本...
2018-07-08 21:46:44
445
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人