Codeforces Round #248 (Div. 2) B - Kuriyama Mirai's Stones
来源:互联网 发布:数据挖掘 软件 编辑:程序博客网 时间:2024/06/10 16:21
题意
给出一个n个数的序列。下面有m个指令
1指令:原序列从l到r的和
2指令:排序过的序列从l到r的和
思路
线段树可做….直接扫一遍记录sum数组也可以
代码
#include <cstdio>#include <algorithm>#include <cstring>using namespace std;#define ll long longconst int maxn = 100010;int n;int s[maxn];int ss[maxn];ll segTree[maxn<<2];ll ssegTree[maxn<<2];void build(int l,int r,int node){ if(l == r) { segTree[node] = s[l]; return; } build(l,(l+r)/2,node<<1); build((l+r)/2+1,r,(node<<1)+1); segTree[node] = segTree[node<<1]+segTree[(node<<1)+1];}void buildd(int l,int r,int node){ if(l == r) { ssegTree[node] = ss[l]; return; } buildd(l,(l+r)/2,node<<1); buildd((l+r)/2+1,r,(node<<1)+1); ssegTree[node] = ssegTree[node<<1]+ssegTree[(node<<1)+1];}ll query(int a,int b,int l,int r,int node){ if(r < a || l > b) return 0; if(a <= l && r <= b) return segTree[node]; return query(a,b,l,(l+r)/2,node<<1)+query(a,b,(l+r)/2+1,r,(node<<1)+1);}ll qquery(int a,int b,int l,int r,int node){ if(r < a || l > b) return 0; if(a <= l && r <= b) return ssegTree[node]; return qquery(a,b,l,(l+r)/2,node<<1)+qquery(a,b,(l+r)/2+1,r,(node<<1)+1);}int main(){ scanf("%d",&n); for(int i = 1 ; i <= n ; i ++) { scanf("%d",&s[i]); ss[i] = s[i]; } sort(ss+1,ss+n+1); build(1,n,1); buildd(1,n,1); int m; scanf("%d",&m); while(m--) { int a,b,c; scanf("%d%d%d",&a,&b,&c); if(a == 1) printf("%I64d\n",query(b,c,1,n,1)); else printf("%I64d\n",qquery(b,c,1,n,1)); } return 0;}
1 0
- Codeforces Round #248 (Div. 2) B - Kuriyama Mirai's Stones
- Codeforces Round #248 (Div. 2) B Kuriyama Mirai's Stones
- Codeforces Round #248 (Div. 2) B - Kuriyama Mirai's Stones
- Codeforces #248 (Div. 2) B. Kuriyama Mirai's Stones
- Codeforces 433B Kuriyama Mirai's Stones
- Codeforces 443B Kuriyama Mirai's Stones
- B. Kuriyama Mirai's Stones
- codeforces#248_div2_B Kuriyama Mirai's Stones 前缀和
- CF#248DIV2:B. Kuriyama Mirai's Stones(线段树)
- E - Kuriyama Mirai's Stones CodeForces - 433B(解题报告)
- B. Kuriyama Mirai's Stones(有时候暴力解决一切)
- ekewcb CF#248DIV2:B. Kuriyama Mirai's Stones(线段树)
- lxsphs CF#248DIV2:B. Kuriyama Mirai's Stones(线段树)
- Codeforces Round #323 (Div. 2) B. Robot's Task
- Codeforces Round #323 (Div. 2) B. Robot's Task
- Codeforces Round #323 (Div. 2)B. Robot's Task
- Codeforces Round #339 (Div. 2) B.Gena's Code
- Codeforces Round #339 (Div. 2) B. Gena's Code
- recommendation system
- MediaStore.Images.Thumbnails
- linux LCD驱动(二)--FrameBuffer
- 单例模式的简单描述(饿汉式,饱汉式,双重锁模式)
- Box2d碰撞粘滞的问题(java)
- Codeforces Round #248 (Div. 2) B - Kuriyama Mirai's Stones
- Linux LCD驱动(三)--图形显示
- 利用异常类记录调用日志
- 在Windows下使用OpenCL配置
- LeetCode213:House Robber II
- Android ORMLite 框架的入门用法
- 软件加密基本思路
- PPP点对点与frame-relay帧中继
- 利用Hbase的coprocessor实现增量式Apriori算法