首页 > 代码库 > BZOJ2743 [HEOI2012]采花
BZOJ2743 [HEOI2012]采花
本来想做这道题的。。。后来发现根本搞不懂
于是又滚回了BZOJ 1878搞了搞。。。
发现这道题和1878差不多,只是要注意update的时候要加个next
其实我们可以推广到3个、4个、5个(貌似可以用倍增?感觉可以出一道题呢、、、)
然后就没有然后啦~,不要问我为什么用了fread。。。只是无聊了≥v≤~
1 /************************************************************** 2 Problem: 2743 3 User: rausen 4 Language: C++ 5 Result: Accepted 6 Time:3940 ms 7 Memory:56472 kb 8 ****************************************************************/ 9 10 #include <cstdio>11 #include <algorithm>12 13 #define lowbit(x) x & -x14 using namespace std;15 const int N = 1000005;16 const int Maxlen = 25 * N;17 struct data{18 int l, r, w;19 inline bool operator < (const data &x) const {20 return l == x.l ? r < x.r : l < x.l;21 }22 } q[N];23 24 int n, m, c;25 int a[N], next[N], first[N];26 int BIT[N];27 int ans[N];28 29 char buf[Maxlen], *C = buf;30 int Len;31 inline int read() {32 int x = 0;33 while (*C < ‘0‘ || ‘9‘ < *C) ++C;34 while (‘0‘ <= *C && *C <= ‘9‘)35 x = x * 10 + *C - ‘0‘, ++C;36 return x;37 }38 39 int L, pr[10];40 void print(int x) {41 if (!x) {42 puts("0");43 return;44 }45 while (x)46 pr[++L] = x % 10, x /= 10;47 while (L)48 putchar(pr[L--] + ‘0‘);49 putchar(‘\n‘);50 }51 52 void update(int x, int v) {53 if (!x) return;54 while (x <= n)55 BIT[x] += v, x += lowbit(x);56 }57 58 int query(int x) {59 int res = 0;60 while (x)61 res += BIT[x], x -= lowbit(x);62 return res;63 }64 65 int main() {66 int i, l;67 Len = fread(C, 1, Maxlen, stdin);68 buf[Len] = ‘\0‘;69 n = read(), c = read(), m = read();70 for (i = 1; i <= n; ++i)71 a[i] = read();72 for (i = n; i; --i)73 next[i] = first[a[i]], first[a[i]] = i;74 for (i = 1; i <= c; ++i)75 update(next[first[i]], 1);76 77 for (i = 1; i <= m; ++i)78 q[i].l = read(), q[i].r = read(), q[i].w = i;79 sort(q + 1, q + m + 1);80 for (i = l = 1; i <= m; ++i) {81 for (; l < q[i].l; ++l)82 update(next[l], -1), update(next[next[l]], 1);83 ans[q[i].w] = query(q[i].r) - query(q[i].l - 1);84 }85 for (i = 1; i <= m; ++i)86 print(ans[i]);87 return 0;88 }
BZOJ2743 [HEOI2012]采花
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。