zoj 2706 线段树
题目链接: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 线段树的更多相关文章
- ZOJ 3279-Ants(线段树)
传送门:zoj 3279 Ants Ants Time Limit: 2 Seconds Memory Limit: 32768 KB echo is a curious and cleve ...
- zoj 3888 线段树 ***
卡n^2,用线段树降到nlogn 记录每个点上所覆盖线段的次小值,保证能有两条路径能走 #include<cstdio> #include<iostream> #include ...
- Prime Query (ZOJ 3911 线段树)
Prime Query Time Limit: 1 Second Memory Limit: 196608 KB You are given a simple task. Given a sequen ...
- F - Count the Colors ZOJ - 1610 线段树染色(染区间映射)
题意:给一段0-8000的线段染色 问最后 颜色x 有几段 题解:标准线段树 但是没有push_up 最后查询是单点按顺序查询每一个点 考虑过使用区间来维护不同的线段有多少种各色的线段 思路是 ...
- ZOJ 3911 线段树
题意:有N个数字,M个操作,然后回答每个Q开头的询问 操作形式: A val pos:在pos位置上+val Q l r:询问l~r之间有多少个质数 R val l r:把l~r之间的数字替换成val ...
- HDU 1199 && ZOJ 2301 线段树离散化
一段长度未知的线段.一种操作:a b c ,表示区间[a,b]涂为颜色C,w代表白色,b代表黑色,问终于的最长连续白色段,输出起始位置和终止位置 离散化处理.和寻常的离散化不同,须要把点化成线段.左闭 ...
- ZOJ 3299 线段树 离散化
本来是个很简单的题目,难住我的主要是这么几点 1.它所有的点都是坐标,不是实际的砖块,1,3指的是1-2 2-3的砖块...后来就是用1 代表1-2 ,2代表2-3.....,这样的话,每次读入的数据 ...
- 群赛 ZOJ3741(dp) ZOJ3911(线段树)
zoj3741 简单dp.wa了两个小时,中间改了好多细节.后来还是不对,参考了别人的代码,发现一个致命问题,初始化的时候,不是每种状态都能直接达到的.初始化成-1. (题目有个小坑,0<=L& ...
- ZOJ 2706 Thermal Death of the Universe (线段树)
题目链接:ZOJ 2706 Thermal Death of the Universe (线段树) 题意:n个数.m个操作. 每一个操作(a,b)表示(a,b)全部值更新为这个区间的平均数:1.当前的 ...
随机推荐
- HashMap深度解析(一)
本文来自:高爽|Coder,原文地址:http://blog.csdn.net/ghsau/article/details/16843543 HashMap可以说是Java中最常用的集合类框架之一,是 ...
- Eclipse从数据库逆向生成Hibernate带注解的实体类
http://www.2cto.com/database/201501/372023.html
- CentOS下的svn强制用户提交时写日志
问题:在项目提交时候不写日志,在后期查看修改历史时需要对比版本才知道提交原因.解决方案:在svn服务端通过hooks在提交时强制要求写日志.#!/bin/shREPOS="$1"T ...
- 最终版-perl工具解析数据库的报告文件0120
********************需要根据自己的实际环境修改哦**************************** ******************** 1. 收集awr报告样本 a ...
- healthkit 记录每天用户的运动情况
//详细操作步骤 http://www.csdn.net/article/2015-01-23/2823686-healthkit-tutorial-with-swift //官方api https: ...
- 学习WindowsPhone 2013/12/22
菜鸟一枚,只能边看别人的博客变学习来提升自己,参考博客内容:http://blog.csdn.net/column/details/wp-comming.html?page=3 ,稍微看了一下,写的还 ...
- Android 常用系统控件
1. 日期选择器 DatePickerDialog 2. 时间选择器 TimePickerDialog 3. 单选按钮 RadioButton 4. 多选按钮 CheckBox 5. 下拉列表 Spi ...
- DIV+CSS外部字体引用
注意: 由于各个浏览器兼容问题大家还是少用这个,下面是具体的使用方法和效果截图: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN&qu ...
- apt-cache madison package-name
apt-cache madison package-name 搜索软件有那些可用版本,
- 【C语言】严格区分大小写
C语言严格区分大小写 一.相关基础知识 二.具体内容 C语言严格区分大小写: 如: int为关键字,INT则为用户标识符,即可定义int INT; int INt; int Int; cha ...