Thermal Death of the Universe


Time Limit: 10 Seconds                                     Memory Limit: 32768 KB                            

Johnie has recently learned about the thermal death concept.  Given that the Global Entropy always increases, it will end in the  thermal death of the Universe. The idea has impressed him extremely.  Johnie does not want the universe to die this way.

So he decided to emulate the process to check how soon the thermal death can occur. He has created the mathematical model of the process in the following way. The universe is represented as an array of n integer numbers. The life of the universe is represented as the sequence of the following entropy operations: take elements from ith to jth and replace them with their average value. Since their average is not necessarily integer, it is rounded.

To keep balance, rounding is performed either up, or down depending on the current sum of all elements of the array. If their sum is less or equal to the sum of the original array, the rounding is  performed up, in the other case --- down.

Given the initial array and the sequence of the entropy operations, find the contents of the resulting array.

Input

There are mutiple cases in the input file.

The first line of each case contains n and m --- the size of the array and the number of operations respectively (1 <= m, n <= 30,000 ). The second line contains n integer numbers --- the initial contents of the array, they do not exceed 109 by their absolute value. The following m lines contain two integer numbers each and describe entropy operations.

There is an empty line after each case.

Output

Output n integer numbers --- the contents of the array after all operations.

There should be am empty line after each case.

Sample Input

6 4
1 2 3 4 5 6
1 2
2 5
5 6
4 6

Sample Output

2 3 3 5 5 5

赤裸裸的一条线段树,然后需要延时更新~~注意细节就是求值的时候要强转换成(LL)(r-l +1)*v

#include <bits/stdc++.h>

#define lson l,m,rt<<1
#define rson m+1,r,rt<<1|1
#define lr rt<<1
#define rr rt<<1|1 using namespace std; typedef long long LL;
const int N = ; LL osum;
int n,q; struct ST
{
int l,r;
LL lazy,date;
int mid(){
return (l+r)>>;
}
}st[N<<]; void push_down(int rt)
{
if( st[rt].lazy )
{
st[lr].lazy = st[rr].lazy = st[rt].lazy;
st[lr].date = (LL)( st[lr].r - st[lr].l + ) * st[lr].lazy;
st[rr].date = (LL)( st[rr].r - st[rr].l + ) * st[rr].lazy;
st[rt].lazy=;
}
} void build(int l,int r,int rt)
{
st[rt].l=l,st[rt].r=r;
st[rt].lazy=;
if(l==r)
{
scanf("%lld",&st[rt].date);
osum += st[rt].date;
return ;
} int m=st[rt].mid();
build(lson);
build(rson);
st[rt].date = st[rr].date + st[lr].date;
} void update(int l,int r,int rt,LL v)
{
if( l == st[rt].l && st[rt].r == r )
{
st[rt].date= (LL) ( r - l + ) * v ;
st[rt].lazy=v;
return;
} push_down(rt); int m=st[rt].mid(); if( l > m )
update(l,r,rr,v);
else if(r <= m)
update(l,r,lr,v); else{
update(lson,v);
update(rson,v);
}
st[rt].date = st[rr].date + st[lr].date; } LL query(int l,int r,int rt)
{ if( l==st[rt].l && r==st[rt].r )
{
return st[rt].date;
} push_down(rt); int m=st[rt].mid(); if(l > m)
return query(l,r,rr); else if( r <= m)
return query(l,r,lr); else
return query(lson)+query(rson);
} void show(int rt)
{
if(st[rt].l == st[rt].r)
{
printf("%lld",st[rt].date);
if(st[rt].r != n)printf(" ");
else printf("\n");
return;
}
int m=st[rt].mid();
push_down(rt);
show(lr);
show(rr);
} int main()
{
int x,y;
// freopen("in.txt","r",stdin);
while(~scanf("%d%d",&n,&q)){
osum=;
build(,n,);
while(q--)
{
scanf("%d%d",&x,&y);
if(x>y)swap(x,y);
LL tmp = query(x,y,);
double ave = (long double)tmp/(y-x+);
if( st[].date <= osum ) update(x, y,,(LL)ceil(ave));
else update( x, y, ,(LL)floor(ave) );
}
show();
puts("");
}
return ;
}

