Educational Codeforces Round 33 (Rated for Div. 2)

来源:互联网 发布:小区内的网络超市 编辑:程序博客网 时间:2024/06/06 01:15

A

#include <cstdio>#include <cstring>#include <cmath>#include <cstdlib>#include <ctime>#include <iostream>#include <algorithm>#include <sstream>#include <string>#include <vector>#include <queue>#include <stack>#include <map>#include <set>#include <utility>#include <bitset>using namespace std;#define LL long long#define pb push_back#define mk make_pair#define fi first#define se second#define lson (rt << 1)#define rson ((rt << 1) | 1)#define pill pair<int, int>#define mst(a, b)memset(a, b, sizeof a)#define REP(i, x, n)for(int i = x; i <= n; ++i)const int MOD = 1e9 + 7;const int qq = 100 + 10;const LL INF = 1e18 + 10;int main(){int n;scanf("%d", &n);int a = 1, b = 2;bool f = true;while(n--) {int x;scanf("%d", &x);if(x != a && x != b)f = false;if(x == a) {b = 6 - (a + b);} else if(x == b) {a = 6 - (a + b);}}if(f)puts("YES");elseputs("NO");return 0;}


B

#include <cstdio>#include <cstring>#include <cmath>#include <cstdlib>#include <ctime>#include <iostream>#include <algorithm>#include <sstream>#include <string>#include <vector>#include <queue>#include <stack>#include <map>#include <set>#include <utility>#include <bitset>using namespace std;#define LL long long#define pb push_back#define mk make_pair#define fi first#define se second#define lson (rt << 1)#define rson ((rt << 1) | 1)#define pill pair<int, int>#define mst(a, b)memset(a, b, sizeof a)#define REP(i, x, n)for(int i = x; i <= n; ++i)const int MOD = 1e9 + 7;const int qq = 100 + 10;const LL INF = 1e18 + 10;int num[qq];int main(){int tot = 0;for(int k = 0; ; k++) {int tmp = k + 1;int ans = 0, cnt = k;while(tmp > 0) {ans += (1 << cnt);cnt++;tmp--;}if(ans > 1e5)break;num[tot++] = ans;}int n;scanf("%d", &n);int maxn = 1;for(int i = 0; i < tot; ++i) {if(n % num[i] == 0 && n >= num[i])maxn = num[i];}printf("%d\n", maxn);return 0;}

C

好像做过很多次了

并查集维护集合,集合中只要有一个人听到谣言其他人都可以知道谣言所以每个集合取最下的贡献即可

#include <cstdio>#include <cstring>#include <cmath>#include <cstdlib>#include <ctime>#include <iostream>#include <algorithm>#include <sstream>#include <string>#include <vector>#include <queue>#include <stack>#include <map>#include <set>#include <utility>#include <bitset>using namespace std;#define LL long long#define pb push_back#define mk make_pair#define fi first#define se second#define lson (rt << 1)#define rson ((rt << 1) | 1)#define pill pair<int, int>#define mst(a, b)memset(a, b, sizeof a)#define REP(i, x, n)for(int i = x; i <= n; ++i)const int MOD = 1e9 + 7;const int qq = 1e5 + 10;const int INF = 1e9 + 10;int pre[qq], gold[qq];int find(int x) {return pre[x] == -1 ? x : pre[x] = find(pre[x]);}vector<int> g[qq];int main(){int n, m;scanf("%d%d", &n, &m);for(int i = 1; i <= n; ++i) {scanf("%d", gold + i);}mst(pre, -1);for(int i = 1; i <= m; ++i) {int x, y;scanf("%d%d", &x, &y);int a = find(x), b = find(y);if(a != b)pre[b] = a;}for(int i = 1; i <= n; ++i) {g[find(i)].pb(i);}LL sum = 0;for(int i = 1; i <= n; ++i) {if(g[i].size() == 0)continue;int minx = INF;for(int j = 0; j < g[i].size(); ++j) {minx = min(minx, gold[g[i][j]]);}sum += minx * 1LL;}printf("%lld\n", sum);return 0;}


原创粉丝点击