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]高速公路 线段树 期望的更多相关文章

  1. BZOJ 2752: [HAOI2012]高速公路(road) [线段树 期望]

    2752: [HAOI2012]高速公路(road) Time Limit: 20 Sec  Memory Limit: 128 MBSubmit: 1219  Solved: 446[Submit] ...

  2. BZOJ2752: [HAOI2012]高速公路(road)(线段树 期望)

    Time Limit: 20 Sec  Memory Limit: 128 MBSubmit: 1820  Solved: 736[Submit][Status][Discuss] Descripti ...

  3. CF895 E. Eyes Closed(线段树 期望)

    题意 Sol 今天考试的T3,,我本来留了一个小时去写.但是T2一刚就刚了两个小时 最后也没来的及写.. 然后考完 开始写,,25min就A了.. 感觉自己太高估自己的思维,太低估自己的码力了... ...

  4. [CF895E] Eyes Closed(线段树,期望)

    Desctiption 传送门:Portal 大致题意: 给你一个序列, 支持两种操作: 1 l1 r1 l2 y2 在\([l1, r1]\)随机选择一个数a, \([l2, r2]\) 内随机选择 ...

  5. BZOJ 4262 线段树+期望

    思路: 把询问离线下来,查询max和查询min相似,现在只考虑查询max 令sum[l,r,x]表示l到r内的数为左端点,x为右端点的区间询问的答案 那么询问就是sun[l1,r1,r2]-sum[l ...

  6. 洛谷P3924 康娜的线段树(期望 前缀和)

    题意 题目链接 Sol 思路就是根据期望的线性性直接拿前缀和算贡献.. 这题输出的时候是不需要约分的qwq 如果你和我一样为了AC不追求效率的话直接#define int __int128就行了.. ...

  7. 洛谷P2221 [HAOI2012]高速公路(线段树+概率期望)

    传送门 首先,答案等于$$ans=\sum_{i=l}^r\sum_{j=i}^r\frac{sum(i,j)}{C_{r-l+1}^2}$$ 也就是说所有情况的和除以总的情况数 因为这是一条链,我们 ...

  8. BZOJ 2752: [HAOI2012]高速公路(road)( 线段树 )

    对于询问[L, R], 我们直接考虑每个p(L≤p≤R)的贡献,可以得到 然后化简一下得到 这样就可以很方便地用线段树, 维护一个p, p*vp, p*(p+1)*vp就可以了 ----------- ...

  9. BZOJ 2752:[HAOI2012]高速公路(road)(线段树)

    [HAOI2012]高速公路(road) Description Y901高速公路是一条重要的交通纽带,政府部门建设初期的投入以及使用期间的养护费用都不低,因此政府在这条高速公路上设立了许多收费站.Y ...

随机推荐

  1. Machine Learning(CF940F+带修改莫队)

    题目链接:http://codeforces.com/problemset/problem/940/F 题目: 题意:求次数的mex,mex的含义为某个集合(如{1,2,4,5})第一个为出现的非负数 ...

  2. MSSQL 错误:在将 varchar 值 '1,2,3,5,6' 转换成数据类型 int 时失败。

    MSSQL  错误:在将 varchar 值 '1,2,3,5,6' 转换成数据类型 int 时失败.

  3. charles & Fiddle

    一.Charles Charles是在Mac下常用的截取网络封包的工具,在做移动端开发时,我们为了调试与服务器端的网络通讯协议,常常需要截取网络封包来分析.Charles通过将自己设置成系统的网络访问 ...

  4. Quartz的Properties文件解析

    将可变信息放在properties文件是使配置更加灵活. 1.文档位置和加载顺序 1. StdSchedulerFactory默认加载quartz包下的quartz.properties文件,如果我们 ...

  5. github删除文件夹

    git rm -rf dirgit add .git commit -m 'remove dir'git push origin master //dir是要删除的文件夹路径

  6. 判断cookie创建的时间是否已经24小时

    def read_cookie(self): cookiesfilepath="cookies%s" % self.uid if os.path.exists(cookiesfil ...

  7. 解决: httpclient ssl 验证导致死锁问题

    线上图片下载服务器平时运行正常,最近突然出现一种比较奇怪的现象,只接受请求,但却没有处理请求,最开始怀疑下载线程挂掉了,dump 项目线程后发现异常: "pool-2-thread-1&qu ...

  8. Android UI 设计:pixel dip dpi sp density

    1. px (pixels)像素 – 是像素,就是屏幕上实际的像素点单位. dip或dp (device independent pixels)设备独立像素,与设备屏幕有关. sp (scaled p ...

  9. iframe自适应高度的方法

    不带边框的iframe因为能和网页无缝的结合从而不刷新新页面的情况下实现更新页面部分的数据成为可能,可是iframe却不像层那样可以收缩自如,iframe高度需要动态的调整需要JS来配合使用,只能通过 ...

  10. django “如何”系列8:如何为模型提供初始化数据

    当你第一次配置一个app的时候,有时候使用硬编码的数据去预填充你的数据库是非常有用的.这里有几个你可以让django自动创建这些数据的方法:你可以提供固定格式的初始化数据或者提供通过SQL初始化数据. ...