洛谷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}}\] 当然是上下两部分分别求,下面肥肠 ...
随机推荐
- 个人总结——Beta阶段
Beta总结 我们在beta 结束之后, 每位写一个博客, 回顾并总结自己的beta过程,哪些方面做的好的,哪些方面做得不足需要改进的 回答问题 分析在Alpha阶段自己提出的五个问题,针对每个问题, ...
- 20162318 实验二《Java面向对象程序设计》实验报告
北京电子科技学院(BESTI) 实 验 报 告 课程:程序设计与数据结构 班级:1623班 姓名:张泰毓 指导老师:娄老师.王老师 实验日期:2017年4月14日 实验密级:非密级 实验器材:带Lin ...
- python的PEP8 代码风格指南
PEP8 代码风格指南 这篇文章原文实际上来自于这里:https://www.python.org/dev/peps/pep-0008/ 知识点 代码排版 字符串引号 表达式和语句中的空格 注释 版本 ...
- Django 个性化管理员站点
from django.contrib import admin # Register your models here. from .models import Moment class Momen ...
- 学习ASP.NET Core Razor 编程系列四——Asp.Net Core Razor列表模板页面
学习ASP.NET Core Razor 编程系列目录 学习ASP.NET Core Razor 编程系列一 学习ASP.NET Core Razor 编程系列二——添加一个实体 学习ASP.NET ...
- Entity Framework Core Code First
参考地址:https://docs.microsoft.com/zh-cn/ef/core/get-started/aspnetcore/new-db
- django启动uwsgi报错
查看uwsgi.log *** Starting uWSGI 2.0.17 (64bit) on [Thu Apr 5 17:46:15 2018] *** compiled with version ...
- node框架express
见识到原生nodeJs服务器的恶心后,我们来用下简单好用的框架吧~ 服务器无非主要提供接口和静态文件读取,直接上代码: const express = require('express'); cons ...
- EasyUI DataGrid 实现单行/多行编辑功能
要实现 EasyUI DataGrid 的可编辑很简单,在需要编辑的列添加 editor [编辑器]就可以了. 单行编辑 // 初始化数据列表 function initDatagrid() { $( ...
- 源码解析Flask的配置文件
在flask里,我们常在主文件中定义某些配置,比如: app.debug = True app.secret_key = 'helloworld!!' 实际上,flask中默认可以进行可选的配置项有很 ...