秋实大哥与小朋友

Time Limit: 3000/1000MS (Java/Others)     Memory Limit: 65535/65535KB (Java/Others)

Submit Status

秋实大哥以周济天下,锄强扶弱为己任,他常对天长叹:安得广厦千万间,大庇天下寒士俱欢颜。

所以今天他又在给一群小朋友发糖吃。

他让所有的小朋友排成一行,从左到右标号。在接下去的时间中,他有时会给一段区间的小朋友每人vv颗糖,有时会问第xx个小朋友手里有几颗糖。

这对于没上过学的孩子来说实在太困难了,所以你看不下去了,请你帮助小朋友回答所有的询问。

Input

第一行包含两个整数nn,mm,表示小朋友的个数,以及接下来你要处理的操作数。

接下来的mm行,每一行表示下面两种操作之一:

0 l r v : 表示秋实大哥给[l,r]这个区间内的小朋友每人v颗糖 1 x : 表示秋实大哥想知道第x个小朋友手里现在有几颗糖

1≤m,v≤1000001≤m,v≤100000,1≤l≤r≤n1≤l≤r≤n,1≤x≤n1≤x≤n,1≤n≤1000000001≤n≤100000000。

Output

对于每一个11 xx操作,输出一个整数,表示第xx个小朋友手里现在的糖果数目。

Sample input and output

Sample Input Sample Output
3 4
0 1 3 1
1 2
0 2 3 3
1 3
1
4

WA了两次,第一次询问的时候没有用离散化之后的值,第二次发现数组开小了。。。

#include<algorithm>
#include<iostream>
#include<cstring>
#include<vector>
#include<cstdio>using namespace std;
#define lson l, m, rt << 1
#define rson m + 1, r, rt << 1|1
const int N = 100000 + 5;
typedef long long LL;
struct node{int p, l, r, v;node(){}node(int p, int l, int r, int v): p(p), l(l), r(r), v(v){}node(int p, int v): p(p), v(v){}
}Node[N];
LL sum[N << 4], add[N << 4];vector<int> X;void PushDown(int rt, int m){if(add[rt]){add[rt << 1] += add[rt];add[rt << 1|1] += add[rt];sum[rt << 1] += (LL)add[rt]*(m - (m >> 1));sum[rt << 1|1] += (LL)add[rt]*(m >> 1);add[rt] = 0;}
}
void Build(int l, int r, int rt){add[rt] = sum[rt] = 0;if(l == r) return;int m = (l + r) >> 1;Build(lson);Build(rson);
}void Updata(int L, int R, int c, int l, int r, int rt){if(L <= l && r <= R){add[rt] += c;sum[rt] += (LL)c*(r - l + 1);return;}PushDown(rt, r - l + 1);int m = (l + r) >> 1;if(L <= m) Updata(L, R, c, lson);if(R > m) Updata(L, R, c, rson);
}LL Query(int p, int l, int r, int rt){if(l == r) return sum[rt];PushDown(rt, r - l + 1);int m = (l + r) >> 1;if(p <= m) return Query(p, lson);return Query(p, rson);
}int Binary(int x){return distance(X.begin(), lower_bound(X.begin(), X.end(), x));
}int dic(){sort(X.begin(), X.end());X.erase(unique(X.begin(), X.end()), X.end());return X.size() - 1;
}
int main(){int  n, m, p, l, r, c;scanf("%d %d", &n, &m);for(int i = 1; i <= m; i++){scanf("%d", &p);if( p == 1){scanf("%d", &c);X.push_back( c );Node[i] = node(p, c);}else{scanf("%d %d %d", &l, &r, &c);X.push_back( l );X.push_back( r );Node[i] = node(p, l, r, c);}}int k = dic();Build(0, k, 1);for(int i = 1; i <= m; i++){if(Node[i].p == 0){l = Binary(Node[i].l);r = Binary(Node[i].r);c = Node[i].v;Updata(l, r, c, 0, k, 1);}else{c = Binary(Node[i].v);printf("%lld\n", Query(c, 0, k, 1));}}
}

转载于:https://www.cnblogs.com/Pretty9/p/7413541.html

