Problem 1921 栀子花开

Accept: 300    Submit: 1070
Time Limit: 1000 mSec    Memory Limit : 32768 KB

 Problem Description

这是一个栀子花开的季节,也是一个离别的季节,四年一千多个日日夜夜,那校园的角角落落,留下了我们沉思的身影;那上百次的成绩排名表,印证了我们深深浅浅不断进步的轨迹,但是这些进步都离不开老师的谆谆教诲。

作为计算机系的学生,算法与数据结构是必修的主干课程,因此课程的每个老师都很关心每个学生的学习情况,每天下课老师都会给某个学生进行课外辅导。首先,老师会给每个学生一个能力评定分数,如果有学生要求老师给他辅导,那老师就会专门给该同学进行课外辅导,如果没有学生要求,老师就会给评定分数最低的同学课外辅导。老师给学生辅导后,学生的能力都会有所增长,然而不同的学生增长的情况都不同。老师想知道为学生课外辅导若干天后,全班的最低分学生的编号和分数。

 Input

首先第一行为T,表示有T组数据。接下来为每组数据的结构:

第一行有一个数字n,表示有n个学生,编号从1到n。(1 <= n <= 10000)。

接下来一行有n个数,分别是编号从1到n的学生的初始能力水平xi,(1 <= xi <= 1000)。

接下来有一行有一个数m表示老师给学生课外辅导了m天(1 <= m <= 100000)。

接下来m行,每行两个数(ai bi),表示老师在第i天给编号为ai同学补课,编号为ai的同学能力提高了bi(0 <= ai <= n,1 <= bi <= 1000)。如果ai为0,则表示老师今天给能力最差的学生辅导。如果最低分同时有多个学生,就给编号小的学生补课。

 Output

对于每组数据输出一行先输出组数(从1开始),接着最后输出经过m天后,全班的最低分学生的编号和分数。

 Sample Input

1
3
10 20 30
3
0 100
3 10
0 40

 Sample Output

Case 1: 3 40

 Hint

上面的数据,各个学生的能力增长情况如下:

第一天后:110 20 30

第二天后:110 20 40

第三天后:110 60 40

题目链接:http://acm.fzu.edu.cn/problem.php?pid=1921

题目分析:基础的单点更新,更新的时候如果是确定点就找点,如果不确定就往小往左找

#include <cstdio>
#include <cstring>
#include <algorithm>
#define lson l, mid, rt << 1
#define rson mid + 1, r, rt << 1 | 1
using namespace std;
int const MAX = 1e4 + 5;
int n, q, cnt, ID, num;
int x[MAX << 2], id[MAX << 2], lazy[MAX << 2];void PushUp(int rt)
{x[rt] = min(x[rt << 1], x[rt << 1 | 1]);
}void Build(int l, int r, int rt)
{lazy[rt] = 0;if(l == r){scanf("%d", &x[rt]);id[rt] = cnt ++;return;}int mid = (l + r) >> 1;Build(lson);Build(rson);PushUp(rt);
}void Update1(int pos, int c, int l, int r, int rt)
{if(l == r){x[rt] += c;return;}int mid = (l + r) >> 1;if(pos <= mid)Update1(pos, c, lson);if(pos > mid)Update1(pos, c, rson);PushUp(rt);
}void Update2(int c, int l, int r, int rt)
{if(l == r){x[rt] += c;return;}int mid = (l + r) >> 1;if(x[rt << 1] <= x[rt << 1 | 1])Update2(c, lson);elseUpdate2(c, rson);PushUp(rt);
}void Query(int l, int r, int rt)
{if(l == r){ID = id[rt];num = x[rt];return;}int mid = (l + r) >> 1;if(x[rt << 1] <= x[rt << 1 | 1])Query(lson);elseQuery(rson);
}int main()
{int T;scanf("%d", &T);for(int ca = 1; ca <= T; ca++){cnt = 1;scanf("%d", &n);Build(1, n, 1);scanf("%d", &q);while(q--){int op, c;scanf("%d %d", &op, &c);if(op != 0)Update1(op, c, 1, n, 1);elseUpdate2(c, 1, n, 1);}printf("Case %d: ", ca);Query(1, n, 1);printf("%d %d\n", ID, num);}
}

