- 博客(41)
- 收藏
- 关注
原创 2021CCPC湘潭全国邀请赛题解
题目pdf下载 提取码: abcd A. A+B Problem 题意: 给定a和b,求a+b,a+b如果大于1023或者小于-1024,就自动溢出 思路: 比如1023+1=1024,1024>1023 就自动溢出成-1024,模拟即可 时间复杂度:O n #include<bits/stdc++.h> #define fer(i,a,b) for(re i = a ; i <= b ; ++ i) #define re register int #define pll pai
2021-06-08 23:01:13
4472
13
原创 Codeforces Round #719 (Div. 3) A-G 题解
先补了这些,电脑快没电了,明天在补 A Do Not Be Distracted! Do Not Be Distracted! 题意:给定一个只含有26个大写字母的字符串,每个大写字母表示一项工作,每项工作只能连续做或者前面做过就不能在做了,如果可以满足条件的话,则输出Yes,否则输出No.题目给的特殊情况直接输出Yes 思路:开map 按照题目模拟着做就可以了 时间复杂度:o tnlogn #include<bits/stdc++.h> #define fer(i,a,b) for(re i
2021-05-06 01:34:22
1609
16
原创 2021-2022-2 ACM集训队每周程序设计竞赛(13)题解
A: 打怪兽version-1 题意: 有一只怪兽的血量为H 你每回合可以对其造成A点伤害 问多少回合可以杀死怪兽(其血量小于等于0即为死亡) 思路: 输出⌈H/A⌉\lceil H/A \rceil⌈H/A⌉即可 上取整和下取整之间的转换: ⌈H/A⌉\lceil H/A \rceil⌈H/A⌉ = ⌊(H+A−1)/A⌋\lfloor (H+A-1)/A \rfloor⌊(H+A−1)/A⌋ 时间复杂度:O1O1O1 #include<bits/stdc++.h> using namespa
2022-05-27 17:00:00
2153
原创 2021-2022-2 ACM集训队每周程序设计竞赛(8)题解
A. 21点游戏 题意: 给你三个数A1 , A2 , A3 , 如果A1 + A2 + A3 >= 22 , 输出 bust 否则输出 win 思路: 模拟 时间复杂度:O1O1O1 #include<bits/stdc++.h> using namespace std ; const int N = 1e6 + 10 ; int main() { int a , b , c ; cin >> a >> b >> c; in
2022-04-22 17:00:00
3586
原创 Codeforces Round #783 (Div. 2) D题解
A. Vasya and Coins 题意: 给你nnn个数的数组,你可以把这个数组分为若干个连续的子数组,不能为空。 假设s[i]s[i]s[i]为aaa数组的前缀和数组 那么连续子数组ala_lal al+1a_{l+1}al+1 …ara_rar的价值为 r−l+1r - l + 1r−l+1 前提是: s[r]−s[l−1]>0s[r] - s[l-1] > 0s[r]−s[l−1]>0 000 前提是: s[r] - s[l-1] = 0 −(r−l+1)-(r
2022-04-20 00:40:48
1054
2
原创 Codeforces Round #780 (Div. 3) A-F2题解
Codeforces Round #780 (Div. 3) A-F2题解
2022-04-01 01:26:37
1982
5
原创 Codeforces Round #775 (Div. 2) ABCD题解
A. Game B. Game of Ball Passing C. Weird Sum D. Integral Array
2022-03-06 21:16:13
543
原创 Educational Codeforces Round 123 (Rated for Div. 2) A-E题解
Educational Codeforces Round 123 (Rated for Div. 2) A-E题解 A - Doors and Keys B - Anti-Fibonacci Permutation C - Increase Subarray Sums D - Cross Coloring E - Expand the Path
2022-02-23 01:30:06
761
4
原创 Codeforces Round #770 (Div. 2) ABCD题解
Codeforces Round #770 (Div. 2) ABCD题解 A. Reverse and Concatenate B. Fortune Telling C. OKEA D. Finding Zero
2022-02-07 01:32:27
1048
1
原创 Educational Codeforces Round 122 (Rated for Div. 2) A-D题解
A. Div. 7 思路: 注意n>=10,说明一定是两位数注意n>=10,说明一定是两位数注意n>=10,说明一定是两位数 并且7个一循环,直接枚举这位数的最后一位并且7个一循环,直接枚举这位数的最后一位并且7个一循环,直接枚举这位数的最后一位 暴力判断是否可行即可暴力判断是否可行即可暴力判断是否可行即可 时间复杂度:OtOtOt #include <bits/stdc++.h> #define fer(i,a,b) for(re i = a ; i <= b ; ++
2022-02-01 00:35:08
845
原创 Codeforces Round #767 (Div. 2) ABCD题解
A. Download More RAM 思路: 签到题签到题签到题 按照a从小到大排序按照a从小到大排序按照a从小到大排序 只要k>=对应的b,就+=b只要k>=对应的b,就+=b只要k>=对应的b,就+=b 输出k即可输出k即可输出k即可 时间复杂度:OnlognOnlognOnlogn #include <bits/stdc++.h> #define fer(i,a,b) for(re i = a ; i <= b ; ++ i) #define der(i,a,b
2022-01-23 00:35:14
553
原创 BUCT - 2021-2022-1 ACM集训队每周程序设计竞赛(10)题解
Bob和Alice(1) 思路: 模拟即可模拟即可模拟即可 时间复杂度:O1O1O1 #include <bits/stdc++.h> #define fer(i,a,b) for(int i = a ; i <= b ; ++ i) #define der(i,a,b) for(int i = a ; i >= b ; -- i) #define all(x) (x).begin(),(x).end() #define sz(x) ((int)(x).size()) #define
2021-12-17 14:46:46
753
原创 BUCT - 2021-2022-1 ACM集训队每周程序设计竞赛(7)题解
A - 神秘的老者 思路: 输出min(n∗a,b)即可输出min(n* a,b)即可输出min(n∗a,b)即可 时间复杂度:O1O1O1 #include<bits/stdc++.h> using namespace std; int main(){ int n,a,b; cin>>n>>a>>b; cout<<min(n*a,b)<<endl; } B - 借钱 思路: 暴力枚举即可暴力枚举即可暴力枚举即可 判断一个整数
2021-11-12 15:50:34
1066
原创 2021-2022-1 ACM集训队每月程序设计竞赛(2)F: max or min
F: max or min 题意: 给你一个n个数的数组和一个k给你一个n个数的数组和一个k给你一个n个数的数组和一个k 1<=n,k<=1e5,1 <= n , k <= 1e5 ,1<=n,k<=1e5, a1,a2,......ana1,a2,......ana1,a2,......an 1<=ai<=n1 <= ai <= n1<=ai<=n 求一个最长区间[l,r]求一个最长区间[l,r]求一个最长区间[l,r] 满足这个区间
2021-10-30 09:06:42
339
原创 2021-2022-1 ACM集训队每周程序设计竞赛(3)题解
A - 苹果派 题意: 你有a个苹果和p个苹果片你有a个苹果和p个苹果片你有a个苹果和p个苹果片 1个苹果可以制作3个苹果片1个苹果可以制作3个苹果片1个苹果可以制作3个苹果片 2个苹果片可以制作1个苹果派2个苹果片可以制作1个苹果派2个苹果片可以制作1个苹果派 问一共可以制作多少个苹果派问一共可以制作多少个苹果派问一共可以制作多少个苹果派 0<=a,p<=1000 <= a , p <= 1000<=a,p<=100 思路: 模拟模拟模拟 时间复杂度:O1O1O1 #i
2021-10-06 17:11:46
1760
2
原创 Codeforces Round #744 (Div. 3) A-F 题解
纪念第一次打进接近前百 这次的题意就不再赘述了 大概说一下方法 A. Casimir’s String Solitaire 思路: 每次都有B B的数量等于A和C的和即可 时间复杂度:OnOnOn #include <bits/stdc++.h> #define fer(i,a,b) for(re i = a ; i <= b ; ++ i) #define der(i,a,b) for(re i = a ; i >= b ; -- i) #define all(x) (x).be.
2021-09-29 01:12:40
713
5
原创 AtCoder Beginner Contest 217 A B C D E G 题解
纪念我第一次非严格意义上的AK纪念我第一次非严格意义上的AK纪念我第一次非严格意义上的AK A - Lexicographic Order 题意: s字符串的字典序是否小于ts字符串的字典序是否小于ts字符串的字典序是否小于t 思路: 模拟模拟模拟 时间复杂度:O1O1O1 #include <bits/stdc++.h> #define fer(i,a,b) for(re i = a ; i <= b ; ++ i) #define der(i,a,b) for(re i = a ; .
2021-09-04 22:11:59
688
3
原创 Codeforces Round #740 (Div. 2) D1. Up the Strip (simplified version)
D1. Up the Strip (simplified version) 题意: 你现在在n 你可以n - x [ 1 <= x <= n - 1 ] 你也可以 n / x [ 2 <= x <= n ] 问你从n到1的方案数对m去模 2 ≤ n ≤2e5 1e8 < m <1e9 思路: 实现 大致方向先确定 是动态规划 然后先把暴力的n^2的代码写出来 写出来之后在考虑优化 假设f[i] 表示从第i层到第1层的方案数 转移方程题目已经给你了 先看下面暴力的代码
2021-08-25 01:30:35
539
原创 Codeforces Round #739 (Div. 3) F1. Nearest Beautiful Number (easy version)
F1. Nearest Beautiful Number (easy version) 题意: 题目读假了 导致wa了14遍 然后赛后看数据 1 2 竟然是1不是10??????? 题目给1e4个询问 每次给n,k 找到第一个大于等于n的数x 满足x的所有不同字母的个数<= k 1 <= k <= 2 , 1 <= n <= 1e9 思路: k = 1 的时候 直接暴力 主要是k=2的时候比较麻烦 考虑一下预处理出所有的k=1和k=2的数字 用状态压缩优化 时间复杂.
2021-08-19 01:50:42
323
原创 Codeforces Round #733 (Div. 1 + Div. 2) C. Pursuit
D. Secret Santa 题意: 给t组样例 每组样例给n个数 a[1] , a[2] , a[3] ...... a[n] b[1] , b[2] , b[3] ...... b[n] 数据保证(0 <= a[i] , b[i] <= 100 , t组样例n的总和小于1e5) a[i]表示第一个人在i这个阶段的分数 b[i]表示第二个人在i这个阶段的分数 现在只给了n个阶段每个人的分数 后面若干个阶段的分数值0到100之间都有可能 现在定义一个人在i这个阶段的得分为 从i个分数中取出
2021-07-18 02:40:53
348
1
原创 Codeforces Round #733 (Div. 1 + Div. 2) D. Secret Santa
D. Secret Santa 题意: 给t组样例 每组样例给n个数 a[1] , a[2] , a[3] ...... a[n] (t组样例n的总和<=2e5,a[i] <= n) 并且保证a[i] != i 求一个数组p 并且这个数组p为1到n的全排列中的一种方式 求 p[i] == a[i] 的个数最大并且p[i] != i 输出这个个数的最大值和p数组 思路: 首先先把可以匹配的匹配了 举个例子 a 6 4 6 2 4 5 1 从头到尾扫一遍 p 6 4 _ 2 _ 5 1 还差3
2021-07-18 02:15:26
469
2
原创 Codeforces Round #732 (Div. 2) B. AquaMoon and Stolen String 题解
B. AquaMoon and Stolen String 题意: 给定t组n,m ( t组n*m的总和 <= 1e5 ) 接下来n行 n个长度为m的字符串 对于每一对字符串,你都可以选择一些位置(至少1个,最多m个) 并在所选位置交换这一对的两个字符串中的字母。 接下来n-1行 n-1个长度为m的字符串 问你 一定可以进行一些交换 使得这n-1个字符串等于 一开始给的n个字符串中的其中n-1个 并且输出剩下的那一个字符串 思路: 个人感觉这题理解题意是其一 那么考虑一下交换 只在不同对之
2021-07-12 01:08:14
304
原创 Codeforces Round #731 (Div. 3) A - F 题解汇总
A. Shortest Path with Obstaclea B. Alphabetical Strings C. Pair Programming D. Co-growing Sequence E. Air Conditioners F. Array Stabilization (GCD version)
2021-07-11 12:09:19
261
原创 Codeforces Round #731 (Div. 3) E. Air Conditioners
E. Air Conditioners 题意: 给定q组样例 (q <= 1e4) 每组样例给 n , k x1 , x2 , ..... xk t1 , t2 , ..... tk n表示数轴上的n个点 k表示一个有k个冰箱 x,t 表示该冰箱在数轴上的位置,温度为t 求对数轴上的每一个i [1 <= i <= n ] min(tjt_jtj + ∣xj−i∣\vert {x_j-i} \vert∣xj−i∣ ) [ 1 <= j <= k ] 的值 思路: 我们可
2021-07-11 10:24:35
342
原创 Codeforces Round #731 (Div. 3) B. Alphabetical Strings
B. Alphabetical Strings 题意: 你一开始有一个空的字符串 s = "" 从‘a'到‘z'这26个字母按照顺序 你每次可以 s = s + 这个字母 或者是 s = 这个字母 + s 现在给你q个询问 (q <= 1e4) 每个询问给你一个字符串 (strlen <= 26) 问这个字符串是否可以是s的其中一个子串 思路: s必定是从字母a开始相加 所以先找到字母a的下标 然后定义2个指针l,r 依次向左和向右走 如果这2个指针可以走到头 说明是s的子串 时间复杂度
2021-07-11 02:00:03
474
原创 Codeforces Round #731 (Div. 3) A. Shortest Path with Obstaclea
A. Shortest Path with Obstacle 题意: 求从a点出发不经过f点到达b点的最短的曼哈顿距离 思路: if特殊判断一下 当三个点横坐标相等的时候,f点是否在2点之间 或者是当三个点纵坐标相等的时候,f点是否在2点之间 如果是的话 说明不能走直线,距离要+2 否则就是a到b的曼哈顿距离 时间复杂度:O t #include<bits/stdc++.h> #define fer(i,a,b) for(re i = a ; i <= b ; ++ i) #defin
2021-07-11 01:45:48
343
原创 Codeforces Round #731 (Div. 3) F. Array Stabilization (GCD version)
F. Array Stabilization (GCD version) 题意: 给t组样例 (t <= 1e4) 每组样例给n a[1] , a[2] , ...... a[n] (a[i) <= 1e6 n <= 2e5) 定义一个新数组b[]数组 b数组等于gcd(a[i],a[(i+1)%n]) 然后把b复制给a 问最少复制多少次使得a数组中的所有数都相等 思路: 我们可以发现 第1次操作之后 b[1] = gcd(a[1],a[2]) 第2次操作之后 b[1] = gc
2021-07-11 01:12:01
597
7
原创 Codeforces Round #713 (Div. 3) F. Education 超详细思考过程
F. Education 题意: t组样例(t <= 1e4) 每组样例给你n , c a[1] , a[2] ........ a[n] b[1] , b[2] .........b[n-1] (n <= 2e5 , c <= 1e9) c表示目标的金钱 如果你在等级i 你每天可以赚a[i]的钱 当然你在这一天也可以不赚钱 升级你的等级 如果你的等级在i 升级到i+1级需要b[i]的钱 你一开始在第1个等级 问赚到至少c钱的最小天数 数据保证 a递减 a[1] <=
2021-07-10 18:58:39
195
原创 Codeforces Round #726 (Div. 2) A-E1 题解
A. Arithmetic Array 题意: 给你n个数的数组 问最多加几个非负数 可以让总和/数组大小等于1 思路: 分类讨论 假设总和为sum,数组个数为n 假设加了cnt个非负数x 目标是 sum + cnt * x = n + cnt 这个式子不难发现右边每次只可以加1 左边可以加任何非负数 所以 如果sum = n 答案为0 如果sum < n 答案为1 如果sum > n 因为右边每次只能加1 左边x可以为0 等价于 sum = n + cnt 所以答案为 sum -
2021-06-19 01:09:36
324
原创 Codeforces Round #725 (Div. 3) G. Gift Set 题解
G. Gift Set 题意: 给4个数x,y,a,b 每次可以进行2个操作 操作1 如果 x >= a , y >= b , x -= a , y -= b ; 操作2 如果 x >= b , y >= a , x -= b , y -= a ; 问最多可以进行多少次操作 (1≤x,y,a,b≤1e9) 思路: 假设操作1进行了i次,操作2进行了j次 那么可以得到 a * i + b * j <= x b * i + a * j <= y x >= 0 y
2021-06-16 00:08:43
285
原创 floyd求最小环
观光之旅 题意:给定一张无向图,求图中一个至少包含 3 个点的环,环上的节点不重复,并且环上的边的长度之和最小。 该问题称为无向图的最小环问题。 你需要输出最小环的方案,若最小环不唯一,输出任意一个均可。 思路: 具体细节可以看代码 时间复杂度:O n^3 #include<bits/stdc++.h> using namespace std; const int N = 110 , inf = 0x3f3f3f3f ; int n , m ; int d[N][N] , g[N][N] ;
2021-06-01 01:38:50
247
2
原创 Educational Codeforces Round 109 (Rated for Div. 2) A B D 题解
A. Potion-making 题意:给你一个k,求k/100化为最简比的父母的值 思路:签到题,输出100 / gcd(k,100) 时间复杂度:O tlog100 #include<bits/stdc++.h> #define fer(i,a,b) for(re i = a ; i <= b ; ++ i) #define re register int #define sf(x) scanf("%d",&x) #define sfl(x) scanf("%lld",&
2021-05-16 21:44:23
351
原创 Codeforces Round #720 (Div. 2) A题解
这次只做出来了A… b看情况在补吧… Nastia and nearly Good Numbers 题意:给定2个数a,b 如果一个数可以被a * b整除的话,就说这个数是好的 如果一个数不能被a*b整除的话,但是可以被a整除的话,就说这个数是接近好的 每次给出一对a,b,求输出3个数,x,y,z 满足 x + y == z 并且其中有2个接近好的数,和一个好的数 思路:首先看t最大是1e6,a,b最大是1e18,所以必须得用o 1或者o logn的时间输出答案 那么,分析一下题意,如果一个数可以被a *
2021-05-08 01:33:51
283
原创 给n,求n/1+n/2+n/3+....+n/n的值
给n,求n/1+n/2+n/3+…+n/n的值 首先,n最大范围1e9,暴力肯定超时 那么先看一段代码 #include<bits/stdc++.h> #define fer(i,a,b) for(re i = a ; i <= b ; ++ i) #define re register int typedef long long ll ; using namespace std; const int N = 1e6 + 10 , M = 1010 , inf = 0x3f3f3f3f
2021-05-07 02:53:34
4999
原创 buctoj2021年ACM竞赛班训练(七)题解
A: 玩游戏 题意:初始有一堆石子共n个,双方轮流行动,每次可以从中取出恰好完全平方数(1、4、9……)个石子,不可以不取石子直接跳过回合。双方都足够聪明,会按最优的方式来游玩,无法行动的人输掉该游戏(等价说法:取走最后一个石子的人赢)。 思路: 设 f(i) 表示在 i 堆石子时,当前操作的玩家是否有必胜策略。f(i)=true 为必胜,否则必败。 初始时,f[i * i] = true,其余待定。 转移时,对于一个 i,枚举 j 满足 j * j ≤ i。如果存在 j 使得 f(i−j * j) 是必败
2021-05-07 00:09:35
1113
6
原创 miller_rabin判断质数logn
写这次博客的原因是在网上看了很多的miller_rabin判断质数,发现代码都很长或者不好理解,这次搞懂了写个简单易懂的方便大家理解。 首先,根据费马小定理,如果一个数n是质数的话,那么必定存在一个数a,使得a的n-1次方%n必定等于1 那么,我们就可以用随机化算法,去随机a的次数,然后只要存在a的n-1次方%n不等于1,就返回false 最后返回true 代码如下 #include<bits/stdc++.h> #define fer(i,a,b) for(re i = a ; i <=
2021-04-24 21:12:46
377
原创 Contest 2050 and Codeforces Round #718 (Div. 1 + Div. 2) A B C 题解
A Tit for Tat 题意:给你一个n个数的数组,在k次操作下,每次可以选2个数,一个+1,一个-1,求如何让数组前面的数最小,后面的数最大。最小不能为-1. 思路:模拟,把前面的数-掉都加在最后一个数上 #include<iostream> using namespace std; int n,k; int s[110]; int main() { int t; scanf("%d",&t); while(t--) { scanf("%d %d",&n,&am
2021-04-24 09:56:05
974
20
原创 Codeforces Round #717 (Div. 2) A B C 题解
A Tit for Tat 题意:给你一个n个数的数组,在k次操作下,每次可以选2个数,一个+1,一个-1,求如何让数组前面的数最小,后面的数最大。最小不能为0. 思路:模拟,把前面的数-掉都加在最后一个数上 #include<iostream> using namespace std; int n,k; int s[110]; int main() { int t; scanf("%d",&t); while(t--) { scanf("%d %d",&n,&
2021-04-22 00:18:07
403
原创 buctoj2021年ACM竞赛班训练(四)全题解
B-平方斐波那契 题意:给你个数n,回答第n个斐波那契数是不是平方数 斐波那契数定义为f1=1,f2=1,f3=f1+f2…fn=fn-1+fn-2 思路:有一个很明显的性质是只有1和144是平方数,其余都不是平方数 #include<bits/stdc++.h> using namespace std; int main() { long long n ; cin >> n ; if(n == 1 || n == 2 || n == 12) puts("1"
2021-04-15 18:57:39
713
2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