【codevs 2492】上帝造题的七分钟2
来源:互联网 发布:linux能用ghost 编辑:程序博客网 时间:2024/04/20 03:38
QAQ这题不是线段树?
参见切水果
#include <iostream>#include <cstdio>#include <algorithm>#include <cstring>#include <cmath>using namespace std;typedef long long ll;const int MAXN = 100000 + 5;ll num[MAXN];int zero[MAXN];int fa[MAXN];int n;void init(){ for(int i = 0;i < MAXN;i ++) fa[i] = i; return;}int find(int x){ return fa[x] == x ? x : fa[x] = find(fa[x]);}bool same(int x,int y){ return find(x) == find(y);}void merge(int x,int y){ x = find(x); y = find(y); fa[x] = y; return;}void change(int l,int r){ for(int i = l;i <= r;i ++) { i = find(i); if(i > r) break; num[i] = sqrt(num[i]); if(num[i] == 1) merge(i,i + 1); } return;}ll ask(int l,int r){ ll ans = 0; for(int i = l;i <= r;i ++) { int x = find(i); ans += min(x,r + 1) - i; i = x; if(i <= r) ans += num[i]; } ans -= zero[r] - zero[l - 1]; return ans;}int Q;int q,l,r;int main(){ scanf("%d",&n); init(); for(int i = 1;i <= n;i ++) { scanf("%lld",&num[i]); if(!num[i]) zero[i] ++; zero[i] += zero[i - 1]; } scanf("%d",&Q); while(Q --) { scanf("%d %d %d",&q,&l,&r); if(l > r) swap(l,r); switch(q) { case 0: change(l,r); break; case 1: printf("%lld\n",ask(l,r)); break; } } return 0;}
0 0
- 【codevs 2492】上帝造题的七分钟2
- codevs 2492 上帝造题的七分钟 2(线段树)
- Codevs 2492 上帝造题的七分钟 2(线段树)
- [BZOJ3132] 上帝造题的七分钟
- 【BZOJ3132】上帝造题的七分钟
- [BZOJ3132]上帝造题的七分钟
- BZOJ3132上帝造题的七分钟
- 【bzoj3132】上帝造题的七分钟
- 【BZOJ3132】上帝造题的七分钟
- 【bzoj3038】 上帝造题的七分钟2
- [BZOJ3038][线段树]上帝造题的七分钟2
- bzoj3038 上帝造题的七分钟2
- BZOJ 3038: 上帝造题的七分钟2
- 【BZOJ3038】【Codevs2492】上帝造题的七分钟2
- BZOJ3038上帝造题的七分钟2
- [BZOJ3038]上帝造题的七分钟2
- codevs2492 上帝造题的七分钟 2
- bzoj 3038: 上帝造题的七分钟2
- 基础学习第二天_保留两位小数点
- 暗黑字符串
- 优先队列的使用
- java.lang.NoSuchMethodError: antlr.collections.AST.getLine()I问题解决及总结
- poj1948[USACO2002,Feb]Triangular Pastures三角牧场
- 【codevs 2492】上帝造题的七分钟2
- 开发入门教程【一】什么是Arduino
- POJ-1062 昂贵的聘礼 (dijkstra算法)
- 最新爆料!12个最佳开源应用获奖得主花落谁家
- 二维费用的背包问题
- [转载]蓝牙4.0——Android BLE开发官方文档翻译
- LeetCode------44. Wildcard Matching(?*匹配)
- Java中消息摘要的编程(MD5/SHA/HMAC)的使用
- Bootstrap——表格、按钮、图像