[HAOI2012]高速公路(road)

Description

Y901高速公路是一条重要的交通纽带,政府部门建设初期的投入以及使用期间的养护费用都不低,因此政府在这条高速公路上设立了许多收费站。
Y901高速公路是一条由N-1段路以及N个收费站组成的东西向的链,我们按照由西向东的顺序将收费站依次编号为1~N,从收费站i行驶到i+1(或从i+1行驶到i)需要收取Vi的费用。高速路刚建成时所有的路段都是免费的。
政府部门根据实际情况,会不定期地对连续路段的收费标准进行调整,根据政策涨价或降价。
无聊的小A同学总喜欢研究一些稀奇古怪的问题,他开车在这条高速路上行驶时想到了这样一个问题:对于给定的l,r(l<r),在第l个到第r个收费站里等概率随机取出两个不同的收费站a和b,那么从a行驶到b将期望花费多少费用呢?

Input

第一行2个正整数N,M,表示有N个收费站,M次调整或询问
接下来M行,每行将出现以下两种形式中的一种
C l r v 表示将第l个收费站到第r个收费站之间的所有道路的通行费全部增加v
Q l r 表示对于给定的l,r,要求回答小A的问题
所有C与Q操作中保证1<=l<r<=N

Output

对于每次询问操作回答一行,输出一个既约分数
若答案为整数a,输出a/1

Sample Input

4 5

C 1 4 2

C 1 2 -1

Q 1 2

Q 2 4

Q 1 4

Sample Output

1/1

8/3

17/6

HINT

数据规模

所有C操作中的v的绝对值不超过10000

在任何时刻任意道路的费用均为不超过10000的非负整数

所有测试点的详细情况如下表所示

Test N M

1 =10 =10

2 =100 =100

3 =1000 =1000

4 =10000 =10000

5 =50000 =50000

6 =60000 =60000

7 =70000 =70000

8 =80000 =80000

9 =90000 =90000

10 =100000 =100000

分析:

为了方便,我们可以把区间看成点(即[l,l+1]区间看作点l),对于每段询问,它的期望花费=所有情况(a前往b,a,b在[l,r]区间)的花费和/情况总数,情况总数=(r-l+1)*(r-l)/2,所以问题转化为求一段区间内所有子区间数字和的总和ans。

通过分析可得

ans=∑v[i]*(r-i+1)*(i-l+1) (l<=i<=r)

ans=∑v[i]*[r-l+1-r*l+i*(r+l)-i*i]

ans=∑v[i]*(r-l+1-r*l)+v[i]*i*(r+l)-v[i]*i*i

ans=(r-l+1-r*l)*∑v[i]+(r+l)*∑v[i]*i-∑v[i]*i^2

利用线段树维护区间中v[i],v[i]*i,v[i]*i^2各自的和。

program road;
type
point=record
x,y,z:int64;
end;
var
dat:array[..,..]of int64;
w:array[..]of int64;
sum:array[..]of int64;
n,m,ans,x,y,v,i:int64; c:char; t:point;
procedure work(p,l,r,v:int64);
begin
inc(w[p],v);
dat[p,]:=dat[p,]+v*(r-l+);
dat[p,]:=dat[p,]+v*(l+r)*(r-l+) div ;
dat[p,]:=dat[p,]+v*(sum[r]-sum[l-]);
end;
procedure down(p,l,r:int64);
var mid:int64;
begin
mid:=(l+r) div ;
work(p*,l,mid,w[p]); work(p*+,mid+,r,w[p]);
w[p]:=;
end;
procedure build(p,l,r:int64);
var mid:int64;
begin
if l=r then exit;
mid:=(l+r) div ;
build(p*,l,mid); build(p*+,mid+,r);
dat[p,]:=; dat[p,]:=; dat[p,]:=; w[p]:=;
end;
procedure change(x,y,p,l,r,v:int64);
var mid:int64;
begin
if (x<=l)and(r<=y) then work(p,l,r,v)
else
begin
if l<r then down(p,l,r); mid:=(l+r) div ;
if x<=mid then change(x,y,p*,l,mid,v);
if y>mid then change(x,y,p*+,mid+,r,v);
dat[p,]:=dat[p*,]+dat[p*+,];
dat[p,]:=dat[p*,]+dat[p*+,];
dat[p,]:=dat[p*,]+dat[p*+,];
end;
end;
function query(x,y,p,l,r:int64):point;
var mid,ans:int64; g,t:point;
begin
if (x<=l)and(r<=y) then begin g.x:=dat[p,]; g.y:=dat[p,]; g.z:=dat[p,]; exit(g); end
else
begin
if l<r then down(p,l,r); mid:=(l+r) div ;
g.x:=; g.y:=; g.z:=;
if x<=mid then begin t:=query(x,y,p*,l,mid); inc(g.x,t.x); inc(g.y,t.y); inc(g.z,t.z); end;
if y>mid then begin t:=query(x,y,p*+,mid+,r);inc(g.x,t.x); inc(g.y,t.y); inc(g.z,t.z); end;
exit(g);
end;
end;
procedure solve(ans,x:int64);
var a,b,r:int64;
begin
a:=ans; b:=x*(x+) div ;
r:=a mod b;
while r> do
begin
a:=b; b:=r; r:=a mod b;
end;
ans:=ans div b; x:=x*(x+) div div b;
writeln(ans,'/',x);
end;
begin
readln(n,m); n:=n-; build(,,n);
fillchar(sum,sizeof(sum),);
i:=;
while i<n do begin inc(i);sum[i]:=sum[i-]+i*i; end;
i:=;
while i<m do
begin
inc(i);
read(c);
if c='Q' then
begin read(x,y); y:=y-; t:=query(x,y,,,n); ans:=t.x*(-x*y+y-x+)+t.y*(x+y)-t.z; solve(ans,y-x+); end
else
begin read(x,y,v); y:=y-; change(x,y,,,n,v); end;
readln;
end;
end.

