Codeforces Round #546 (Div. 2)
http://codeforces.com/contest/1136
A
#include <bits/stdc++.h> using namespace std; const int maxn = 1e5 + 10; int N, K; struct Node { int L; int R; }node[maxn]; int main() { scanf("%d", &N); for(int i = 1; i <= N; i ++) scanf("%d%d", &node[i].L, &node[i].R); scanf("%d", &K); int cnt = 0; for(int i = 1; i <= N; i ++) { if(node[i].R >= K) cnt ++; else continue; } printf("%d\n", cnt); return 0; }
B
#include <bits/stdc++.h> using namespace std; int N, K; int main() { scanf("%d%d", &N, &K); int ans = 0; ans = 3 * N + min(K - 1, N - K); printf("%d\n", ans); return 0; }
C (只要判断对角线上的数字就好了 如果对角线数字不同输出 NO)
#include <bits/stdc++.h> using namespace std; const int maxn = 1010; int N, M; int a[maxn][maxn], b[maxn][maxn]; map<int, int> vis[maxn]; int main() { scanf("%d%d", &N, &M); for(int i = 1; i <= N; i ++) { for(int j = 1; j <= M; j ++) { scanf("%d", &a[i][j]); vis[i + j - 1][a[i][j]] ++; } } bool flag = true; for(int i = 1; i <= N; i ++) { for(int j = 1; j <= M; j ++) { scanf("%d", &b[i][j]); if(vis[i + j - 1][b[i][j]] <= 0) flag = false; vis[i + j - 1][b[i][j]] --; } } if(flag) printf("YES\n"); else printf("NO\n"); return 0; }
D
#include <bits/stdc++.h> using namespace std; const int maxn = 3e5 + 10; vector<int> v[maxn]; int N, M; int num[maxn], ans[maxn]; int main() { scanf("%d%d", &N, &M); for(int i = 1; i <= N; i ++) scanf("%d", &num[i]); while(M --) { int uu, vv; scanf("%d%d", &uu, &vv); v[vv].push_back(uu); } for(int i = 0; i < v[num[N]].size(); i ++) ans[v[num[N]][i]] ++; int cnt = 0; for(int i = N - 1; i >= 1; i --) { if(ans[num[i]] == N - i - cnt) cnt ++; else { for(int j = 0; j < v[num[i]].size(); j ++) ans[v[num[i]][j]] ++; } } printf("%d\n", cnt); return 0; }
很久没更新了 最近和队友训练准备这样那样的比赛 写完题好像也没贴 哭唧唧 会尽快把之前做的题总结一下发上来的 养肥我的 Be 客