FZU 1921 栀子花开 (线段树单点更新)相关推荐

  1. HDUOJ----1166敌兵布阵(线段树单点更新)

    敌兵布阵 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submi ...

  2. poj 2892---Tunnel Warfare(线段树单点更新、区间合并)

    题目链接 Description During the War of Resistance Against Japan, tunnel warfare was carried out extensiv ...

  3. HDU - 1166敌兵布阵+HDU-1754 I Hate It (线段树单点更新——累加/最大值)

    线段树单点更新,模板题 HDU1166 敌兵布阵 C国的死对头A国这段时间正在进行军事演习,所以C国间谍头子Derek和他手下Tidy又开始忙乎了.A国在海岸线沿直线布置了N个工兵营地,Derek和T ...

  4. 【原创】tyvj1038 忠诚 计蒜客 管家的忠诚 线段树(单点更新,区间查询)...

    [原创]tyvj1038 忠诚 & 计蒜客 管家的忠诚 & 线段树(单点更新,区间查询) 最简单的线段树之一,中文题目,不翻译.... 注释讲的比较少,这已经是最简单的线段树,如果看不 ...

  5. FZU-1921 栀子花开(线段树)

    Problem 1921 栀子花开 Accept: 323    Submit: 1156 Time Limit: 1000 mSec    Memory Limit : 32768 KB Probl ...

  6. FZU - 1921 栀子花开(线段树)

    题目链接: FZU - 1921 题意: 开始给出n个数据,代表的是n个学生的初始能力,现在输入一些数据,每一组数据包括两个数字,如果第一个数字是0的话,就代表老师给当前能力最低的学生辅导,如果说第一 ...

  7. FZU - 1921——栀子花开(线段树)

    voj题目链接:https://cn.vjudge.net/contest/292206#problem/H FZU题目链接:https://cn.vjudge.net/contest/292206# ...

  8. FZU 2297 Number theory【线段树/单点更新/思维】

    Given a integers x = 1, you have to apply Q (Q ≤ 100000) operations: Multiply, Divide. Input First l ...

  9. FZU 1921 栀子花开

    栀子花开 Time Limit: 1000ms Memory Limit: 32768KB This problem will be judged on  FZU. Original ID: 1921 ...

最新文章

  1. java快排算法解读,java 快排的思路与算法
  2. (007) java后台开发之Scanner报错java.util.NoSuchElementException
  3. hdu4974 简单题
  4. 第五讲、文本编辑器(vim/vi)
  5. c语言int的存储形式,C语言变量的存储类型有3种,即int型、float型和char型
  6. 为什么统计学家应该关注数据挖掘
  7. 基于CentOS7,MySQL5.7的同步/半同步复制实现
  8. ibm服务器aix系统查看cpu,IBM AIX系统硬件信息查看命令(shell脚本)
  9. java屠龙_倚天屠龙之江湖神器
  10. ps新手零基础知识入门教程学习_图文
  11. 时间和天数相加并格式化
  12. 模板方法模式(java语言实现)
  13. express : 无法加载文件 C:\Users\HP\AppData\Roaming\npm\express.ps1,因为在此系统上禁止运行脚本.
  14. 让员工都是决策者!受到丰田集团启发:让企业少花500万的诀窍
  15. 使用Auto.js实现蚂蚁森林自动收取能量
  16. Java如何创建一个文件对象
  17. Java 类和对象详解(二)——static关键字
  18. 怎样读 nacos 源码——服务端处理客户端注册解读
  19. 利用while 循环判断
  20. jQurey入门以及选择器

热门文章

  1. The Pinhole Camera
  2. 卸载并重装eclipse
  3. 【JY】各类有限元软件计算功能赏析与探讨
  4. 2018-10-31初级.Net面试题1th
  5. 杂文:个人自述——电子之旅
  6. matlab adrc,ADRC自抗扰控制器MATLAB程序
  7. 发出商品未开票确认收入与交税的问题
  8. Unity C# 读取安卓persistentDataPath目录中的json文件
  9. Java IO(二)Java IO简介及FileInput/FileOutputStream
  10. 《Unity着色器和屏幕特效开发秘笈》—— 2.5 法线贴图