UESTC-1059 秋实大哥与小朋友(离散化+线段树)
秋实大哥与小朋友
Time Limit: 3000/1000MS (Java/Others) Memory Limit: 65535/65535KB (Java/Others)
秋实大哥以周济天下,锄强扶弱为己任,他常对天长叹:安得广厦千万间,大庇天下寒士俱欢颜。
所以今天他又在给一群小朋友发糖吃。
他让所有的小朋友排成一行,从左到右标号。在接下去的时间中,他有时会给一段区间的小朋友每人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 秋实大哥与小朋友(离散化+线段树)相关推荐
- CDOJ 1059 秋实大哥与小朋友(离散化)
本文部分代码及思路来源于:http://www.cnblogs.com/Xiper/p/4470202.html 秋实大哥与小朋友 Time Limit: 3000/1000MS (Java/Othe ...
- CDOJ-1057 秋实大哥与花(线段树区间更新)
秋实大哥与花 Time Limit: 3000/1000MS (Java/Others) Memory Limit: 65535/65535KB (Java/Others) Submit St ...
- 秋实大哥与花(线段树)
思路:线段树区间更新查询 #include <cstdio> #include <cstring> #include <algorithm> #include &l ...
- 2015 UESTC 数据结构专题A题 秋实大哥与小朋友 线段树 区间更新,单点查询,离散化...
秋实大哥与小朋友 Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://acm.uestc.edu.cn/#/contest/show/59 Desc ...
- 线段树 (更新区间查询点)秋实大哥与小朋友
题目链接:https://vjudge.net/contest/186273#problem/D D - 秋实大哥与小朋友 Problem Description 秋实大哥以周济天下,锄强扶弱为己任, ...
- uestc 1073 秋实大哥与线段树 Label:线段树
秋实大哥与线段树 Time Limit: 3000/1000MS (Java/Others) Memory Limit: 65535/65535KB (Java/Others) "学 ...
- UESTC -- 1061 秋实大哥与战争(暴力/set)
题目大意: 秋实大哥命令所有士兵从左到右排成了一行来抵挡敌人的攻击.敌方每一次会攻击一个士兵,这个士兵就会阵亡,整个阵列就会从这个位置断开:同时有的时候已阵亡的士兵会受人赢气息感染而复活.秋实大哥想知 ...
- [UESTC 1061]秋实大哥与战争
男儿何不带吴钩,收取关山五十州. 征战天下是秋实大哥一生的梦想,所以今天他又在练习一个对战游戏. 秋实大哥命令所有士兵从左到右排成了一行来抵挡敌人的攻击. 敌方每一次会攻击一个士兵,这个士兵就会阵亡, ...
- UESTC - 1057 秋实大哥与花 线段树
题意 秋实大哥是一个儒雅之人,昼听笙歌夜醉眠,若非月下即花前. 所以秋实大哥精心照料了很多花朵.现在所有的花朵排成了一行,每朵花有一个愉悦值. 秋实大哥每天要对着某一段连续的花朵歌唱,然后这些花朵的愉 ...
最新文章
- java 微信多媒体文件_java微信接口之三—上传多媒体文件
- Device.js——检测设备平台、操作系统的Javascript 库
- UVa 208 - Firetruck (回溯)
- mobile-util.js适配移动端的js
- 我看西电通院月考——学生应该做点什么?
- 走心地讨论一下,一个中国码农在硅谷求职的实用经历
- thymeleaf之菜单树
- 【Python - wxpython】- 卫星通信系统链路计算软件
- Android学习——四大核心组件(核心知识点整理)
- 数据结构与算法书籍汇总(从小白到大神)
- matlab实现马尔可夫链,马尔可夫链matlab源码
- Struts 2的基石——拦截器(Interceptor)详细讲解
- 大一微积分笔记整理_大一下总结
- iOS 15 适配总结
- 山西3件国宝春节期间亮相《国家宝藏》
- Redis学习之旅--Redis的数据类型你都知道吗?
- 关于Sublime text3 配置及插件整理
- Java Logging之JUL系列——LogRecord
- JAVA计算机毕业设计橱柜定制系统Mybatis+系统+数据库+调试部署
- php项目css加载失败,CSS页面加载失败的原因有哪些
热门文章
- rt-thread物联网开发板mqtt实验
- js实现京东购物放大镜和选项卡效果
- 【贪玩巴斯】带你一起攻克英语语法长难句—— 第二章——并列句全解 2021年12月17日——2022年2月5日
- Typora搭建图床解决上传md文档图片无法加载的问题
- python二级证书含金量排名_计算机二级证书的含金量不高?别小瞧,这些优势用处不小!...
- android 多屏幕显示activity,副屏,无线投屏
- 物业养老,智慧养老新方式
- QT起一个线程实时监测某个进程是否正常运行
- Linux 进程信号深剖
- 微信:签名不对,请检查签名是否与开放平台上填写的一致