- 博客(30)
- 资源 (1)
- 收藏
- 关注
原创 Codeforces」 Round #782 (Div. 2) A —D
A. Red Versus Blue题目大意红队和蓝队进行了nnn次比赛。用一个长度为nnn的字符串表示每场的胜负情况。R代表红队获胜,B代表蓝队获胜,蓝队获胜的次数严格小于红队。给你三个整数n, b, r请你构造一个长度为n的字符串,表示nnn场比赛的胜负情况,满足R的个数为r,B的个数为b,并且使得每个队伍连续获胜的最大次数尽可能小。解题思路如果要使连续字符数量最小,肯定是要进行平均分配。对于字符串,r个B可以把它分为b + 1段。所以我们只需要对每段平均分配r / (b + 1)个R
2022-04-18 17:36:26
840
1
原创 「Atcoder」abc248 A—E
A - Lacked NumberCodevoid solve(){ string s; cin >> s; for (int i = 0; i < s.length(); i++) st[s[i] - '0']++; for (int i = 0; i < 10; i++) if (!st[i]) { cout << i; return 0; }}B - Sli
2022-04-17 11:18:26
389
原创 「Codeforces」 Round #779 (Div. 2)
A. Marin and Photoshoot题目大意对于给定的010101串,可以在其中添加若干个 111,使得任意区间内, 000 的个数不超过 111 的个数。解题思路对于本题,我们只关心前后距离不超过2的两个0:对于010, 不合法,需要在中间再加一个1对于100或001不合法,需要在两个0中加入两个1即: 每两个0之间,至少需要两个1Codevoid solve() { int n; string s; vector<int> v; cin &g
2022-03-28 12:07:28
835
原创 「Codeforces」 Edu Round #125 (Div. 2)
A. Integer Moves解题思路本题只存在三种情况:给出点为(0,0)本身,则只需要0步给出点与(0,0)的距离为整数,则只需要1步给出点与(0,0)的距离不为整数的情况下,只需要2步对于第3种情况: 第1步移到原点的水平或垂直方向,第2步移到原点Codevoid solve() { int x, y; cin >> x >> y; int s = sqrt(x * x + y * y); if (x == 0 &a
2022-03-23 20:37:11
566
原创 「Atcoder」abc243 A—E
A - ShampooCodesigned main(){ int v, a, b, c; cin >> v >> a >> b >> c; while (1) { if (v < a) {puts("F"); return 0;} v -= a; if (v < b) {puts("M"); return 0;}
2022-03-13 13:00:10
721
原创 「Codeforces」 Round #777 (Div. 2) A —D
A. Madoka and Math Dad解题思路根据样例发现总是“2121···”或“121212”为什么是这样呢?因为1和2是最小的两位数,通过这样的交替,我们可以使得分解出的位数更多通过模拟一些例子我们可以发现其实就是对%3做讨论:如果n % 3 == 0, 则输出(n / 3)个 “21” (比“12”更大)如果n % 3 == 1, 则输出(n / 3)个 “12” (拆解出的位数更多) + 末尾的一个"1"如果n % 3 == 2, 则输出(n / 3)个 “21” (比“12”
2022-03-12 11:52:35
856
2
原创 「Codeforces」 Educataion Round #124 (Div. 2) A—D
A. Playoff解题思路可以观察到在第一轮所有偶数就已经被淘汰了后面的所有轮的两个数相加都为偶数,所以输出较大的那个奇数而较大的那个奇数就是(1 << x) - 1Codevoid solve(){ int x; cin >> x; cout << ((1 << x) - 1) << endl; // 等价于2 ^ x - 1, 不过位运算更快些}B. Prove Him Wrong解题思路题目说,要
2022-03-11 12:03:42
969
5
原创 「Atcoder」abc242 题解
A - T-shirtCodevoid solve(){ int a, b, c, x; cin >> a >> b >> c >> x; if(x <= a) printf("%.12lf\n", 1.0); else if(x <= b) { double res=c; res /= (b-a); printf("%.12lf\n",res);
2022-03-09 21:31:29
797
原创 「Codeforces」 Round #776 (Div. 3)
A. Deletions of Two Adjacent LettersCodevoid solve(){ string s; char c; cin >> s >> c; bool flag = false; for (int i = 0; i < s.length(); i++) if (s[i] == c && i % 2 == 0) { flag = t
2022-03-09 21:29:52
447
原创 「LeetCode」第73场双周赛 题解
6024. 数组中紧跟 key 之后出现最频繁的数字Codeclass Solution {public: int mostFrequent(vector<int>& nums, int key) { int n = nums.size(); int ans = 0; unordered_map<int, int> mp; for (int i = 0; i <= n - 2; i++) {
2022-03-06 22:37:42
600
原创 「Acwing」第41场周赛 题解
A - 4308. 组合字符串Code1 (自己的做法 -> 贪心)#include <bits/stdc++.h>using namespace std;string s1, s2;int main(){ cin >> s1 >> s2; string res1, res2; res1 += s1[0], res2 += s2[0]; for (int i = 1; i < s1.length();
2022-03-06 11:47:32
445
原创 「Atcoder」abc241 题解
A - Digit MachineCode#include <bits/stdc++.h>using namespace std; int n, x, a[10]; int main(){ while (cin >> x) a[n++] = x; int t = 0; for (int i = 1; i <= 3; i++) { t = a[t]; } cout <<
2022-02-28 10:39:59
949
原创 「Atcoder」abc238 题解
A - Exponential or Quadratic Editorial解题思路由数学归纳法可以证明当n >= 5时一定有2n2^n2n > n2n^2n2而n小于5时,只有当n = 3时才有2n2^n2n > n2n^2n2代码#include<bits/stdc++.h>using namespace std;int main(){ int n; cin >> n; if(2 <= n && n <= 4)
2022-02-08 18:22:23
936
原创 「Acwing」第37场周赛 题解
A - 4296. 合适数对解题思路由于 n <= 1000,直接将x从1枚举到1000即可,用公式求出y将判断条件写为xa<=n,这样就可以保证y也是正数TIPS:如果xa>n的话,y*b就一定是负数=>y是负数代码#include <bits/stdc++.h>using namespace std;int main(){ int n, a, b; cin >> n >> a >> b;
2022-02-07 21:50:06
498
原创 「LeetCode」第71场双周赛 题解
碎碎念由于各种事情比赛开始后十分钟才开始做题,状态也心不在焉由于最后急着刷排名,心态很急,思路没有整理就上手敲代码结果只AC了前三题,最后一题实在没心态了5984. 拆分数位后四位数字的最小和解题思路很明显的贪心,对于四位数,用一个长度为4的数组a保存各位的数值题目要求构成的两个两位数之和最小;首先对数组a从小到大排序,两位小的一定分别是两个数的十位,而两位大的一定分别是两个数的个位代码class Solution {public: int a[4]; int mi
2022-02-06 23:14:32
599
原创 1233. 全球变暖 题解
跳转链接https://www.acwing.com/problem/content/1235/来源:第九届蓝桥杯省赛C++A/B组,第九届蓝桥杯省赛JAVAA/B组题目描述你有一张某海域 N×N 像素的照片,”.”表示海洋、”#”表示陆地,如下所示:….##….##……##.…####.…###.…其中”上下左右”四个方向上连在一起的一片陆地组成一座岛屿,例如上图就有 2 座岛屿。由于全球变暖导致了海面上升,科学家预测未来几十年,岛屿边缘一个像素的范围会被海水淹没。具体来说如果
2022-01-21 13:22:13
483
原创 1101. 献给阿尔吉侬的花束 题解
跳转链接https://www.acwing.com/problem/content/1103/来源:《信息学奥赛一本通》题目描述阿尔吉侬是一只聪明又慵懒的小白鼠,它最擅长的就是走各种各样的迷宫。今天它要挑战一个非常大的迷宫,研究员们为了鼓励阿尔吉侬尽快到达终点,就在终点放了一块阿尔吉侬最喜欢的奶酪。现在研究员们想知道,如果阿尔吉侬足够聪明,它最少需要多少时间就能吃到奶酪。迷宫用一个 R×C 的字符矩阵来表示。字符 S 表示阿尔吉侬所在的位置,字符 E 表示奶酪所在的位置,字符 # 表示墙壁
2022-01-20 19:00:42
282
原创 116. 飞行员兄弟 题解
跳转链接https://www.acwing.com/problem/content/118/题目描述“飞行员兄弟”这个游戏,需要玩家顺利的打开一个拥有 16 个把手的冰箱。已知每个把手可以处于以下两种状态之一:打开或关闭。只有当所有把手都打开时,冰箱才会打开。把手可以表示为一个 4×4 的矩阵,您可以改变任何一个位置 [i,j] 上把手的状态。但是,这也会使得第 i 行和第 j 列上的所有把手的状态也随着改变。请你求出打开冰箱所需的切换把手的次数最小值是多少。输入格式输入一共包含四行
2022-01-13 04:00:00
188
原创 1987. 粉刷栅栏 题解
跳转链接https://www.acwing.com/problem/content/description/1989/题目描述农夫约翰发明了一种绝妙的方法来粉刷牛棚旁边的长栅栏(把栅栏想象成一维的数轴)。他只需要在他最喜欢的奶牛贝茜身上挂一个刷子,然后在一旁悠闲的喝凉水就行了。贝茜沿着栅栏来回走动时,会将她走过的栅栏部分涂上油漆。贝茜从栅栏上的位置 0 处开始,共进行 N 次移动。移动可能形如 10 L,表示向左移动 10 单位距离,也可能形如 15 R,表示向右移动 15 单位距离。给定
2022-01-12 23:56:43
509
原创 95. 费解的开关 题解
跳转链接https://www.acwing.com/problem/content/97/题目描述你玩过“拉灯”游戏吗?25 盏灯排成一个 5×5 的方形。每一个灯都有一个开关,游戏者可以改变它的状态。每一步,游戏者可以改变某一个灯的状态。游戏者改变一个灯的状态会产生连锁反应:和这个灯上下左右相邻的灯也要相应地改变其状态。我们用数字 1 表示一盏开着的灯,用数字 0 表示关着的灯。下面这种状态1011101101101111000011011在改变了最左上角的灯的状态后将变成
2022-01-12 23:55:44
269
原创 HDU 2000
题目描述解题思路算法库sort排序输出即可代码#include<iostream>#include<algorithm>using namespace std;char a[3];int main(){ while(cin>>a){ sort(a,a+3); cout<<a[0]<<" "<<a[1]<<" "<<a[2]<<endl; } return 0;}
2021-05-28 20:21:34
38
原创 HDU 1010
题目描述解题思路剪枝剪枝策略就是在搜索过程中利用过滤条件来剪去完全不用考虑(已经判断这条路走下去得不到最优解)的搜索路径,从而避免了一些不必要的搜索,大大优化了算法求解速度,还保证了结果的正确性。简单的说就是把不可行的一些情况剪掉,例如走迷宫时运用回溯法,遇到死胡同时回溯,造成程序运行时间长。剪枝的概念,其实就跟走迷宫避开死胡同差不多。若我们把搜索的过程看成是对一棵树的遍历,那么剪枝顾名思义,就是将树中的一些“死胡同”,不能到达我们需要的解的枝条“剪”掉,以减少搜索的时间。奇偶剪枝把矩阵看成
2021-05-28 20:10:05
92
原创 HDU 1005
题目描述解题思路方法一:找规律本题的关键是找到循环节,即**(arr[i]==1&&arr[i-1]==1 )**又是一道给出了运算公式的数学凡是没有优化的话,超时超内存等等是避免不了的了。这题很显然是一个找规律的题目,也就是该题的求解中是存在循环节的。对于公式 f[n] = A * f[n-1] + B * f[n-2]; 后者只有7 * 7 = 49 种可能,为什么这么说,因为对于f[n-1] 或者 f[n-2] 的取值只有 0,1,2,3,4,5,6 这7个数,A,
2021-05-27 14:36:18
74
原创 HDU 1002
题目描述解题思路:直接套个大数加法模板即可(模板看不懂直接背下来也可以)注意输出格式的规范代码:#include<iostream>#include<cstring>using namespace std;int maxn,sum,pos,Begin,End,T,n,a[100005];int main(){ cin>>T; for(int Case=1;Case<=T;Case++){ memset(a,0,sizeof a)
2021-05-27 14:28:45
52
原创 HDU 1000
题目描述解题思路注意含多组数据代码#include<iostream>using namespace std;int main(){ int a,b; while(cin >> a >> b) //连续输入输出 cout << a+b << endl; return 0;}
2021-05-27 14:26:10
93
原创 HDU 1001
题目描述解题思路方法一 :直接相加求解方法二:利用求和公式n(n+1)/2,不过这里会爆int,记得开long long代码//本处运用法一求解#include<iostream>using namespace std; int main(){ int n; while(cin>>n) { int sum=0; for(int i=1;i<=n;i++) sum+=i; cout<<sum<<endl&
2021-05-27 14:21:03
46
原创 HDU 1018
题目描述解题思路方法一:N!=123…*n求位数我们一般用对一个数取对数就可以了 ,log10(n!)=log10(1)+ log10(2) +log10(3)…+log10(n);所以循环求和就可以了!PS: 结果要加1!因为这里计算出来的 log10(1)=0 !所以结果要加上这个误差 ‘1’方法二:斯特林数(本处不做详解)代码//这里用方法一求解!#include<iostream>#include<cmath>using namespa
2021-05-27 14:08:11
69
原创 HDU 1009
题目描述解题思路贪心思想,按性价比从大到小排序排序后,如果猫粮剩余数量大于某个楼层最大交换量的猫粮,就全部拿走否则就按照拿走剩余数量*性价比的量代码#include<iostream>#include<algorithm> using namespace std;struct A{ double b,c,w; //b是豆子量,c是猫粮量,w是性价比}num[1005];bool cmp(A x,A y){ //自定义按性价比
2021-05-27 09:12:32
55
原创 HDU 1008
题目描述解题思路简单模拟,设置中间变量temp进行电梯楼层的更新即可代码#include<iostream>using namespace std;int main(){ int n; while(cin>>n&&n!=0){ int now=0,sum=0,temp; //每次测试记得初始化 for(int i=1;i<=n;i++){ cin>>temp; //中间变量temp if(te
2021-05-27 08:24:52
91
原创 HDU 1004
题目描述解题思路利用STL库中的map映射找出最大值即可代码#include<iostream>#include<map>#include<string>using namespace std;map<string,int>m; //利用map映射int main() { int n; while(cin>>n&&n!=0) { int maxn=-1; //每次都初始化最大值为-
2021-05-26 19:55:52
60
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人