luogu2221 [HAOI2012]高速公路
和sdoi的相关分析很像qwq,推柿子然后线段树搞搞
#include <iostream>
#include <cstdio>
using namespace std;
typedef long long ll;
int n, m, uu, vv, ww;
ll que[3];
char ss[15];
struct SGT{
	ll sum[400005][3], tag[400005];
	//sum[0]: \sum w_i i, sum[1]: \sum w_i i^2, sum[2]: \sum w_i
	void pushDown(int o, int l, int r, int lson, int rson, int mid){
		tag[lson] += tag[o];
		tag[rson] += tag[o];
		sum[lson][0] += (ll)tag[o]*(mid-l+1)*(l+mid)/2;
		sum[lson][1] += (ll)tag[o]*((ll)mid*(mid+1)*(2*mid+1)/6-(ll)(l-1)*l*(2*l-1)/6);
		sum[lson][2] += (ll)tag[o]*(mid-l+1);
		sum[rson][0] += (ll)tag[o]*(r-mid)*(mid+1+r)/2;
		sum[rson][1] += (ll)tag[o]*((ll)r*(r+1)*(2*r+1)/6-(ll)mid*(mid+1)*(2*mid+1)/6);
		sum[rson][2] += (ll)tag[o]*(r-mid);
		tag[o] = 0;
	}
	void update(int o, int l, int r, int x, int y, int k){
		if(l>=x && r<=y){
			sum[o][0] += (ll)k*(r-l+1)*(l+r)/2;
			sum[o][1] += (ll)k*((ll)r*(r+1)*(2*r+1)/6-(ll)(l-1)*l*(2*l-1)/6);
			sum[o][2] += (ll)k*(r-l+1);
			tag[o] += k;
		}
		else{
			int mid=(l+r)>>1;
			int lson=o<<1;
			int rson=lson|1;
			if(tag[o])	pushDown(o, l, r, lson, rson, mid);
			if(x<=mid)	update(lson, l, mid, x, y, k);
			if(mid<y)	update(rson, mid+1, r, x, y, k);
			for(int i=0; i<3; i++)
				sum[o][i] = sum[lson][i] + sum[rson][i];
		}
	}
	void query(int o, int l, int r, int x, int y){
		if(l>=x && r<=y)
			for(int i=0; i<3; i++)
				que[i] += sum[o][i];
		else{
			int mid=(l+r)>>1;
			int lson=o<<1;
			int rson=lson|1;
			if(tag[o])	pushDown(o, l, r, lson, rson, mid);
			if(x<=mid)	query(lson, l, mid, x, y);
			if(mid<y)	query(rson, mid+1, r, x, y);
		}
	}
}sgt;
ll gcd(ll a, ll b){
	return !b?a:gcd(b, a%b);
}
int main(){
	cin>>n>>m;
	while(m--){
		scanf("%s", ss);
		if(ss[0]=='C'){
			scanf("%d %d %d", &uu, &vv, &ww);
			vv--;
			sgt.update(1, 1, n, uu, vv, ww);
			sgt.query(1, 1, n, 1, 1);
		}
		else{
			scanf("%d %d", &uu, &vv);
			que[0] = que[1] = que[2] = 0;
			ll fm=(ll)(vv-uu+1)*(vv-uu)/2;
			vv--;
			sgt.query(1, 1, n, uu, vv);
			ll ans=(ll)(uu+vv)*que[0]-que[1]+(ll)(vv+1)*(1-uu)*que[2];
			ll f=gcd(ans, fm);
			printf("%lld/%lld\n", ans/f, fm/f);
		}
	}
	return 0;
}
												
											luogu2221 [HAOI2012]高速公路的更多相关文章
- BZOJ2752: [HAOI2012]高速公路(road)
		
