JZYZOJ1527 [haoi2012]高速公路 线段树 期望
http://172.20.6.3/Problem_Show.asp?id=1527
日常线段树的pushdown写挂,果然每次写都想得不全面,以后要注意啊……
求期望部分也不熟练,和平均数搞混也是orz,我已经是个期望都求不出来的废人了。
这道题显然(大概)每个段的贡献是val[i]*(y-i+1)*(i-x+1);
整体来说算是一看就是线段树的题。
代码
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<queue>
using namespace std;
#define lc x*2
#define rc x*2+1
const int maxn=<<;
long long n,m;char ch[]={};
struct seg{
long long l,r,v,w,v1,v2,w1,w2;
seg(){l=r=v1=v2=w1=w2=v=w=;}
}e[maxn];
long long v1,v2,v3;
void pushdown(long long x,long long v){
if(v!=){
long long siz=e[x].r-e[x].l+;
e[x].v+=siz*v;
e[x].w1+=e[x].v1*v;
e[x].w2+=e[x].v2*v;
e[x].w+=v;
}
}
void doit(long long x){
pushdown(lc,e[x].w);
pushdown(rc,e[x].w);
e[x].w=;
}
void pushup(long long x){
if(e[x].l<e[x].r){
e[x].v=e[lc].v+e[rc].v;
e[x].w1=e[lc].w1+e[rc].w1;
e[x].w2=e[lc].w2+e[rc].w2;
}
}
void cha(long long x,long long l,long long r,long long w){
if(l<=e[x].l&&e[x].r<=r){
pushdown(x,w);
return;
}doit(x);
long long mid=(e[x].l+e[x].r)/;
if(l<=mid)cha(lc,l,r,w);
if(r>mid)cha(rc,l,r,w);
pushup(x);
}
void sum(long long x,long long l,long long r){
if(l<=e[x].l&&e[x].r<=r){
v1+=e[x].v;v2+=e[x].w1;v3+=e[x].w2;
return;
}doit(x);
long long mid=(e[x].l+e[x].r)/;
if(l<=mid)sum(lc,l,r);
if(r>mid)sum(rc,l,r);
pushup(x);
}
void build(long long x,long long l,long long r){
e[x].l=l;e[x].r=r;
if(l==r){
e[x].v1=l;e[x].v2=l*l;return;
}
long long mid=(l+r)/;
build(lc,l,mid);
build(rc,mid+,r);
e[x].v1=e[lc].v1+e[rc].v1;e[x].v2=e[lc].v2+e[rc].v2;
}
long long gcd(long long x,long long y){
while(y){
long long w=y;y=x%y;x=w;
}
return x;
}
int main(){
build(,,<<);
scanf("%I64d%I64d",&n,&m);
long long x,y,v;
for(int i=;i<=m;i++){
scanf("%s",&ch);
if(ch[]=='C'){
scanf("%I64d%I64d%I64d",&x,&y,&v);
cha(,x,y-,v);
}
else{
scanf("%I64d%I64d",&x,&y);
v1=v2=v3=;sum(,x,y-);
long long ans=v1*(y-x*y)+v2*(x+y-)-v3;
long long z=y-x;long long zong=z*(z+)/;
long long w=gcd(ans,zong);
printf("%I64d/%I64d\n",ans/w,zong/w);
}
}
return ;
}
JZYZOJ1527 [haoi2012]高速公路 线段树 期望的更多相关文章
- BZOJ 2752: [HAOI2012]高速公路(road) [线段树 期望]
2752: [HAOI2012]高速公路(road) Time Limit: 20 Sec Memory Limit: 128 MBSubmit: 1219 Solved: 446[Submit] ...
- BZOJ2752: [HAOI2012]高速公路(road)(线段树 期望)
Time Limit: 20 Sec Memory Limit: 128 MBSubmit: 1820 Solved: 736[Submit][Status][Discuss] Descripti ...
- CF895 E. Eyes Closed(线段树 期望)
题意 Sol 今天考试的T3,,我本来留了一个小时去写.但是T2一刚就刚了两个小时 最后也没来的及写.. 然后考完 开始写,,25min就A了.. 感觉自己太高估自己的思维,太低估自己的码力了... ...
- [CF895E] Eyes Closed(线段树,期望)
Desctiption 传送门:Portal 大致题意: 给你一个序列, 支持两种操作: 1 l1 r1 l2 y2 在\([l1, r1]\)随机选择一个数a, \([l2, r2]\) 内随机选择 ...
- BZOJ 4262 线段树+期望
思路: 把询问离线下来,查询max和查询min相似,现在只考虑查询max 令sum[l,r,x]表示l到r内的数为左端点,x为右端点的区间询问的答案 那么询问就是sun[l1,r1,r2]-sum[l ...
- 洛谷P3924 康娜的线段树(期望 前缀和)
题意 题目链接 Sol 思路就是根据期望的线性性直接拿前缀和算贡献.. 这题输出的时候是不需要约分的qwq 如果你和我一样为了AC不追求效率的话直接#define int __int128就行了.. ...
- 洛谷P2221 [HAOI2012]高速公路(线段树+概率期望)
传送门 首先,答案等于$$ans=\sum_{i=l}^r\sum_{j=i}^r\frac{sum(i,j)}{C_{r-l+1}^2}$$ 也就是说所有情况的和除以总的情况数 因为这是一条链,我们 ...
- BZOJ 2752: [HAOI2012]高速公路(road)( 线段树 )
对于询问[L, R], 我们直接考虑每个p(L≤p≤R)的贡献,可以得到 然后化简一下得到 这样就可以很方便地用线段树, 维护一个p, p*vp, p*(p+1)*vp就可以了 ----------- ...
- BZOJ 2752:[HAOI2012]高速公路(road)(线段树)
[HAOI2012]高速公路(road) Description Y901高速公路是一条重要的交通纽带,政府部门建设初期的投入以及使用期间的养护费用都不低,因此政府在这条高速公路上设立了许多收费站.Y ...
随机推荐
- 【51NOD】消灭兔子
[算法]贪心 #include<cstdio> #include<algorithm> #include<cstring> #include<queue> ...
- CRB and Candies(组合数学+求逆元+lcm)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5407 题目: Problem Description CRB has N different cand ...
- 深入理解 JavaScript(四)
前言 Bob 大叔提出并发扬了 S.O.L.I.D 五大原则,用来更好地进行面向对象编程,五大原则分别是: The Single Responsibility Principle(单一职责 SRP) ...
- 启动Eclipse时,弹出failed to load the jni shared library
JDK版本和Eclipse版本不同的问题,JDK版本为64位,Eclipse版本为32位.
- 广度优先算法(BFS)与深度优先算法(DFS)
一.广度优先算法BFS(Breadth First Search) 基本实现思想 (1)顶点v入队列. (2)当队列非空时则继续执行,否则算法结束. (3)出队列取得队头顶点v: (4)查找顶点v的所 ...
- Python第三方库SnowNLP(Simplified Chinese Text Processing)快速入门与进阶
简介 github地址:https://github.com/isnowfy/snownlp SnowNLP是一个python写的类库,可以方便的处理中文文本内容,是受到了TextBlob的启发而写的 ...
- jmeter===JMeter 中Random 随机函数的使用(转)
原文:http://blog.csdn.net/dreamtl/article/details/68952272 场景:在做接口测试时,比如说要求用户的手机号码不允许重复,那此时可以通过Random ...
- iOS 适配/ autoLayout基本知识
历史 iPhone3GS.iPhone4\4s:没有屏幕适配最早开发里面的程序全部都是写死的 iPad 旋转出来之后 Autoresizing问世iPhone5\5c\5s兼容各种不同的情况 系统适配 ...
- artdialog自定义多个按钮
在实际运用到的过程中artdialog弹出框下面的按钮不止一个 可以自己定义多个按钮 function view_show(cust_id){$.dialog({ id: 'view_c ...
- P2885
2885 code[class*="language-"] { padding: .1em; border-radius: .3em; white-space: normal; b ...