洛谷P2221 [HAOI2012]高速公路
线段树
#include<cstdio>
#include<cstdlib>
#include<algorithm>
#include<cstring>
#include<vector>
#define INF 0x7f7f7f7f
#define MAXN 100005
#define rint register int
#define pb push_back
#define pii pair<int,int>
#define mp make_pair
#define ft first
#define sc second
#define ll long long
using namespace std;
ll read(){
ll x=,f=;char ch=getchar();
while(ch<''||ch>''){if('-'==ch)f=-;ch=getchar();}
while(ch>=''&&ch<=''){x=x*+ch-'';ch=getchar();}
return x*f;
}
struct Node{
int L,R;
ll vl,sum;
ll lv,rv;
ll tag;
Node(){
L=R=;
vl=sum=lv=rv=tag=0LL;
}
}st[MAXN<<];
ll cnt[MAXN];
void work(int k,ll v){
int len=st[k].R-st[k].L+;
st[k].vl+=cnt[len]*v;
st[k].sum+=len*v;
st[k].lv+=(+len)*len/*v;
st[k].rv+=(+len)*len/*v;
st[k].tag+=v;
}
Node Merge(Node A,Node B){
if(!A.L&&!A.R)return B;
if(!B.L&&!B.R)return A;
Node r;r.L=A.L,r.R=B.R;
int len1=A.R-A.L+,len2=B.R-B.L+;
r.sum=A.sum+B.sum;
r.vl=A.vl+B.vl+len2*A.rv+len1*B.lv;
r.lv=A.lv+len2*A.sum+B.lv;
r.rv=B.rv+len1*B.sum+A.rv;
return r;
}
void pushdown(int k){
if(st[k].tag){
work(k<<,st[k].tag);
work(k<<|,st[k].tag);
st[k].tag=;
}
}
void build(int k,int L,int R){
st[k].L=L,st[k].R=R;
if(L==R){
st[k].vl=,st[k].sum=;
st[k].lv=,st[k].rv=;
st[k].tag=;
}
else{
int mid=(L+R)>>;
build(k<<,L,mid);
build(k<<|,mid+,R);
st[k]=Merge(st[k<<],st[k<<|]);
}
}
Node query(int k,int a,int b){
int L=st[k].L,R=st[k].R;
if(a<=L&&R<=b){
return st[k];
}
else{
pushdown(k);
Node r;
int mid=(L+R)>>;
if(a<=mid)r=Merge(r,query(k<<,a,b));
if(b>mid)r=Merge(r,query(k<<|,a,b));
return r;
}
}
void add(int k,int a,int b,ll v){
int L=st[k].L,R=st[k].R;
if(a<=L&&R<=b){
work(k,v);
}
else{
pushdown(k);
int mid=(L+R)>>;
if(a<=mid)add(k<<,a,b,v);
if(b>mid)add(k<<|,a,b,v);
st[k]=Merge(st[k<<],st[k<<|]);
}
}
int n,m;
ll s1[MAXN],s2[MAXN];
void init(){
n=read(),m=read();
for(rint i=;i<=n;i++){
s1[i]=s1[i-]+i;
s2[i]=s2[i-]+1LL*i*i;
}
for(rint i=;i<=n;i++){
cnt[i]=(i+)*s1[i]-s2[i];
}
build(,,n);
}
ll gcd(ll a,ll b){return (!b?a:gcd(b,a%b));}
void solve(){
char s[];
int x,y;ll v;
while(m--){
scanf("%s%d%d",s,&x,&y);
y--;
if('C'==s[]){
scanf("%lld",&v);
add(,x,y,v);
}
else{
Node r=query(,x,y);
ll a=1LL*(y-x+)*(y-x+)/;
ll b=r.vl;
ll c=gcd(a,b);
a/=c,b/=c;
printf("%lld/%lld\n",b,a);
}
}
}
int main()
{
// freopen("data.in","r",stdin);
init();
solve();
return ;
}
洛谷P2221 [HAOI2012]高速公路的更多相关文章
- 洛谷 P2221 [HAOI2012]高速公路
链接: P2221 题意: 有 \(n(1\leq n\leq 10^5)\) 个点,从第 \(i(1\leq i< n)\) 个点向第 \(i+1\) 个点连有边.最初所有边长 \(v_i\) ...
- 洛谷P2221 [HAOI2012]高速公路(线段树+概率期望)
传送门 首先,答案等于$$ans=\sum_{i=l}^r\sum_{j=i}^r\frac{sum(i,j)}{C_{r-l+1}^2}$$ 也就是说所有情况的和除以总的情况数 因为这是一条链,我们 ...
- P2221 [HAOI2012]高速公路(线段树)
P2221 [HAOI2012]高速公路 显然答案为 $\dfrac{\sum_{i=l}^r\sum_{j=l}^{r}dis[i][j]}{C_{r-l+1}^2}$ 下面倒是挺好算,组合数瞎搞 ...
- 洛谷 P2220 [HAOI2012]容易题 数论
洛谷 P2220 [HAOI2012]容易题 题目描述 为了使得大家高兴,小Q特意出个自认为的简单题(easy)来满足大家,这道简单题是描述如下: 有一个数列A已知对于所有的A[i]都是1~n的自然数 ...
- 洛谷P2221 高速公路【线段树】
题目:https://www.luogu.org/problemnew/show/P2221 题意:有n个节点排成一条链,相邻节点之间有一条路. C u v val表示从u到v的路径上的每条边权值都加 ...
- 洛谷 P2505 [HAOI2012]道路 解题报告
P2505 [HAOI2012]道路 题目描述 C国有n座城市,城市之间通过m条单向道路连接.一条路径被称为最短路,当且仅当不存在从它的起点到终点的另外一条路径总长度比它小.两条最短路不同,当且仅当它 ...
- 洛谷 P1877 [HAOI2012]音量调节
P1877 [HAOI2012]音量调节 题目描述 一个吉他手准备参加一场演出.他不喜欢在演出时始终使用同一个音量,所以他决定每一首歌之前他都需要改变一次音量.在演出开始之前,他已经做好一个列表,里面 ...
- 洛谷P1877 [HAOI2012]音量调节 [2017年4月计划 动态规划05]
P1877 [HAOI2012]音量调节 题目描述 一个吉他手准备参加一场演出.他不喜欢在演出时始终使用同一个音量,所以他决定每一首歌之前他都需要改变一次音量.在演出开始之前,他已经做好一个列表,里面 ...
- 【题解】Luogu P2221 [HAOI2012]高速公路
原题传送门 这道题还算简单 我们要求的期望值: \[\frac{\sum_{i=l}^r\sum_{j=l}^rdis[i][j]}{C_{r-l+1}^{2}}\] 当然是上下两部分分别求,下面肥肠 ...
随机推荐
- C语言第二周作业----分支结构
一.PTA实验作业 题目1.7-1计算分段函数 本题目要求计算下列分段函数f(x)的值: 注:可在头文件中包含math.h,并调用sqrt函数求平方根,调用pow函数求幂. 1.实验代码 int ma ...
- 张旭升20162329 2006-2007-2 《Java程序设计》第一周学习总结
20162329 2006-2007-2 <Java程序设计>第一周学习总结 教材学习内容总结 通过打书上的代码熟悉了Java编程的基本过程 教材学习中的问题和解决过程 1.因为我的虚拟机 ...
- 201621123043 《Java程序设计》第7周学习总结
1. 本周学习总结 2.书面作业 1. GUI中的事件处理 1.1 写出事件处理模型中最重要的几个关键词. 事件:用户的操作. 事件源:产生事件的组件. 事件监听程序:对事件进行处理的操作所引发的相关 ...
- java JDK源码解析
Hashmap 使用java语言进行系统开发时,使用得比较多得数据结构hashmap,它以[key,value],进行数据存储,通过key可以快速找到到对应的value值,但是key,value不能是 ...
- 调用WCF时,调用已超过传入消息(65536)的最大消息大小配额。若要增加配额,请使用相应绑定。
解决方案: 其实只要在客户端配置文件中加上如下紫色粗体属性( maxReceivedMessageSize): <?xml version="1.0" encoding=&q ...
- PHP类的自动加载
spl_autoload_register(function ($className) { require str_replace('\\', '/', $className '.php'); }) ...
- 谈谈ASP.NET Core中的ResponseCaching
前言 前面的博客谈的大多数都是针对数据的缓存,今天我们来换换口味.来谈谈在ASP.NET Core中的ResponseCaching,与ResponseCaching关联密切的也就是常说的HTTP缓存 ...
- Linq SelectMany 交叉连接
class Student1 { public int Score { get; set; } public Student1(int score) { this.Score = score; } } ...
- ELK学习总结(4-1)elasticsearch更改mapping(不停服务重建索引)
elasticsearch更改mapping(不停服务重建索引)原文 http://donlianli.iteye.com/blog/1924721Elasticsearch的mapping一旦创建, ...
- SpringCloud的微服务网关:zuul(理论)
参考链接:https://springcloud.cc/spring-cloud-dalston.html 一.概念与定义 1.为什么要引入API网关 后期维护:路由规则和服务实例列表困难 系统架构: ...