Codeforces Round #423 (Div. 2) A-C
Posted Hyouka
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Codeforces Round #423 (Div. 2) A-C相关的知识,希望对你有一定的参考价值。
A. Restaurant Tables
这里看错题意还wa了两发....
按题意模拟就行了 水题
#include <iostream> #include <cstring> #include <cstdio> #include <algorithm> #include <queue> #include <vector> #include <iomanip> #include <math.h> #include <map> using namespace std; #define FIN freopen("input.txt","r",stdin); #define FOUT freopen("output.txt","w",stdout); #define INF 0x3f3f3f3f #define INFLL 0x3f3f3f3f3f3f3f #define lson l,m,rt<<1 #define rson m+1,r,rt<<1|1 typedef long long LL; typedef pair<int, int> PII; using namespace std; int main() { //FIN int n, a, b; scanf("%d%d%d", &n, &a, &b); int ans = 0; int flag = 0; for(int i = 1; i <= n; i++) { int x; scanf("%d", &x); if(x == 1) { if(a >= 1) a--; else if(b >= 1){ b--; flag++; } else if(flag >= 1) { flag--; } else ans++; } else { if(b >= 1) b--; else ans += 2; } } printf("%d\n", ans); return 0; }
B. Black Square
问补全一个B组成的正方形至少还要多少个B
直接记录四个角的值然后就差不多了
一个B都没有的话直接输出1就行
#include <iostream> #include <cstring> #include <cstdio> #include <algorithm> #include <queue> #include <vector> #include <iomanip> #include <math.h> #include <map> using namespace std; #define FIN freopen("input.txt","r",stdin); #define FOUT freopen("output.txt","w",stdout); #define INF 0x3f3f3f3f #define INFLL 0x3f3f3f3f3f3f3f #define lson l,m,rt<<1 #define rson m+1,r,rt<<1|1 typedef long long LL; typedef pair<int, int> PII; using namespace std; char mp[105][105]; int main() { //FIN int n, m; while(~scanf("%d%d", &n, &m)) { for(int i = 0; i < n; i++) scanf("%s", mp[i]); //for(int i = 0; i < n; i++) cout << mp[i] << endl; int minx = 105, miny = 105, maxx = -1, maxy = -1; int cnt = 0; for(int i = 0; i < n; i++) { for(int j = 0; j < m; j++) { if(mp[i][j] == ‘B‘) { cnt++; minx = min(minx, j); miny = min(miny, i); maxy = max(maxy, i); maxx = max(maxx, j); } } } if(cnt == 0) { printf("1\n"); continue; } int c = maxx - minx + 1; int k = maxy - miny + 1; int mx = max(c, k); int ans = mx * mx - cnt; if(mx > n || mx > m) { printf("-1\n"); continue; } else { printf("%d\n", ans); } } return 0; }
C. String Reconstruction
题意:告诉你一些字符串在原字符串中出现的位置 然你输出原字符串 没告诉你的地方就输出a
直接模拟 但是要注意剪枝 访问过的久不用再访问了
#include <iostream> #include <cstring> #include <cstdio> #include <algorithm> #include <queue> #include <vector> #include <iomanip> #include <math.h> #include <map> using namespace std; #define FIN freopen("input.txt","r",stdin); #define FOUT freopen("output.txt","w",stdout); #define INF 0x3f3f3f3f #define INFLL 0x3f3f3f3f3f3f3f #define lson l,m,rt<<1 #define rson m+1,r,rt<<1|1 typedef long long LL; typedef pair<int, int> PII; using namespace std; const int maxn = 2000006; char s[maxn]; char op[maxn]; int main() { //FIN int n; scanf("%d", &n); memset(s, ‘a‘, sizeof(s)); int mxpos = 0; for(int i = 1; i <= n; i++) { scanf("%s", op); int k; int tmp = -INF; int len = strlen(op); scanf("%d", &k); for(int j = 1; j <= k; j++) { int pos; scanf("%d", &pos); mxpos = max(mxpos, pos + len); for(int z = max(tmp, pos); z < pos + len; z++) { s[z] = op[z - pos]; } tmp = pos + len; } } for(int i = 1; i <= mxpos - 1; i++) printf("%c", s[i]); printf("\n"); return 0; }
以上是关于Codeforces Round #423 (Div. 2) A-C的主要内容,如果未能解决你的问题,请参考以下文章
Codeforces Round #423 (Div. 2) A-C
Codeforces Round #423 (Div. 2) C 思维,并查集 或 线段树 D 树构造,水
Codeforces Round #423 (Div. 2)A B C D
Codeforces Round #423 (Div. 2, rated, based on VK Cup Finals) Problem A - B