秋实大哥与小朋友

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





解题思路:乍一看题目很简单,但是数据规模太大,所以需要使用到离散化。
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <string>
#include <set>
#include <map>
#include <queue>
#include <algorithm>
using namespace std;
#define maxn 200005
set<int>jud;
long long tr[maxn];
int point[maxn];
//是否可以改掉,只用set而不用再开一个数组?
int size = 0;
struct operate
{int op, l, r, v;operate(int op, int l, int r, int v){this->op = op; this->l = l;this->r = r; this->v = v;}
};
queue<operate>operque;
void update(int l, int r, int val)
{for (int i = r; i > 0; i -= i&(-i))tr[i] += val;for (int i = l - 1; i > 0; i -= i&(-i))tr[i] += (-val);
}
long long query(int idx)
{long long sum = 0;while (idx <= size){sum += tr[idx];idx += idx&(-idx);}return sum;
}
int main()
{int l = 0, r = 0, x = 0;int n = 0, m = 0, bl = 0, v = 0;char op[10] = { '\0' };char fst[10] = { '\0' };memset(point, 0, sizeof(point));memset(tr, 0, sizeof(tr));gets(fst);sscanf(fst,"%d %d", &n, &m);while (m--){gets(op);if (op[0] == '0'){sscanf(op, "%d %d %d %d", &bl, &l, &r, &v);if (!jud.count(l)){jud.insert(l);point[++size] = l;}if (!jud.count(r)){jud.insert(r);point[++size] = r;}operque.push(operate(bl, l, r, v));}else if (op[0] == '1'){sscanf(op, "%d %d", &bl, &x);if (!jud.count(x)){jud.insert(x);point[++size] = x;}operque.push(operate(bl, 0, 0, x));}}sort(point + 1, point + 1 + size);while (!operque.empty()){operate temp = operque.front(); operque.pop();if (temp.op & 1){int pos = lower_bound(point + 1, point + 1 + size, temp.v) - point;printf("%lld\n", query(pos));}else{int left = lower_bound(point + 1, point + 1 + size, temp.l) - point;int right = lower_bound(point + 1, point + 1 + size, temp.r) - point;update(left, right, temp.v);}}return 0;
}

题目链接:点击打开链接http://acm.uestc.edu.cn/#/problem/show/1059

CDOJ1059-秋实大哥与小朋友相关推荐

  1. UESTC-1059 秋实大哥与小朋友(离散化+线段树)

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

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

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

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

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

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

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

  5. UESTC-1057 秋实大哥与花(线段树+成段加减+区间求和)

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

  6. E - 秋实大哥与战争

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

  7. CDOJ 1070 秋实大哥打游戏 带权并查集

    链接 F - 秋实大哥打游戏 Time Limit:1000MS     Memory Limit:65535KB     64bit IO Format:%lld & %llu Submit ...

  8. 2015 UESTC 数据结构专题H题 秋实大哥打游戏 带权并查集

    秋实大哥打游戏 Time Limit: 1 Sec  Memory Limit: 256 MB 题目连接 http://acm.uestc.edu.cn/#/contest/show/59 Descr ...

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

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

最新文章

  1. 四阶龙格库塔法的基本思想_SIR模型计算基本再生数R0
  2. java eclipse 内存_java – Eclipse 3.5.1使用大量内存
  3. python graphql query返回一组字典数据_Python的sqlalchemy使用原生sql查询如何返回字典形式的数组?...
  4. c语言怎么编程dll,【C语言】编写的DLL注入工具
  5. Java - I/O
  6. JDK 8功能的可疑方面
  7. 企业微信_获取access_token
  8. 在高并发情况nginx的作用
  9. 第十六:Allure-pytest功能特性介绍
  10. B VUE系列 七:vue的脚手架项目是用webpack构建的本地服务环境,如何在手机上访问?...
  11. php表单提交 邮箱_PHP的一个基础知识 表单提交
  12. 方舟服务器后台一直显示正在重启,win10正在重新启动卡住如何解决_win10重启后一直显示正在重新启动的解决教程...
  13. 微信小程序上传图片解决方案+oss+后端代码
  14. 什么是SysWow64
  15. (PTA)数据结构(作业)8、期中测验
  16. 幻灯片放映时无法切换到下一张
  17. winwods 10 移动硬盘无法弹出
  18. 银联扫码支付及静态码回调验签
  19. 关于4K高清分辨率下,QOpenGLWidget无法完整绘制图像问题的解决
  20. css em弹性布局

热门文章

  1. 计算机是干嘛的不会打字能学吗,不会打字能学护士吗不会使用电脑?
  2. 解决js newDate()苹果手机日期格式显示NaN
  3. java 统计文本中出现概率最高的10个字符串!!
  4. Ubuntu(linux)添加系统证书信任
  5. 使用python中PIL库进行切图时候出现了图片全黑
  6. 小程序仿朋友圈、表白墙应用实现简单的发表功能
  7. Python自然语言处理 10 分析语句的含义
  8. SPOJ GSS2 Can you answer these queries II
  9. 微信小程序部分安卓机型无法保存图片的问题解决办法
  10. PPT的备注区字体太小,还改不了?