![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
ACM
2019.9-2021.4
悠唯
养成整理的习惯。
展开
-
省赛训练1
1.Cut the Deck题意:选择一个位置,将这个位置及这个位置之前的字符移到后面,问是否存在这么一个最小的位置,使得任意位置的B的数量大于R的数量题解:如果某一位置B的数量小于R的数量,那么舍弃这之前的部分,重新开始计数#include<stdio.h>#include<string.h>char s[1000010];int main() { int t;scanf("%d", &t); while (t--) { scan原创 2021-10-17 10:22:06 · 91 阅读 · 0 评论 -
并查集练习
A.通信系统题解:只有一个根节点即所有的点在一个集合里,以及有n-1条边时满足yes,其它no。#include<bits/stdc++.h>using namespace std;int p[1010];int n, m;void init(){ for (int i = 1; i <= n; i++) p[i] = i;}int find(int x){ if (x == p[x]) return x; else return原创 2021-03-29 21:00:16 · 88 阅读 · 0 评论 -
贪心练习
codeup新家本套题比较难的是C和F。A.看电视题解:很自然可以想到,要么按照开始时间排序,要么按照结束时间排序。按开始时间排,可能最早开始的会占后面开始的两个节目,故排除此方法。所以按照结束时间升序排即可,每次选择最早结束的,可以得到最多的节目。#include<bits/stdc++.h>using namespace std;struct node{ int s, e;}a[110];bool cmp(node a, node b){ return a原创 2021-03-22 14:50:07 · 96 阅读 · 0 评论 -
BFS练习
b#include<bits/stdc++.h>using namespace std;char mp[100][100];//int vis[100][100];int flag;struct node{ int x, y, step;};struct node cur, nxt;void bfs(){ queue<node>q; cur.x = 7, cur.y = 0, cur.step = 0; q.push(cur);原创 2021-03-13 22:43:48 · 117 阅读 · 0 评论 -
DFS练习
一.入门题A.【递归入门】全排列题解:用数组顺序存储每个数输出,然后回溯即可。#include<bits/stdc++.h>using namespace std;int a[20];int vis[20];int n;void dfs(int step){ if (step == n + 1){ for (int i = 1; i <= n; i++){ if (i > 1) printf(" ");原创 2021-02-21 19:42:33 · 160 阅读 · 0 评论 -
Codeforces Round #713 (Div. 3)
A. Spy Detected!题解:输出只出现一次的数。#include<bits/stdc++.h>using namespace std;int a[110], mp[110];int main(){ int t, n, i;scanf("%d", &t); while (t--){ memset(mp, 0, sizeof(mp)); scanf("%d", &n); for (i = 1; i原创 2021-04-15 21:37:48 · 195 阅读 · 0 评论 -
Codeforces Round #712 (Div. 2)
A. Déjà Vu题意:插入一个字符‘a’,输出非回文串。题解:思维。首先全是‘a’肯定不行。往连续’a‘多的一边插入’a’,多的越多,少的越少,那么该字符串就一定不是回文串。#include<bits/stdc++.h>using namespace std;char s[300010];int main(){ int t;scanf("%d", &t); while (t--){ scanf("%s", s); int原创 2021-04-08 23:24:00 · 215 阅读 · 0 评论 -
Codeforces Round #710 (Div. 3)
A. Strange Table题意:将按列序排列的x的所处位置,转换成按行序排列时这个位置对应的数字。题解:思维。根据列序求出x所处的行和列,再转换成行序即可。#include<bits/stdc++.h>using namespace std;typedef long long ll;int main(){ int t; ll n, m, x; scanf("%d", &t); while (t--){ scanf("%l原创 2021-03-28 23:08:10 · 83 阅读 · 0 评论 -
Codeforces Round #706 (Div. 2)
A.Split it!题意:将能否将字符串分成k+1个子串及其k个翻转子串。题解:可以发现,统计字符串首尾相同的对数,这个对数就是字符串能分成的子串个数,只要大于等于k就满足题意。但k=n/2时,如果n为奇数,那么第k+1位空出来不用管;n为偶数,多出一位不满足条件。#include<bits/stdc++.h>using namespace std;char s[110];int calc(char s[]){ int i, l = strlen(s), cnt = 0;原创 2021-03-11 20:58:51 · 251 阅读 · 0 评论 -
Educational Codeforces Round 104 (Rated for Div. 2)
A. Arena#include<bits/stdc++.h>using namespace std;int a[110];int main(){ int t, n, i; scanf("%d", &t); while (t--){ int mi = 110; scanf("%d", &n); for (i = 1; i <= n; i++){ scanf("%d",原创 2021-02-18 21:40:53 · 99 阅读 · 0 评论 -
Codeforces Round #702 (Div. 3)
A. Dense Array题解:每次乘二即可。#include<bits/stdc++.h>using namespace std;int a[60];int main(){ int t, n, i; scanf("%d", &t); while (t--){ scanf("%d", &n); for (i = 1; i <= n; i++) scanf("%d", &a[原创 2021-02-17 22:14:24 · 132 阅读 · 0 评论 -
Codeforces Round #701 (Div. 2)
A. Add and Divide题解:当b=2时,30次就能把1e9除完,除不了几次,所以b的值不会很大,枚举一个b的小区间即可。#include<bits/stdc++.h>using namespace std;int main(){ int t, a, b, i; scanf("%d", &t); while (t--){ scanf("%d%d", &a, &b); if (a < b) p原创 2021-02-15 00:00:10 · 168 阅读 · 0 评论 -
Codeforces Round #699 (Div. 2)
A. Space Navigation题解:忽略无关命令,统计到达终点的命令类型和数量即可。#include<bits/stdc++.h>using namespace std;char s[100010];int main(){ int t, x, y, i;cin >> t; while (t--){ cin >> x >> y >> s; int len = strlen(s);原创 2021-02-14 19:20:53 · 93 阅读 · 0 评论 -
Codeforces Round #700 (Div. 2)
A. Yet Another String Game#include<bits/stdc++.h>using namespace std;char s[60];int main(){ int t; scanf("%d", &t); while (t--){ scanf("%s", s); int i, l = strlen(s); for (i = 0; i < l; i++){原创 2021-02-08 22:12:06 · 194 阅读 · 0 评论 -
Codeforces Round #697 (Div. 3)
A. Odd Divisor题意:判断n有无大于1的奇除数。题解:n本身是奇数可作为奇除数。偶数=偶数 * 偶数=奇数 * 偶数=大于1的奇数 * 2^n。#include<bits/stdc++.h>using namespace std;int main(){ int t, i;long long n;cin >> t; while (t--){ cin >> n; if (n == 2) cout <原创 2021-01-28 22:05:56 · 55 阅读 · 0 评论 -
Good Bye 2020
A. Bovine Dilemma题意:求面积不同的三角形个数。#include<bits/stdc++.h>using namespace std;double x[60];int main(){ int t, n, i, j;cin >> t; while (t--){ int res = 0; map<double,int>mp; cin >> n; for (i原创 2021-01-26 16:16:04 · 79 阅读 · 0 评论 -
Codeforces Round #696 (Div. 2)
A. Puzzle From the Future题解:首位1,保证最大。第i位加1和第i-1位相等,0;不相等,1。#include<bits/stdc++.h>using namespace std;char s[100010];int main(){ int t, n, i;cin >> t; while (t--){ cin >> n >> s; for (i = 0; i < n; i原创 2021-01-22 16:00:08 · 70 阅读 · 0 评论 -
Codeforces Round #695 (Div. 2)
A. Wizard of Orz题意:有一排数字,从零开始,每秒加一,九加一回到零。可暂停在任意时刻任意的一个数字,其它数字的暂停时间为与被暂停数字的距离。问最大的数。题解:暂停第八秒时的第二位数字,这样首位最大,第二位次大,保证数字整体最大。#include<bits/stdc++.h>using namespace std;int main(){ int t, n, i;cin >> t; while (t--){ cin >&g原创 2021-01-19 18:17:16 · 106 阅读 · 0 评论 -
Educational Codeforces Round 102 (Rated for Div. 2)
A.Replacing Elements题意:可选择不相同的i,j,k,使得ai=aj+ak。问能否使所有的ai<=d。题解:用最小的两个ai的和替代所有>d的数,不能替代则不能。#include<bits/stdc++.h>using namespace std;int a[110];int main(){ int t, n, d, i;cin >> t; while (t--){ cin >> n >&g原创 2021-01-17 21:04:30 · 101 阅读 · 0 评论 -
Codeforces Round #694 (Div. 2)
A. Strange Partition题意:求最小和最大的bi/x向上取整的和。题解: 最小n个数的和作为一个数除以x,最大n个数分别除以x。#include<bits/stdc++.h>using namespace std;typedef long long ll;int a[100010];int main(){ int t, n, x, i;cin >> t; while (t--){ ll sum = 0, mx =原创 2021-01-07 22:55:13 · 316 阅读 · 6 评论 -
Codeforces Round #693 (Div. 3)
A. Cards for Friends题意:有一张纸,可以沿着偶数边对半切。问能否将这张纸切成n份以上。题解:对半切,一分为二,纸的数量增加一倍。也就是,每切一次,纸的数量乘二。那么,将长、宽能被对半切的次数作为2的指数,再将他们相乘的值与n比较大小。#include<bits/stdc++.h>using namespace std;int main(){ int t, w, h, n;cin >> t; while (t--){ ci原创 2021-01-06 14:58:06 · 215 阅读 · 0 评论 -
Codeforces Round #676 (Div. 2)
AA ^ A = A,^a 或 ^b结果最小,都为a ^ b.#include<bits/stdc++.h>using namespace std;int main(){ int t, a, b;cin >> t; while (t--){ cin >> a >> b; cout << (a ^ b) << endl;//直接异或输出加括号 }}B1.s的四周为0原创 2020-10-18 22:22:08 · 68 阅读 · 0 评论 -
2021牛客寒假算法基础集训营6
A.回文括号序列计数题解:因为空串是括号系列,那么空串加’()’,’()’+’()’…括号一定是成对出现的。所以只有空串的时候才能回文,其它情况都不能回文。#include<bits/stdc++.h>using namespace std;int main(){ int t, n; scanf("%d", &t); while (t--){ scanf("%d", &n); if (!n) printf("1\n原创 2021-04-24 16:26:56 · 66 阅读 · 0 评论 -
2021牛客寒假算法基础集训营4
A.九峰与签到题题解:模拟。注意任意时间,二维数组表示ac和unac两种状态即可。#include<bits/stdc++.h>using namespace std;int mp[30][5];int vis[30];char op[10];int main(){ int m, n, a, i; scanf("%d%d", &m, &n); while (m--){ scanf("%d%s", &a, op);原创 2021-04-24 15:11:54 · 185 阅读 · 0 评论 -
牛客小白月赛33
A.字符统计题解:模拟。比赛的时候在思考怎么输出最后一个样例,结果发现比赛上面自测能输出,应该是遇到‘\0’结束。然后注意下didn’t是一个单词,根据空格统计单词,而且输入字符串应当合法。#include<stdio.h>#include<string.h>char s[1100];int main(){ int t;scanf("%d", &t); getchar(); while (t--){ int line = 0原创 2021-04-18 22:39:32 · 563 阅读 · 4 评论 -
2021牛客寒假算法基础集训营3
G.糖果题解:并查集确定好各个集合,每个集合中的顶点值为这个集合中最大的顶点值。#include<bits/stdc++.h>using namespace std;int a[1000010];int f[1000010];int find(int x){ if (f[x] == x) return x; return f[x] = find(f[x]);}int main(){ int n, m, x, y, i;cin >> n &g原创 2021-02-07 16:54:48 · 221 阅读 · 2 评论 -
2021牛客寒假算法基础集训营1
A.串题解:直接求不好删重,可以一位一位地拼接起来。设f[i]为长度为i的包含us的子序列个数,每次在前i-1位的基础上接上一位,分为以下两种情况:1.前面已经有us了,后面可以接上任意一位。2.前面有u但u后面没有s,可以通过总的-有us的-没有u的。#include<bits/stdc++.h>using namespace std;typedef long long ll;ll mod = 1e9 + 7;ll f[1000010];ll qp(ll x, ll y){原创 2021-02-07 15:57:48 · 153 阅读 · 0 评论 -
第八届“图灵杯”NEUQ-ACM程序设计竞赛个人赛(同步赛)
A.切蛋糕题解:将大小为1的蛋糕看成x份,那么x/k份能整除为x/k份,不能为x/k+1份,减去1/k即减去x/k份,那么前后相减,差值的绝对值为零或1份,而这个差值要<=1/2 ^ 10 ,也就是1份要<=1/2 ^ 10。 取1份=1/2 ^10,那么x=1024。分成1024份需要切2 ^ 0 + 2 ^ 1 + … + 2 ^ 9 = 1023次,打包需要k次,最多2047次。#include<bits/stdc++.h>using namespace std;int原创 2021-02-02 22:44:50 · 281 阅读 · 2 评论 -
位运算
小A的位运算题解:维护一个前缀和的前i-1项与后缀和的后i+1项。#include<bits/stdc++.h>using namespace std;typedef long long ll;int a[5000010];ll b[5000010], c[5000010];int main(){ int n, i;cin >> n; for (i = 1; i <= n; i++) cin >> a[i];原创 2021-01-26 21:54:01 · 74 阅读 · 0 评论 -
牛客IOI周赛22-普及组
A. 战争尾声题解:暴力枚举。#include<bits/stdc++.h>using namespace std;int x[210], y[210];int main(){ ios::sync_with_stdio(0); int n, i, j, k;cin >> n; for (i = 1; i <= n; i++) cin >> x[i] >> y[i]; int flag1 = 0;原创 2021-01-23 21:10:44 · 91 阅读 · 1 评论