3 字
1 分钟
Codeforces Round (2021-01-19)
A
#include <cstdio>#include <iostream>#include <algorithm>#include <cmath>#include <cstring>using namespace std;
const int maxn = 1e5 + 17;int T, n, b[maxn], a[maxn];string str;
int main() { cin >> T; while(T--) { cin >> n; cin >> str; for(int i = 1; i <= n; i++) b[i] = str[i - 1] - '0'; for(int i = 1; i <= n; i++) { if(b[i]) { if(b[i - 1]) { a[i] = 1 - a[i - 1]; } else { a[i] = 1; } } else { if(b[i - 1]) { a[i] = a[i - 1]; } else { a[i] = 1 - a[i - 1]; } } } for(int i = 1; i <= n; i++) printf("%d", a[i]); puts(""); } return 0;}B
#include <cstdio>#include <iostream>#include <algorithm>#include <cstring>using namespace std;
const int maxn = 1e6 + 17;int T, d, n = 1000000;int p[maxn], vis[maxn], cnt;
int main() { vis[0] = vis[1] = 1; for(int i = 2; i <= n; i++) { if(!vis[i]) p[++cnt] = i; for(int j = 1; j <= cnt && 1ll * p[j] *i <= n; j++) { vis[i * p[j]] = p[j]; if(!(i % p[j])) break; } } // for(int i = 1; i <= 20; i++) cout << p[i] << endl; cin >> T; while(T--) { cin >> d; int p1, p2; for(p1 = 1; p[p1] - 1 < d; p1++); for(p2 = p1; p[p2] - p[p1] < d; p2++); cout << 1ll * p[p1] * p[p2] << endl; } return 0;}C
#include <cstdio>#include <iostream>#include <algorithm>#include <cstring>#include <vector>#define mp make_pair#define pb push_backusing namespace std;
typedef pair<int, int> pii;const int maxn = 2e6 + 17;int T, n, a[maxn], c[maxn];int ans[maxn][2], f;
bool cmp(int x, int y) { return x > y;}
void dfs(int u, int p) { while(c[a[p]] > 0 && p <= n * 2) p++; if(p > n * 2) { f = 1; return; } int tmp = ans[u - 1][1] - a[p]; if(c[tmp] > 0) { c[a[p]]--, c[tmp]--; ans[u][0] = tmp, ans[u][1] = a[p]; dfs(u + 1, p + 1); c[a[p]]++, c[tmp]++; }}
int main() { scanf("%d", &T); while(T--) { int flg = 0; scanf("%d", &n); for(int i = 1; i <= 2 * n; i++) scanf("%d", &a[i]), c[a[i]]++; sort(a + 1, a + 1 + 2 * n, cmp); for(int i = 2; i <= n * 2; i++) { f = 0; ans[0][1] = a[1] + a[i]; dfs(1, 1); if(f) { puts("YES"); flg = 1; printf("%d\n", ans[1][0] + ans[1][1]); for(int j = 1; j <= n; j++) printf("%d %d\n", ans[j][0], ans[j][1]); break; } } if(!flg) puts("NO"); for(int i = 1; i <= 2 * n; i++) c[a[i]]--; } return 0;} 分享
如果这篇文章对你有帮助,欢迎分享给更多人!
Codeforces Round (2021-01-19)
https://blog.treesonsnow.com/posts/codeforces-round-2021-01-19/ 部分信息可能已经过时
相关文章 智能推荐