2752: [HAOI2012]高速公路(road) Time Limit: 20 Sec Memory Limit: 128 MBSubmit: 608 Solved: 199[Submit][ ...
 - BZOJ 2752: [HAOI2012]高速公路(road)( 线段树 )
		
对于询问[L, R], 我们直接考虑每个p(L≤p≤R)的贡献,可以得到 然后化简一下得到 这样就可以很方便地用线段树, 维护一个p, p*vp, p*(p+1)*vp就可以了 ----------- ...
 - 【线段树】BZOJ2752: [HAOI2012]高速公路(road)
		
2752: [HAOI2012]高速公路(road) Time Limit: 20 Sec Memory Limit: 128 MBSubmit: 1621 Solved: 627[Submit] ...
 - 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 ...
 - bzoj 2752: [HAOI2012]高速公路(road)
		
Description Y901高速公路是一条重要的交通纽带,政府部门建设初期的投入以及使用期间的养护费用都不低,因此政府在这条高速公路上设立了许多收费站.Y901高速公路是一条由N-1段路以及N个收 ...
 - BZOJ2752:[HAOI2012]高速公路——题解
		
http://www.lydsy.com/JudgeOnline/problem.php?id=2752 https://www.luogu.org/problemnew/show/P2221#sub ...
 
随机推荐
- System Center Configuration Manager 2016 必要条件准备篇(Part2)
			
步骤2.下载并安装Windows ADK.WDS组件 注意:在Configuration Manager服务器(CM16)上以本地管理员身份执行以下操作 当我们使用Configuration Man ...
 - Java问题定位之如何借助线程堆栈进行问题分析
			
在大型的应用中,线程堆栈打印出来特别多,如何从众多的信息中找到真正有用,有价值的信息,我们需要一定的技巧.本文对此详细介绍. 我们可以从三个方面分析:堆栈的局部信息,一次堆栈的统计信息,多个堆栈的对比 ...
 - 在C++Builder中定义事件的实现方法
			
++Builder是由Borland公司推出的一款可视化集成开发工具.C++Builder的集成开发环境(IDE)提供了一系列可视化快速应用程序开发(RAD)工具,让程序员可以很轻松地建立和管理自己的 ...
 - PHP:__get()、__set()、__isset()、__unset()、__call()、__callStatic()六个魔术方法
			
哎呀呀,今天小仓鼠学到了魔术方法,简称魔法,哈哈哈哈,神经病啊~ 平时在面试的时候,也会遇到问魔术方法有哪些的问题哦!今天我们来了解一下下~ 1.__get() 形式: __get($objName) ...
 - 4 - 函数&装饰器 and 迭代器&生成器
			
函数是什么 函数一词来源于数学,但编程中的「函数」概念,与数学中的函数是有很大不同的.程序里函数的定义是: 定义:将一组语句的集合通过一个名字(函数名)封装起来,要想执行这个函数,只需调用其函数名即可 ...
 - 在你的andorid设备上运行netcore (Linux Deploy)
			
最近注意到.net core 的新版本已经开始支持ARM 平台的CPU, 特意去Linux Deploy 中尝试了一下,真的可以运行 Welcome to Ubuntu 16.04 LTS (GNU/ ...
 - Selenium入门6 操作元素,获取元素属性
			
取元素的text,属性get_attribute,标签名tag_name 操作元素:send_keys输入,click点击,submit提交,clear清除输入 状态判断:is_display,is_ ...
 - framework7 v2.x轮播图写法:
			
<div class="swiper-container swiper-init travel-index-swiper"> <div class="s ...
 - NutDao配置多数据源
			
首先,我必须声明,这是一个非常简单的方法,很多小菜没做出来,是因为把nutz想得太复杂 数据源(或者是数据库连接池),在Nutz.Ioc看来,是一个普通的Bean,没任何特别之处. 再强调一点,除了$ ...
 - Uva 10806 来回最短路,不重复,MCMF
			
题目链接:https://uva.onlinejudge.org/external/108/10806.pdf 题意:无向图,从1到n来回的最短路,不走重复路. 分析:可以考虑为1到n的流量为2时的最 ...