UESTC-1059 秋实大哥与小朋友(离散化+线段树)相关推荐

  1. CDOJ 1059 秋实大哥与小朋友(离散化)

    本文部分代码及思路来源于:http://www.cnblogs.com/Xiper/p/4470202.html 秋实大哥与小朋友 Time Limit: 3000/1000MS (Java/Othe ...

  2. CDOJ-1057 秋实大哥与花(线段树区间更新)

    秋实大哥与花 Time Limit: 3000/1000MS (Java/Others)     Memory Limit: 65535/65535KB (Java/Others) Submit St ...

  3. 秋实大哥与花(线段树)

    思路:线段树区间更新查询 #include <cstdio> #include <cstring> #include <algorithm> #include &l ...

  4. 2015 UESTC 数据结构专题A题 秋实大哥与小朋友 线段树 区间更新,单点查询,离散化...

    秋实大哥与小朋友 Time Limit: 1 Sec  Memory Limit: 256 MB 题目连接 http://acm.uestc.edu.cn/#/contest/show/59 Desc ...

  5. 线段树 (更新区间查询点)秋实大哥与小朋友

    题目链接:https://vjudge.net/contest/186273#problem/D D - 秋实大哥与小朋友 Problem Description 秋实大哥以周济天下,锄强扶弱为己任, ...

  6. uestc 1073 秋实大哥与线段树 Label:线段树

    秋实大哥与线段树 Time Limit: 3000/1000MS (Java/Others)     Memory Limit: 65535/65535KB (Java/Others) "学 ...

  7. UESTC -- 1061 秋实大哥与战争(暴力/set)

    题目大意: 秋实大哥命令所有士兵从左到右排成了一行来抵挡敌人的攻击.敌方每一次会攻击一个士兵,这个士兵就会阵亡,整个阵列就会从这个位置断开:同时有的时候已阵亡的士兵会受人赢气息感染而复活.秋实大哥想知 ...

  8. [UESTC 1061]秋实大哥与战争

    男儿何不带吴钩,收取关山五十州. 征战天下是秋实大哥一生的梦想,所以今天他又在练习一个对战游戏. 秋实大哥命令所有士兵从左到右排成了一行来抵挡敌人的攻击. 敌方每一次会攻击一个士兵,这个士兵就会阵亡, ...

  9. UESTC - 1057 秋实大哥与花 线段树

    题意 秋实大哥是一个儒雅之人,昼听笙歌夜醉眠,若非月下即花前. 所以秋实大哥精心照料了很多花朵.现在所有的花朵排成了一行,每朵花有一个愉悦值. 秋实大哥每天要对着某一段连续的花朵歌唱,然后这些花朵的愉 ...

最新文章

  1. java 微信多媒体文件_java微信接口之三—上传多媒体文件
  2. Device.js——检测设备平台、操作系统的Javascript 库
  3. UVa 208 - Firetruck (回溯)
  4. mobile-util.js适配移动端的js
  5. 我看西电通院月考——学生应该做点什么?
  6. 走心地讨论一下,一个中国码农在硅谷求职的实用经历
  7. thymeleaf之菜单树
  8. 【Python - wxpython】- 卫星通信系统链路计算软件
  9. Android学习——四大核心组件(核心知识点整理)
  10. 数据结构与算法书籍汇总(从小白到大神)
  11. matlab实现马尔可夫链,马尔可夫链matlab源码
  12. Struts 2的基石——拦截器(Interceptor)详细讲解
  13. 大一微积分笔记整理_大一下总结
  14. iOS 15 适配总结
  15. 山西3件国宝春节期间亮相《国家宝藏》
  16. Redis学习之旅--Redis的数据类型你都知道吗?
  17. 关于Sublime text3 配置及插件整理
  18. Java Logging之JUL系列——LogRecord
  19. JAVA计算机毕业设计橱柜定制系统Mybatis+系统+数据库+调试部署
  20. php项目css加载失败,CSS页面加载失败的原因有哪些

热门文章

  1. rt-thread物联网开发板mqtt实验
  2. js实现京东购物放大镜和选项卡效果
  3. 【贪玩巴斯】带你一起攻克英语语法长难句—— 第二章——并列句全解 2021年12月17日——2022年2月5日
  4. Typora搭建图床解决上传md文档图片无法加载的问题
  5. python二级证书含金量排名_计算机二级证书的含金量不高?别小瞧,这些优势用处不小!...
  6. android 多屏幕显示activity,副屏,无线投屏
  7. 物业养老,智慧养老新方式
  8. QT起一个线程实时监测某个进程是否正常运行
  9. Linux 进程信号深剖
  10. 微信:签名不对,请检查签名是否与开放平台上填写的一致