[BZOJ2752][HAOI2012]高速公路
sol
看上去是道数学期望题但实际上是个傻逼数据结构
首先答案的形式应该就是
\]
个数的话就是\((r-l+1)*(r-l)/2\)
总和的话,考虑每一段公路的贡献:
\]
所以线段树维护一下\(\sum V_i\)、\(\sum V_ii\)、\(\sum V_ii^2\)即可。为了压一点常数可以预处理出\(\sum i\)和\(\sum i^2\)。你硬是不想预处理也没有人拦你
code
谁来治一治我这压行。。。(硬是压进了70行呢)
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<queue>
using namespace std;
#define ll long long
const int N = 100005;
int gi()
{
int x=0,w=1;char ch=getchar();
while ((ch<'0'||ch>'9')&&ch!='-') ch=getchar();
if (ch=='-') w=0,ch=getchar();
while (ch>='0'&&ch<='9') x=(x<<3)+(x<<1)+ch-'0',ch=getchar();
return w?x:-x;
}
ll s[N<<2],si[N<<2],sii[N<<2],len[N<<2],i1[N<<2],i2[N<<2],tag[N<<2],ans1,ans2,ans3,p,q,gg;
int n,m;
void build(int x,int l,int r)
{
if (l==r) {len[x]=1,i1[x]=l,i2[x]=1ll*l*l;return;}
int mid=l+r>>1;
build(x<<1,l,mid);build(x<<1|1,mid+1,r);
len[x]=len[x<<1]+len[x<<1|1],i1[x]=i1[x<<1]+i1[x<<1|1],i2[x]=i2[x<<1]+i2[x<<1|1];
}
void pushup(int x){s[x]=s[x<<1]+s[x<<1|1],si[x]=si[x<<1]+si[x<<1|1],sii[x]=sii[x<<1]+sii[x<<1|1];}
void cover(int x,int v){s[x]+=len[x]*v,si[x]+=i1[x]*v,sii[x]+=i2[x]*v,tag[x]+=v;}
void pushdown(int x){cover(x<<1,tag[x]);cover(x<<1|1,tag[x]);tag[x]=0;}
void modify(int x,int l,int r,int ql,int qr,int v)
{
if (l>=ql&&r<=qr) {cover(x,v);return;}
pushdown(x);int mid=l+r>>1;
if (ql<=mid) modify(x<<1,l,mid,ql,qr,v);
if (qr>mid) modify(x<<1|1,mid+1,r,ql,qr,v);
pushup(x);
}
void query(int x,int l,int r,int ql,int qr)
{
if (l>=ql&&r<=qr) {ans1+=s[x],ans2+=si[x],ans3+=sii[x];return;}
pushdown(x);int mid=l+r>>1;
if (ql<=mid) query(x<<1,l,mid,ql,qr);
if (qr>mid) query(x<<1|1,mid+1,r,ql,qr);
}
ll gcd(ll a,ll b){return b?gcd(b,a%b):a;}
int main()
{
n=gi();m=gi();
build(1,1,n-1);
while (m--)
{
char ch=getchar();
while (ch!='C'&&ch!='Q') ch=getchar();
if (ch=='C')
{
int l=gi(),r=gi(),v=gi();
modify(1,1,n-1,l,r-1,v);
}
else
{
int l=gi(),r=gi();
ans1=ans2=ans3=0;
query(1,1,n-1,l,r-1);
p=ans1*(r-1ll*l*r)+ans2*(l+r-1)-ans3;
q=1ll*(r-l+1)*(r-l)/2;
gg=gcd(p,q);p/=gg;q/=gg;
printf("%lld/%lld\n",p,q);
}
}
return 0;
}
[BZOJ2752][HAOI2012]高速公路的更多相关文章
- BZOJ2752: [HAOI2012]高速公路(road)
2752: [HAOI2012]高速公路(road) Time Limit: 20 Sec Memory Limit: 128 MBSubmit: 608 Solved: 199[Submit][ ...
- 【线段树】BZOJ2752: [HAOI2012]高速公路(road)
2752: [HAOI2012]高速公路(road) Time Limit: 20 Sec Memory Limit: 128 MBSubmit: 1621 Solved: 627[Submit] ...
- BZOJ2752: [HAOI2012]高速公路(road)(线段树 期望)
Time Limit: 20 Sec Memory Limit: 128 MBSubmit: 1820 Solved: 736[Submit][Status][Discuss] Descripti ...
- 2019.01.14 bzoj2752: [HAOI2012]高速公路(线段树)
传送门 线段树菜题. 题意简述:给一条nnn个点的链,链有边权,支持区间修改边权,查询在一段区间内随机选择不同的起点和终点路径的期望总边权和. 思路:考虑每条边的贡献. 考虑对于一段区间[l,r][l ...
- BZOJ 2752: [HAOI2012]高速公路(road)( 线段树 )
对于询问[L, R], 我们直接考虑每个p(L≤p≤R)的贡献,可以得到 然后化简一下得到 这样就可以很方便地用线段树, 维护一个p, p*vp, p*(p+1)*vp就可以了 ----------- ...
- BZOJ 2752: [HAOI2012]高速公路(road) [线段树 期望]
2752: [HAOI2012]高速公路(road) Time Limit: 20 Sec Memory Limit: 128 MBSubmit: 1219 Solved: 446[Submit] ...
- P2221 [HAOI2012]高速公路(线段树)
P2221 [HAOI2012]高速公路 显然答案为 $\dfrac{\sum_{i=l}^r\sum_{j=l}^{r}dis[i][j]}{C_{r-l+1}^2}$ 下面倒是挺好算,组合数瞎搞 ...
- [Luogu 2221] HAOI2012 高速公路
[Luogu 2221] HAOI2012 高速公路 比较容易看出的线段树题目. 由于等概率,期望便转化为 子集元素和/子集个数. 每一段l..r中,子集元素和为: \(\sum w_{i}(i-l+ ...
- BZOJ 2752:[HAOI2012]高速公路(road)(线段树)
[HAOI2012]高速公路(road) Description Y901高速公路是一条重要的交通纽带,政府部门建设初期的投入以及使用期间的养护费用都不低,因此政府在这条高速公路上设立了许多收费站.Y ...
随机推荐
- 在 Mac 中安装 MySQLdb (Python mysql )
安装环境:OS X操作系统,Python 2.7.3. MySQLdb其实包含在MySQL-python包中,因此无论下载还是在pip中search,都应该是搜寻MySQL-python. 以下将说明 ...
- 浅谈format格式化输出
什么是format? 相对于基本格式化输出采用"%"的方法,format的功能强大,该函数把字符串当一个模板,通过传入的参数进行格式化,并且使用大括号"{}"作 ...
- appium滑动操作(向上、向下、向左、向右)
appium滑动操作(向上滑动.向下滑动.向左滑动.向右滑动) 测试app:今日头条apk 测试设备:夜游神模拟器 代码如下: 先用x.y获取当前的width和height def getSize() ...
- Java导出freemarker的三种方法
在上一篇呢,我将导出word文档的想法与思路以及实现功能的代码分享了一下,在这里, 我想说的是我对导出freemarker模板路径的三种方法的理解和认知. 有错误的话希望大家帮忙指正 在接下来我会使 ...
- HDU - 2154 线性dp
思路:0表示A,1表示B,2表示C,d(i, j)表示在第j次时正好到达i. AC代码 #include <cstdio> #include <cmath> #include ...
- 洛谷P3796 - 【模板】AC自动机(加强版)
原题链接 Description 模板题啦~ Code //[模板]AC自动机(加强版) #include <cstdio> #include <cstring> int co ...
- ES6的介绍和常用语法
本文最初发表于博客园,并在GitHub上持续更新前端的系列文章.欢迎在GitHub上关注我,一起入门和进阶前端. 以下是正文. 前言 ECMAScript 是 JS 的语言标准.而 ES6 是新的 J ...
- SpringBoot实战 之 接口日志篇
在本篇文章中不会详细介绍日志如何配置.如果切换另外一种日志工具之类的内容,只用于记录作者本人在工作过程中对日志的几种处理方式. 1. Debug 日志管理 在开发的过程中,总会遇到各种莫名其妙的问题, ...
- AES对称加密
import javax.crypto.Cipher; import javax.crypto.spec.IvParameterSpec; import javax.crypto.spec.Secre ...
- “大话架构”阿里架构师分享的Java程序员需要突破的技术要点
一.源码分析 源码分析是一种临界知识,掌握了这种临界知识,能不变应万变,源码分析对于很多人来说很枯燥,生涩难懂. 源码阅读,我觉得最核心有三点:技术基础+强烈的求知欲+耐心. 我认为是阅读源码的最核心 ...