题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=1706

trick:关于正数和负数的整除问题,正数整除是自动向下取整的,但负数是向上取整的
即13/3=4.3 ->4 但-13/3=-4.3 ->-4

#include <cstdio>
#include <cmath>
#include <algorithm>
#include <iostream>
#include <cstring>
#include <queue>
#include <vector> #define maxn 32500
#define maxe 11000
#define INF 0x3f3f3f
#define lson l,mid,u<<1
#define rson mid+1,r,u<<1|1
#define ll_int long long int
using namespace std; ll_int seg[maxn<<];
ll_int pau[maxn<<];
//bool flag[maxn<<2];
ll_int initsum;
void PushUp(int u){
seg[u] = seg[u<<] + seg[u<<|];
}
void PushDown(int l,int r,int u){
if(pau[u]){
int mid = (l + r)/;
pau[u<<] = pau[u<<|] = pau[u];
seg[u<<] = (ll_int)(mid - l + ) * pau[u];
seg[u<<|] = (ll_int)(r - mid) * pau[u];
pau[u] = ;
}
}
void build(int l,int r,int u){
seg[u] = ;
pau[u] = ;
if(l == r){
scanf("%lld",&seg[u]);
initsum += seg[u];
return;
}
int mid = (l + r)/;
build(lson);
build(rson);
PushUp(u);
} void Update(int L,int R,int num,int l,int r,int u){
if(L <= l && r <= R){
pau[u] = num;
seg[u] = (ll_int)(r - l + )* num;
return;
}
PushDown(l,r,u);
int mid = (l + r)/;
if(L <= mid) Update(L,R,num,lson);
if(R > mid) Update(L,R,num,rson);
PushUp(u); //要记住啊
} ll_int Query(int L,int R,int l,int r,int u){
if(L <= l && r <= R){
return seg[u];
}
PushDown(l,r,u);
int mid = (l + r)/;
ll_int ret = ;
if(L <= mid) ret += Query(L,R,lson);
if(R > mid) ret += Query(L,R,rson);
return ret;
}
void print(int l,int r,int u){
if(l == r){
if(l == ) printf("%lld",seg[u]);
else printf(" %lld",seg[u]);
return;
}
PushDown(l,r,u);
int mid = (l + r)/;
print(lson);
print(rson);
}
int main(){
// freopen("input.txt","r",stdin);
int n,m;
while(scanf("%d%d",&n,&m) == ){
initsum = ;
build(,n,);
for(int i=;i<=m;i++){
int a,b;
scanf("%d%d",&a,&b); ll_int sum = Query(a,b,,n,);
int ave = sum/(b-a+); if(sum > && seg[] <= initsum){ //为正的UP;
if(sum % (b-a+)) ave++;
}
else if(sum < && seg[] > initsum){ //为负的down;
if(sum % (b-a+)) ave--;
} Update(a,b,ave,,n,);
}
print(,n,);
printf("\n\n");
}
}

