【BZOJ3211】花神游历各国
来源:互联网 发布:软件界面设计培训 编辑:程序博客网 时间:2024/05/01 11:11
3211: 花神游历各国
Time Limit: 5 Sec Memory Limit: 128 MB
Submit: 1144 Solved: 416
[Submit][Status][Discuss]
Description
Input
Output
每次x=1时,每行一个整数,表示这次旅行的开心度
Sample Input
4
1 100 5 5
5
1 1 2
2 1 2
1 1 2
2 2 3
1 1 4
Sample Output
101
11
11
HINT
对于100%的数据,n
Source
SPOJ2713 gss4 数据已加强
这个题竟然暴力下放标记我也是醉了QUQ
因为每个数开方次数并不是很多,最多开到0/1就不用开了嘛
所以记录max和sum
max
然后就是裸线段树
#include<iostream>#include<cstdio>#include<cstring>#include<cmath>#include<algorithm>#define MAXN 100100#define MAXM 201000#define lchild rt<<1,l,mid#define rchild rt<<1|1,mid+1,r#define ln rt<<1#define rn rt<<1|1using namespace std;struct seg{ int l,r; long long sum,maxn;}tree[MAXN<<4];int n,m;int op,l,r;void push_up(int rt){ tree[rt].sum=tree[ln].sum+tree[rn].sum; tree[rt].maxn=max(tree[ln].maxn,tree[rn].maxn);}void build(int rt=1,int l=1,int r=n){ int mid=(l+r)>>1; tree[rt].l=l;tree[rt].r=r; if (l==r) { scanf("%lld",&tree[rt].sum); tree[rt].maxn=tree[rt].sum; return; } build(lchild);build(rchild); push_up(rt);}void modify(int rt,int l,int r){ if (tree[rt].maxn<=1) return; int L=tree[rt].l,R=tree[rt].r,mid=(L+R)>>1; if (L==R) { tree[rt].sum=floor(sqrt(tree[rt].sum)); tree[rt].maxn=tree[rt].sum; return; } if (l<=mid) modify(ln,l,r); if (r>mid) modify(rn,l,r); push_up(rt);}long long query(int rt,int l,int r){ int L=tree[rt].l,R=tree[rt].r,mid=(L+R)>>1; if (L==l&&R==r) return tree[rt].sum; if (r<=mid) return query(ln,l,r); else if (l>mid) return query(rn,l,r); else return query(ln,l,mid)+query(rn,mid+1,r);}int main(){ scanf("%d",&n); build(); scanf("%d",&m); for (int i=1;i<=m;i++) { scanf("%d%d%d",&op,&l,&r); if (l>r) swap(l,r); if (op==1) printf("%lld\n",query(1,l,r)); else modify(1,l,r); }}
0 1
- 【bzoj3211】花神游历各国
- 【BZOJ3211】花神游历各国
- 【bzoj3211】花神游历各国
- BZOJ3211花神游历各国
- [BZOJ3211]花神游历各国
- bzoj3211 花神游历各国
- [bzoj3211]花神游历各国
- bzoj3211花神游历各国
- bzoj3211 花神游历各国
- bzoj3211花神游历各国
- 【bzoj3211】花神游历各国
- bzoj3211.花神游历各国(线段树)
- 花神游历各国 bzoj3211 线段树
- bzoj3211 花神游历各国 线段树
- [bzoj3211]花神游历各国 线段树
- bzoj3211 花神游历各国(线段树)
- bzoj3211花神游历各国 线段树
- BZOJ3211[花神游历各国]--线段树
- 关于构造函数的调用---java
- 人性多面性的终极教材——北漂18年(4)
- C\C++几个内存处理函数
- 第六节 常用组件 之 Source Qualifier 外部联接
- 分布式 文件管理系统
- 【BZOJ3211】花神游历各国
- 【BZOJ3038】【Codevs2492】上帝造题的七分钟2
- MSP430G2553头文件解析
- 设计模式之建造模式
- Animated GIF library for Processing
- Eclipse Android SDK无法下载问题不翻墙解决办法
- LeetCode(140) Word Break II
- UINavicontroller
- UITabBarControllerde 使用方法