ZOJ 2706 Thermal Death of the Universe的更多相关文章

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

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

  2. zoj 2706 线段树

    题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=1706 trick:关于正数和负数的整除问题,正数整除是自动向下取整的 ...

  3. Soj题目分类

    -----------------------------最优化问题------------------------------------- ----------------------常规动态规划 ...

  4. [转]Hooked on DTrace

    source link: 1.http://blog.bignerdranch.com/1907-hooked-on-dtrace-part-1/ 2.http://blog.bignerdranch ...

  5. HDU 3689 Infinite monkey theorem [KMP DP]

    Infinite monkey theorem Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Oth ...

  6. hdu 3689 杭州 10 现场 J - Infinite monkey theorem 概率dp kmp 难度:1

    J - Infinite monkey theorem Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d &am ...

  7. hdu 3689 Infinite monkey theorem

    Infinite monkey theorem Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/ ...

  8. HDU 3689 Infinite monkey theorem(DP+trie+自动机)(2010 Asia Hangzhou Regional Contest)

    Description Could you imaging a monkey writing computer programs? Surely monkeys are smart among ani ...

  9. HUD3689 Infinite monkey theorem

    Infinite monkey theorem Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/ ...

随机推荐

  1. 微信支付MD5签名算法C#版,ASCII码字典序排序0,A,B,a,b

    /// <summary> /// 微信支付MD5签名算法,ASCII码字典序排序0,A,B,a,b /// </summary> /// <param name=&qu ...

  2. win7提示不是正版桌面变黑

    1.以管理员身份运行cmd.exe 2.在该界面>后面输入SLMGR -REARM,大家注意下有个空格键 然后点击确定,重启电脑就OK了.

  3. gcc的-D,-w,-W,-Wall,-O3这些参数的意义

    一.-D 其意义是添加宏定义,这个很有用. 当你想要通过宏控制你的程序,不必傻乎乎的在程序里定义,然后需要哪个版本,去修改宏. 只需要在执行gcc的时候,指定-D,后面跟宏的名称即可. 示例: gcc ...

  4. java并发学习--第一章 线程的创建

    所谓的并发就是指一个时间段中有几个程序都处于已启动运行到运行完毕之间,且这几个程序都是在同一个处理机上运行,但任一个时刻点上只有一个程序在处理机上运行.所以我们看似几个线程在同时进行,其实在操作系统中 ...

  5. cx_Oracle python模块安装

    1. 需要从oracle网站下载一下两个包 instantclient-basic-linux.x64-11.2.0.4.0.zip instantclient-sdk-linux.x64-11.2. ...

  6. k8s+jenkins

    1 server 的port , targetport, nodeport的区别 targetport为容器的暴露端口,为最后端的端口 port可以理解为pod的端口,pod是容器的外层,该端口可以在 ...

  7. 获取不到最新的url地址展示图片可以盖时间戳

    如:  $("#"+attachId).on('click', function() {                 params1 = [];                 ...

  8. VUE的双向绑定及局部组件的使用

    vue的双向绑定,使用v-model,v-model只能使用在input  textare    select中 <!DOCTYPE html> <html lang="z ...

  9. windows 10 删除资源管理器导航栏 Creative Cloud Files

    安装完Adobe的Photoshop.After Effects等软件后,资源管理器导航栏会出现让人讨厌的Creative Cloud Files目录,稍微修改注册表即可删除. 快捷键Windows ...

  10. django 多表查询并返回结果

    (不喜勿喷,个人记录) 问题,有两张关联的表,表B的api_id关联表A的id 我想在页面上返回两张表查询之后的共同结果? 因为两张表的id是一样的,就先获取到表A的对象,然后拿表A的对象id当做表B ...