C
没啥好讲的,用个数组记一下有利益冲突的就完事了。
1 2 3 4 5 6 7 8 9
| cin >> n >> m; for (int i = 1;i <= m;i++) { cin >> a[i] >> b[i]; cnt[a[i]]++, cnt[b[i]]++; } for (int i = 1;i <= n;i++) { if (n - cnt[i] - 1 < 3)cout << "0 "; else cout << (n - cnt[i] - 1) * (n - cnt[i] - 2) * (n - cnt[i] - 3) / 6 << " "; }
|
D
更水了,不就是树状数组板子吗
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
| void Swap(int x) { int now = a[x + 1] - a[x], noow = a[x] - a[x + 1]; add(x, now), add(x + 1, noow); swap(a[x], a[x + 1]); }
signed main() { ios::sync_with_stdio(0); cin.tie(0); cin >> n >> q; for (int i = 1;i <= n;i++) { cin >> a[i]; add(i, a[i]); } for (;q--;) { int op, l, r, x; cin >> op; if (op == 1) { cin >> x; Swap(x); } else { cin >> l >> r; cout << sum(r) - sum(l - 1) << "\n"; } } return 0; }
|
饭堂点:D 一开始用 ODT 写没优化 T 飞了。