BZOJ 2752:[HAOI2012]高速公路(road)(线段树)的更多相关文章

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

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

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

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

  3. BZOJ 2752 [HAOI2012]高速公路(road):线段树【维护区间内子串和】

    题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=2752 题意: 有一个初始全为0的,长度为n的序列a. 有两种操作: (1)C l r v: ...

  4. bzoj 2752: [HAOI2012]高速公路(road)

    Description Y901高速公路是一条重要的交通纽带,政府部门建设初期的投入以及使用期间的养护费用都不低,因此政府在这条高速公路上设立了许多收费站.Y901高速公路是一条由N-1段路以及N个收 ...

  5. ●BZOJ 2752 [HAOI2012]高速公路(road)

    题链: http://www.lydsy.com/JudgeOnline/problem.php?id=2752题解: 期望,线段树. 把每个路段看成一个点,那么对于l~R的操作,就可以转化为对l~r ...

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

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

  7. 【bzoj2752】[HAOI2012]高速公路(road) 线段树

    题目描述 Y901高速公路是一条重要的交通纽带,政府部门建设初期的投入以及使用期间的养护费用都不低,因此政府在这条高速公路上设立了许多收费站.Y901高速公路是一条由N-1段路以及N个收费站组成的东西 ...

  8. P2221 [HAOI2012]高速公路(线段树)

    P2221 [HAOI2012]高速公路 显然答案为 $\dfrac{\sum_{i=l}^r\sum_{j=l}^{r}dis[i][j]}{C_{r-l+1}^2}$ 下面倒是挺好算,组合数瞎搞 ...

  9. 2019.01.14 bzoj2752: [HAOI2012]高速公路(线段树)

    传送门 线段树菜题. 题意简述:给一条nnn个点的链,链有边权,支持区间修改边权,查询在一段区间内随机选择不同的起点和终点路径的期望总边权和. 思路:考虑每条边的贡献. 考虑对于一段区间[l,r][l ...

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

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

随机推荐

  1. 2018.6.4 Oracle数据库预定义的异常列表

    declare v_ename emp.ename%type; begin select ename into v_ename from emp where empno=&gno; dbms_ ...

  2. python剑指offer 包含min函数的栈

    题目描述 定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1)). # -*- coding:utf-8 -*- class Solution: def ...

  3. python_51_函数返回值1

    def test1(): '只执行return以前的' print('test1返回值为0 ') return 0 print('这句不会被执行的') x=test1() print(x)#值为0 d ...

  4. Github的基本功能

    著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处.作者:Fadeoc Khaos链接:http://www.zhihu.com/question/20070065/answer/30 ...

  5. 【luogu P3609 [USACO17JAN]Hoof, Paper, Scissor蹄子剪刀布】 题解

    题目链接:https://www.luogu.org/problemnew/show/P3609 ### 看着标签什么记搜什么暴力点进来,读完题第一直觉DP? 还真是个\(DP\). 题目所描述的状态 ...

  6. RPC - 麻雀虽小,五脏俱全

    说起 RPC (远程过程调用),大家应该不陌生.随着微服务.分布式越来越流行,RPC 应用越来越普遍.常见的 RPC 框架如:Dubbo.gRPC.Thrift 等.本篇文章不是介绍各种 RPC 的使 ...

  7. Linux 命令大全提供 500 多个 Linux 命令搜索

    Linux Command 在这里维持一个持续更新的地方 516 个 Linux 命令大全,内容包含 Linux 命令手册.详解.学习,值得收藏的 Linux 命令速查手册.请原谅我写了个爬虫,爬了他 ...

  8. SummerVocation_Leaning--java动态绑定(多态)

    概念: 动态绑定:在执行期间(非编译期间)判断所引用的对象的实际类型,根据实际类型调用其相应的方法.如下例程序中,根据person对象的成员变量pet所引用的不同的实际类型调用相应的方法. 具体实现好 ...

  9. Laravel — homestead 配置多站点

    一.homestead.yaml 配置 homestead.yaml 文件配置sites,如下 sites: - map: homestead.test to: /home/vagrant/Code/ ...

  10. linux硬件基础

    1. 服务器分类 机架式服务器(主要用这个). 刀片式服务器. 塔式服务器. 2. 机架式服务器 服务器的尺: U - 2U. 服务器核心之电源: 双电源 AB 路. 服务器核心之 CPU-计算 CP ...