bzoj2752 高速公路
//Serene
#include<algorithm>
#include<iostream>
#include<cstring>
#include<cstdlib>
#include<cstdio>
#include<cmath>
using namespace std;
const int maxn=1e5+10;
int n,m; long long aa,ff;char cc;
long long read() {
aa=0;cc=getchar();ff=1;
while(cc<'0'||cc>'9') {
if(cc=='-') ff=-1;
cc=getchar();
}
while(cc>='0'&&cc<='9') aa=aa*10+cc-'0',cc=getchar();
return aa*ff;
} long long gcd(long long x,long long y) {
return y==0? x:gcd(y,x%y);
} struct Node{
long long l,r,pf,yc,lc,laz;
}node[4*maxn]; void bld(int pos,long long l,long long r) {
node[pos].l=l;node[pos].r=r;
if(l==r) return;
long long mid=(node[pos].l+node[pos].r)>>1;
bld(pos<<1,l,mid); bld(pos<<1|1,mid+1,r);
} long long f(long long t) {
return t*(t+1)/2*(2*t+1)/3;
} void ud(int pos) {
long long v=node[pos].laz;
long long l=node[pos].l,r=node[pos].r;
if(!v) return ;
node[pos].lc+=(r-l+1)*v;
node[pos].yc+=(l+r)*(r-l+1)/2*v;
node[pos].pf+=(f(r)-f(l-1))*v;
if(node[pos].l!=node[pos].r) {
node[pos<<1].laz+=v;
node[pos<<1|1].laz+=v;
}
node[pos].laz=0;
} void chge(int pos,long long l,long long r,long long v) {
ud(pos);
if(node[pos].l==l&&node[pos].r==r) {
node[pos].laz+=v;
return;
}
node[pos].lc+=(r-l+1)*v;
node[pos].yc+=(l+r)*(r-l+1)/2*v;
node[pos].pf+=(f(r)-f(l-1))*v;
long long mid=(node[pos].l+node[pos].r)>>1;
if(r<=mid) chge(pos<<1,l,r,v);
else if(l>mid) chge(pos<<1|1,l,r,v);
else chge(pos<<1,l,mid,v),chge(pos<<1|1,mid+1,r,v);
} long long q(int pos,long long l,long long r,long long x,long long y) {
ud(pos);
if(node[pos].l==l&&node[pos].r==r)
return node[pos].lc*(y-y*x)+(y+x-1)*node[pos].yc-node[pos].pf; long long mid=(node[pos].l+node[pos].r)>>1;
if(r<=mid) return q(pos<<1,l,r,x,y);
else if(l>mid) return q(pos<<1|1,l,r,x,y);
else return q(pos<<1,l,mid,x,y)+q(pos<<1|1,mid+1,r,x,y);
} int main() {
n=read();m=read();
long long l,r,ans,x,y;char op;
bld(1,1,n-1);
for(int i=1;i<=m;++i) {
do op=getchar();while(op<'C'||op>'Q');
l=read();r=read();
if(op=='C') chge(1,l,r-1,read());
else {
ans=q(1,l,r-1,l,r);
x=r-l+1;
x=x*(x-1)/2;
y=gcd(ans,x);
ans/=y;x/=y;
printf("%lld/%lld\n",ans,x);
}
}
return 0;
}
bzoj2752 高速公路的更多相关文章
- [bzoj2752]高速公路 题解(线段树)
2752: [HAOI2012]高速公路(road) Time Limit: 20 Sec Memory Limit: 128 MBSubmit: 2102 Solved: 887[Submit] ...
- BZOJ2752: [HAOI2012]高速公路(road)
2752: [HAOI2012]高速公路(road) Time Limit: 20 Sec Memory Limit: 128 MBSubmit: 608 Solved: 199[Submit][ ...
- 【BZOJ2752】【线段树】高速公路
Description Y901高速公路是一条重要的交通纽带,政府部门建设初期的投入以及使用期间的养护费用都不低,因此政府在这条高速公路上设立了许多收费站. Y901高速公路是一条由N-1段路以及N个 ...
- 【线段树】BZOJ2752: [HAOI2012]高速公路(road)
2752: [HAOI2012]高速公路(road) Time Limit: 20 Sec Memory Limit: 128 MBSubmit: 1621 Solved: 627[Submit] ...
- BZOJ2752:[HAOI2012]高速公路——题解
http://www.lydsy.com/JudgeOnline/problem.php?id=2752 https://www.luogu.org/problemnew/show/P2221#sub ...
- BZOJ2752: [HAOI2012]高速公路(road)(线段树 期望)
Time Limit: 20 Sec Memory Limit: 128 MBSubmit: 1820 Solved: 736[Submit][Status][Discuss] Descripti ...
- 【bzoj2752】[HAOI2012]高速公路(road) 线段树
题目描述 Y901高速公路是一条重要的交通纽带,政府部门建设初期的投入以及使用期间的养护费用都不低,因此政府在这条高速公路上设立了许多收费站.Y901高速公路是一条由N-1段路以及N个收费站组成的东西 ...
- [BZOJ2752][HAOI2012]高速公路
BZOJ Luogu sol 看上去是道数学期望题但实际上是个傻逼数据结构 首先答案的形式应该就是 \[\frac{\mbox{[l,r]区间内的子区间权值之和}}{\mbox{[l,r]区间内的子区 ...
- 2019.01.14 bzoj2752: [HAOI2012]高速公路(线段树)
传送门 线段树菜题. 题意简述:给一条nnn个点的链,链有边权,支持区间修改边权,查询在一段区间内随机选择不同的起点和终点路径的期望总边权和. 思路:考虑每条边的贡献. 考虑对于一段区间[l,r][l ...
随机推荐
- 88 Lowest Common Ancestor of a Binary Tree
原题网址:https://www.lintcode.com/problem/lowest-common-ancestor-of-a-binary-tree/description 描述 给定一棵二叉树 ...
- docker 整理
管理 docker批量删除容器.镜像 1.删除所有容器 docker rm `docker ps -a -q` 1.1 按条件删除容器 删除包含某个字段 ,镜像名或容器名均可, 例如删除 zhy* ...
- C#绘制渐变线条
Brush brush = , ), , ), Color.Blue, Color.White); e.Graphics.FillRectangle(brush, this.ClientRectang ...
- PyCharm在同一个包(package)下,如何把一个.py文件导入另外一个.py文件下
PyCharm在同一个包(package)下,如何把一个.py文件导入另外一个.py文件下 在同一个包下只需要用import 掉以后就可以找到模块所在的位置,但是如果不在同一个包下,在需要返回父级调用 ...
- Linux驱动手动绑定和解绑定方法
linux内核从2.6.13-rc3开始,提供了在用户空间,可动态的绑定和解绑定设备和设备驱动之间关系的功能.在这之前,只能通过insmod(modprobe)和rmmod来绑定和解绑,而且这种绑定和 ...
- Veristand学习札记(3)- CD的开发
转载:https://blog.csdn.net/mfcjishiben/article/details/79417739 1 CustomDevice开发 CD的开发必须遵照NI提供的模板进行.安装 ...
- 洛谷P3298 泉
时空限制 1000ms / 128MB 题目描述 作为光荣的济南泉历史研究小组中的一员,铭铭收集了历史上x个不同年份时不同泉区的水流指数,这个指数是一个小于. 2^30的非负整数.第i个年份时六个泉区 ...
- java并发系列(七)-----ConcurrentHashMap原理分析(JDK1.8)
JDK1.8的实现已经摒弃了Segment的概念,而是直接用Node数组+链表+红黑树的数据结构来实现,并发控制使用Synchronized和CAS来操作,整个看起来就像是优化过且线程安全的HashM ...
- Spring松耦合示例(转)& IOC
Spring松耦合示例 轻松学习Spring<一> IoC容器和Dependency Injection模式 最近公司需要,项目中要用到Spring和Ibatis.趁着过年好好学习学习.I ...
- Python实例 包机制
每一个.py文件称为一个module,module之间可以互相导入.请参看以下例子: # a.py def add_func(a,b): return a+b # b.py from a im ...