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 ...
随机推荐
- SpringCloud是如何运行的?
SpringCloud是基于SpringBoot这一高度自动化的应用开发框架,将各类业界比较知名的.得到过实践反馈的开元服务治理相关的技术框架进行优化整合的框架,是一种开发方式的优化和组合,,是一组框 ...
- Hibernate-实体-对象状态-一级缓存-事务-查询
一 hibernate中的实体规则 1.1 实体类创建的注意事项 持久化类提供无参数构造 --在调用instance()方法时默认调用空参构造 成员变量私有,提供共有get/set方法 ...
- 2019-8-31-dotnet-控制台读写-Sqlite-提示-no-such-table-找不到文件
title author date CreateTime categories dotnet 控制台读写 Sqlite 提示 no such table 找不到文件 lindexi 2019-08-3 ...
- Hadoop 集群网络拓扑
- Leetcode504.Base 7七进制数
给定一个整数,将其转化为7进制,并以字符串形式输出. 示例 1: 输入: 100 输出: "202" 示例 2: 输入: -7 输出: "-10" 注意: 输入 ...
- html 输入框显示“小叉叉”的清空方法
在IE10以下,我们的输入框input会出现小叉叉.怎么解决这个问题呢? 针对input框我们做一个处理 <style type="text/css"> input:: ...
- Wamp Apache 启动失败检测方法
一般情况下,看错误日志就可以解决.如果遇到错误日志看不到的情况,不放试试下面的方法 //无错误日志解决办法cmd命令行切换到C:\wamp\bin\apache\apache2.4.9\bin目录 输 ...
- Excel 表格中根据某一列的值从另一个xls文件的对应sheet中查找包含其中一列的内容(有点拗口)
=VLOOKUP(C3&"*",INDIRECT("'[2008-2016年三地商务明细表.xls]"&L3&"年北京'!$D ...
- mysql数据库外键、主键详解
一.什么是主键.外键: 关系型数据库中的一条记录中有若干个属性,若其中某一个属性组(注意是组)能唯一标识一条记录,该属性组就可以成为一个主键 比如 学生表(学号,姓名,性别,班级) 其中每个学生的学 ...
- Springmvc使用阿里巴巴的fastjson传输到前台中文乱码的解决方案,他娘的大家都少制造垃圾,学习过程将会多么快乐
弄了大概七八个小时吧 都他妈比的抄来抄去,一分一秒的去试错 最终参考这个问题解决了乱码的情况https://bbs.csdn.net/topics/392169549 412 需要在springmvc ...