4299: Codechef FRBSUM
2018-07-24 17:01
1151 查看
4299: Codechef FRBSUM
https://www.lydsy.com/JudgeOnline/problem.php?id=4299
分析:
主席树。
https://blog.sengxian.com/solutions/bzoj-4408
代码:
#include<cstdio> #include<algorithm> #include<cstring> #include<cmath> #include<iostream> #include<cctype> using namespace std; typedef long long LL; inline int read() { int x=0,f=1;char ch=getchar();for(;!isdigit(ch);ch=getchar())if(ch=='-')f=-1; for(;isdigit(ch);ch=getchar())x=x*10+ch-'0';return x*f; } const int N = 100100; int ls[N*31], rs[N*31], sum[N*31], Root , CntNode; void update(int l,int r,int &rt,int last,int p) { rt = ++CntNode; sum[rt] = sum[last] + p; if (l == r) return; int mid = (l + r) >> 1; if (p <= mid) { rs[rt] = rs[last]; update(l, mid, ls[rt], ls[last], p); } else { ls[rt] = ls[last]; update(mid+1, r, rs[rt], rs[last], p); } } int query(int l,int r,int Head,int Tail,int x) { if (l == r) { return sum[Tail] - sum[Head]; } int mid = (l + r) >> 1; if (x <= mid) return query(l, mid, ls[Head], ls[Tail], x); else return sum[ls[Tail]] - sum[ls[Head]] + query(mid+1, r, rs[Head], rs[Tail], x); } int main () { int n = read(); for (int i=1; i<=n; ++i) { int x = read(); update(1, 1e9, Root[i], Root[i-1], x); } int m = read(); while (m -- ) { int l = read(), r = read(), ans = 1, tmp; while (true) { tmp = query(1, 1e9, Root[l-1], Root[r], ans); if (tmp < ans) break; ans = tmp + 1; } printf("%d\n",ans); } return 0; }
相关文章推荐
- [bzoj4299]Codechef FRBSUM
- BZOJ4299 : Codechef FRBSUM
- bzoj 4299: Codechef FRBSUM 主席树
- BZOJ 4299: Codechef FRBSUM
- Bzoj4299 Codechef FRBSUM
- 4408: [Fjoi 2016]神秘数/4299: Codechef FRBSUM
- [BZOJ4408&&BZOJ4299][FJOI2016 && Codechef]神秘数&&FRBSUM(主席树)
- 4408: [Fj Winter Camp 2016]神秘数&&4299: Codechef FRBSUM|主席树
- 【BZOJ4299】Codechef FRBSUM
- 【 bzoj 4299 】 Codechef FRBSUM - 主席树乱搞
- BZOJ4299 Codechef FRBSUM(主席树)
- BZOJ4408: [Fjoi 2016]神秘数&&BZOJ4299: Codechef FRBSUM
- bzoj 4299: Codechef FRBSUM
- BZOJ4299 & CC FRBSUM:ForbiddenSum & BZOJ4408 & 洛谷4587 & LOJ2174:[FJOI2016]神秘数——题解
- CodeChef BINOMSUM
- CodeChef SEGSUMQ Yet Another SubSegment Sum Problem(思路来自他人)
- [线段树] Codechef December Challenge 2017. Red and blue points
- [主席树] Codechef: Prefix XOR
- CodeChef:Minimum SubArray(线段树最值)
- Codeforces Round #277.5 (Div. 2)C. Given Length and Sum of Digits...(贪心)