zoj 2706 线段树的更多相关文章

  1. ZOJ 3279-Ants(线段树)

    传送门:zoj 3279 Ants Ants Time Limit: 2 Seconds      Memory Limit: 32768 KB echo is a curious and cleve ...

  2. zoj 3888 线段树 ***

    卡n^2,用线段树降到nlogn 记录每个点上所覆盖线段的次小值,保证能有两条路径能走 #include<cstdio> #include<iostream> #include ...

  3. Prime Query (ZOJ 3911 线段树)

    Prime Query Time Limit: 1 Second Memory Limit: 196608 KB You are given a simple task. Given a sequen ...

  4. F - Count the Colors ZOJ - 1610 线段树染色(染区间映射)

    题意:给一段0-8000的线段染色 问最后 颜色x 有几段 题解:标准线段树  但是没有push_up  最后查询是单点按顺序查询每一个点 考虑过使用区间来维护不同的线段有多少种各色的线段  思路是 ...

  5. ZOJ 3911 线段树

    题意:有N个数字,M个操作,然后回答每个Q开头的询问 操作形式: A val pos:在pos位置上+val Q l r:询问l~r之间有多少个质数 R val l r:把l~r之间的数字替换成val ...

  6. HDU 1199 &amp;&amp; ZOJ 2301 线段树离散化

    一段长度未知的线段.一种操作:a b c ,表示区间[a,b]涂为颜色C,w代表白色,b代表黑色,问终于的最长连续白色段,输出起始位置和终止位置 离散化处理.和寻常的离散化不同,须要把点化成线段.左闭 ...

  7. ZOJ 3299 线段树 离散化

    本来是个很简单的题目,难住我的主要是这么几点 1.它所有的点都是坐标,不是实际的砖块,1,3指的是1-2 2-3的砖块...后来就是用1 代表1-2 ,2代表2-3.....,这样的话,每次读入的数据 ...

  8. 群赛 ZOJ3741(dp) ZOJ3911(线段树)

    zoj3741 简单dp.wa了两个小时,中间改了好多细节.后来还是不对,参考了别人的代码,发现一个致命问题,初始化的时候,不是每种状态都能直接达到的.初始化成-1. (题目有个小坑,0<=L& ...

  9. ZOJ 2706 Thermal Death of the Universe (线段树)

    题目链接:ZOJ 2706 Thermal Death of the Universe (线段树) 题意:n个数.m个操作. 每一个操作(a,b)表示(a,b)全部值更新为这个区间的平均数:1.当前的 ...

随机推荐

  1. CentOS7下配置Openvpn 2.3.12

    1.下载安装包 #wget http://www.oberhumer.com/opensource/lzo/download/lzo-2.09.tar.gz#wget http://swupdate. ...

  2. javascript中常用的DOM事件

    //常用事件 onclick 点击事件 onmousedown 鼠标按下 onmousemove 鼠标移动 onmouseup 鼠标抬起 onmouseover 鼠标放上 onmouseout 鼠标放 ...

  3. codeforces 165D.Beard Graph 解题报告

    题意: 给一棵树,树的每条边有一种颜色,黑色或白色,一开始所有边均为黑色,有两个操作: 操作1:将第i条边变成白色或将第i条边变成黑色. 操作2 :询问u,v两点之间仅经过黑色变的最短距离. 树链剖分 ...

  4. prototype/constructor/__proto__之prototype

    1任何对象都有__proto__属性 属性值Object2并不是所有对象都有prototype属性.只有方法对象(构造函数)以及基本数据类型还有Array,有prototype属性;并且所有方法(对象 ...

  5. PHP不依赖系统自动执行机制

    不依赖系统,以及不依赖yii事物机制,则考虑人为触发.触发可以写在总体的公共页面上,但是考虑到对数据库以及WWW服务器的压力问题,程序的延迟问题,需要对执行函数进行一些优化. 首先,我们考虑对数据库的 ...

  6. php多条件组合查询

    1. 通过表单把查询条件提交到php文件中,在文件中以post的形式得到传送过来的条件. 2. 把传过来的查询条件赋给变量. 3. 判断如果查询条件非空,则拼接查询sql. 大体如下: 1. < ...

  7. DDoS攻击

    来自百度百科 分布式拒绝服务攻击编辑 分布式拒绝服务攻击(英文:Distributed Denial of Service,缩写:DDoS)亦称洪水攻击.顾名思义,即是利用网络上已被攻陷的电脑作为“僵 ...

  8. 转:简单介绍 P3P 技术

    原文来自于:http://blog.csdn.net/ghj1976/article/details/4889219 以 Internet Explorer 为例,默认情况下,IE的隐私策略如下图所设 ...

  9. mysql的乱码问题

    ALTER TABLE `news`.`snapshots` MODIFY title VARCHAR() CHARACTER SET utf8; ALTER TABLE `news`.`snapsh ...

  10. pycharm console 控制台乱码的解决