ZOJ 2706 Thermal Death of the Universe
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的更多相关文章
- ZOJ 2706 Thermal Death of the Universe (线段树)
题目链接:ZOJ 2706 Thermal Death of the Universe (线段树) 题意:n个数.m个操作. 每一个操作(a,b)表示(a,b)全部值更新为这个区间的平均数:1.当前的 ...
- zoj 2706 线段树
题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=1706 trick:关于正数和负数的整除问题,正数整除是自动向下取整的 ...
- Soj题目分类
-----------------------------最优化问题------------------------------------- ----------------------常规动态规划 ...
- [转]Hooked on DTrace
source link: 1.http://blog.bignerdranch.com/1907-hooked-on-dtrace-part-1/ 2.http://blog.bignerdranch ...
- HDU 3689 Infinite monkey theorem [KMP DP]
Infinite monkey theorem Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Oth ...
- 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 ...
- hdu 3689 Infinite monkey theorem
Infinite monkey theorem Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/ ...
- 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 ...
- HUD3689 Infinite monkey theorem
Infinite monkey theorem Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/ ...
随机推荐
- CentOS7系统局域网内配置本地yum源解决cannot find a valid baseurl for repo
一. 问题详情 因为服务器无法连接外网,所有直接用yum安装某些功能将受到影响,报错如下: Error: Cannot find a valid baseurl for repo: base ...
- Power Designer将数据库表结构导出到Word
一. 安装与运行PowerDesigner(本例中用的版本是15.1) 二.“File”→“New Model”→“Categories”→“Information”→“Physical Dat ...
- [Luogu2014]选课(树形dp)
[Luogu2014]选课 题目描述 在大学里每个学生,为了达到一定的学分,必须从很多课程里选择一些课程来学习,在课程里有些课程必须在某些课程之前学习,如高等数学总是在其它课程之前学习.现在有N门功课 ...
- 继承和构造函数语法造成的一个bug
一 出错误的代码 开发环境: visual studio 2017 社区版 #include "pch.h" #include <iostream> #include ...
- java 创建匿名对象及声明map list时初始化
java 创建匿名对象 类似于c# 中的 new { a:"aaa",b:"bbb"}; 1 创建匿名对象Object myobj = new Object() ...
- js实时计算价格
//通过数量,单价的输入,实时显示总价 $("#number,#price").on("input",function(e){ $("#totalPr ...
- SSM三大框架整合梳理
整合步骤 0.搭建动态web项目 1.需要的jar包 spring(包括springmvc) mybatis相关jar包 mybatis与spring的整合包(个人建议尽量使用高版本的,避免出现一些奇 ...
- UVa 10054 : The Necklace 【欧拉回路】
题目链接 题目大意:我的妹妹有一串由各种颜色组成的项链. 项链中两个连续珠子的接头处共享同一个颜色. 如上图, 第一个珠子是green+red, 那么接这个珠子的必须以red开头,如图的red+whi ...
- 【Unity优化】Unity中究竟能不能使用foreach?
关于这个话题,网络上讨论的很多,我也收集了一些资料,都不是很齐全,所以自己亲自测试,这里把结果分享给大家. foreach究竟怎么了? 研究过这个问题的人都应该知道,就是它会引起频繁的GC Alloc ...
- [CSP-S模拟测试]:reverse(数位DP)
题目描述 我们定义: $\overline{d_k...d_2d_1}=\sum \limits_{i=1}^kd_i\times {10}^{i-1}=n(d_i\in [0,9]\ and\ d_ ...