Educational Codeforces Round 6
来源:互联网 发布:实体经济下滑数据 编辑:程序博客网 时间:2024/05/18 00:09
C. Pearls in a Row
从左往右贪心。
#include <cstdio>#include <set>#include <vector>using namespace std;const int maxn = 3e5 + 100;set <int> bag;int n, a[maxn];int main(){ scanf("%d", &n); for (int i = 1; i <= n; i++) scanf("%d", &a[i]); int flag = 0; int ans = 0; int l = 1; vector < pair<int, int> > s; for (int i = 1; i <= n; i++) { if (bag.find(a[i]) != bag.end()) { bag.clear(); flag = 1; ans++; s.push_back({l, i}); l = i + 1; } else { bag.insert(a[i]); } } if (flag) { printf("%d\n", ans); if (bag.size()) s[s.size() - 1].second = n; for (int i = 0; i < s.size(); i++) printf("%d %d\n", s[i].first, s[i].second); } else printf("-1\n"); return 0;}
E. New Year Tree
#include <cstdio>#include <vector>using namespace std;typedef long long ll;const int maxn = 400100;vector <int> s[maxn];ll node[maxn * 4], mark[maxn * 4];int left[maxn], right[maxn], id[maxn], color[maxn], n, m, cnt;int bit_num(ll x){ int sum = 0; while (x) { sum += (x & 1); x >>= 1; } return sum;}void build(int l, int r, int o){ if (l == r) { node[o] = (1LL << color[id[l]]); //printf("%d\n",color[id[l]]); return ; } int mid = (l + r) / 2; build(l, mid, o * 2); build(mid + 1, r, o * 2 + 1); node[o] = node[o * 2] | node[o * 2 + 1];}void dfs(int u, int fa){ left[u] = ++cnt; id[cnt] = u; for (int i = 0; i < s[u].size(); i++) { int v = s[u][i]; if (v != fa) dfs(v, u); } right[u] = cnt;}void pushdown(int o){ if (mark[o]) mark[o * 2] = mark[o * 2 + 1] = node[o * 2] = node[o * 2 + 1] = mark[o]; mark[o] = 0;}void add(int L, int R, int l, int r, int o, int v){ if (L <= l && r <= R) { node[o] = mark[o] = (1LL<<v); return; } pushdown(o); int mid = (l + r) / 2; if (L <= mid) add(L, R, l, mid, o * 2, v); if (R > mid) add(L, R, mid + 1, r, o * 2 + 1, v); node[o] = node[o * 2] | node[o * 2 + 1];}ll query(int L, int R, int l, int r, int o){ if (L <= l && r <= R) return node[o]; ll ans = 0; pushdown(o); int mid = (l + r) / 2; if (L <= mid) ans |= query(L, R, l, mid, o * 2); if (R > mid) ans |= query(L, R, mid + 1, r, o * 2 + 1); return ans;}int main(){ scanf("%d%d", &n, &m); cnt = 0; for (int i = 1; i <= n; i++) scanf("%d", &color[i]); for (int i = 0; i < n - 1; i++) { int x, y; scanf("%d%d", &x, &y); s[x].push_back(y); s[y].push_back(x); } dfs(1, -1); build (1, n ,1); for (int i = 0; i < m; i++) { int tk, u, v; scanf("%d", &tk); if (tk == 1) { scanf("%d%d", &u, &v); add(left[u], right[u], 1, n, 1, v); } else { scanf("%d", &u); ll ans = query(left[u], right[u], 1, n, 1); printf("%d\n", bit_num(ans)); } } return 0;}
0 0
- Educational Codeforces Round 6
- Educational Codeforces Round 6
- Educational Codeforces Round 6 总结
- Educational Codeforces Round 6 (A)贪心
- Educational Codeforces Round 6 (B)模拟
- Educational Codeforces Round 6 题解&&代码
- Educational Codeforces Round 6:(620)
- Educational Codeforces Round 6 解题报告
- Educational Codeforces Round 1
- Educational Codeforces Round 2
- Educational Codeforces Round 2
- Educational Codeforces Round 2
- Educational Codeforces Round 3
- Codeforces Educational Round 3
- Codeforces Educational Round 5
- Codeforces Educational round 5
- Educational Codeforces Round 5
- Educational Codeforces Round 7
- Python入门教程
- C#设计模式——代理模式
- QT中利用QAction增加菜单项
- ubuntu开启root用户ssh远程登录
- 自适应屏幕
- Educational Codeforces Round 6
- 分布式基础通信协议:paxos,totem和gossip
- 去除button点击下去的 灰色阴影效果
- SSD Trim
- 用GDB动态打印快速实现嵌入式系统的调试输出
- ubuntu下SD卡分区与挂载
- js获取某月的天数以及某天的前一个日期和后一天日期
- shell后台进程id
- Eclipse调试Android工具集锦之三-ADB