bzoj 2752
思路:
线段树;
代码:
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;
#define maxn 100005
#define ll long long
#define maxtree maxn<<2
ll n,m,val[maxtree],val1[maxtree],val2[maxtree],len[maxtree],len2[maxtree];
ll L[maxtree],R[maxtree],mid[maxtree],size[maxtree],tag[maxtree];
inline void in(ll &now)
{
ll if_z=;now=;
char Cget=getchar();
while(Cget>''||Cget<'')
{
if(Cget=='-') if_z=-;
Cget=getchar();
}
while(Cget>=''&&Cget<='')
{
now=now*+Cget-'';
Cget=getchar();
}
now*=if_z;
}
void build(ll now,ll l,ll r)
{
L[now]=l,R[now]=r,size[now]=r-l+;
if(l==r)
{
len[now]=l,len2[now]=l*l;
return;
}
mid[now]=l+r>>;
build(now<<,l,mid[now]);
build(now<<|,mid[now]+,r);
len[now]=len[now<<]+len[now<<|];
len2[now]=len2[now<<]+len2[now<<|];
}
void pushdown(ll now)
{
val[now<<]+=size[now<<]*tag[now];
val[now<<|]+=size[now<<|]*tag[now];
val1[now<<]+=len[now<<]*tag[now];
val1[now<<|]+=len[now<<|]*tag[now];
val2[now<<]+=len2[now<<]*tag[now];
val2[now<<|]+=len2[now<<|]*tag[now];
tag[now<<]+=tag[now],tag[now<<|]+=tag[now],tag[now]=;
}
void add(ll now,ll l,ll r,ll x)
{
if(L[now]>=l&&R[now]<=r)
{
val[now]+=size[now]*x;
val1[now]+=len[now]*x;
val2[now]+=len2[now]*x;
tag[now]+=x;
return;
}
if(tag[now]) pushdown(now);
if(l<=mid[now]) add(now<<,l,r,x);
if(r>mid[now]) add(now<<|,l,r,x);
val[now]=val[now<<]+val[now<<|];
val1[now]=val1[now<<]+val1[now<<|];
val2[now]=val2[now<<]+val2[now<<|];
}
ll query(ll now,ll l,ll r,ll to)
{
if(L[now]>=l&&R[now]<=r)
{
if(to==) return val[now];
else if(to==) return val1[now];
else return val2[now];
}
if(tag[now]) pushdown(now);ll res=;
if(l<=mid[now]) res+=query(now<<,l,r,to);
if(r>mid[now]) res+=query(now<<|,l,r,to);
return res;
}
ll gcd(ll a,ll b)
{
return b?gcd(b,a%b):a;
}
int main()
{
in(n),in(m),build(,,n-);
char op[];ll tmp,tmp1,tmp2,l,r,x,g;
while(m--)
{
scanf("%s",op),in(l),in(r);
if(op[]=='C')
{
in(x);
add(,l,r-,x);
}
else
{
x=((r-l+)*(r-l))>>,tmp=query(,l,r-,)*(r-l*r);
tmp1=query(,l,r-,)*(l+r-),tmp2=-query(,l,r-,);
tmp+=tmp1+tmp2,g=gcd(tmp,x),tmp/=g,x/=g;
printf("%lld/%lld\n",tmp,x);
}
}
return ;
}
bzoj 2752的更多相关文章
- [BZOJ 2752] 高速公路
Link: BZOJ 2752 传送门 Solution: 虽然有期望,但实际上就是除了个总数…… 此题计算总代价明显还是要使用对每个$w_i$计算贡献的方式: $w_i的贡献为w_i*(i-l+1) ...
- Bzoj 2752 高速公路 (期望,线段树)
Bzoj 2752 高速公路 (期望,线段树) 题目链接 这道题显然求边,因为题目是一条链,所以直接采用把边编上号.看成序列即可 \(1\)与\(2\)号点的边连得是. 编号为\(1\)的点.查询的时 ...
- BZOJ 2752 高速公路(road)(线段树)
题目链接:http://61.187.179.132/JudgeOnline/problem.php?id=2752 题意:给出一个数列A,维护两种操作: (1)将区间[L,R]之内的所有数字增加de ...
- BZOJ 2752: [HAOI2012]高速公路(road)( 线段树 )
对于询问[L, R], 我们直接考虑每个p(L≤p≤R)的贡献,可以得到 然后化简一下得到 这样就可以很方便地用线段树, 维护一个p, p*vp, p*(p+1)*vp就可以了 ----------- ...
- BZOJ 2752: [HAOI2012]高速公路(road) [线段树 期望]
2752: [HAOI2012]高速公路(road) Time Limit: 20 Sec Memory Limit: 128 MBSubmit: 1219 Solved: 446[Submit] ...
- ●BZOJ 2752 [HAOI2012]高速公路(road)
题链: http://www.lydsy.com/JudgeOnline/problem.php?id=2752题解: 期望,线段树. 把每个路段看成一个点,那么对于l~R的操作,就可以转化为对l~r ...
- BZOJ 2752 [HAOI2012]高速公路(road):线段树【维护区间内子串和】
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=2752 题意: 有一个初始全为0的,长度为n的序列a. 有两种操作: (1)C l r v: ...
- bzoj 2752 9.20考试第三题 高速公路(road)题解
2752: [HAOI2012]高速公路(road) Time Limit: 20 Sec Memory Limit: 128 MBSubmit: 1545 Solved: 593[Submit] ...
- bzoj 2752: [HAOI2012]高速公路(road)
Description Y901高速公路是一条重要的交通纽带,政府部门建设初期的投入以及使用期间的养护费用都不低,因此政府在这条高速公路上设立了许多收费站.Y901高速公路是一条由N-1段路以及N个收 ...
随机推荐
- Guava之CaseFormat
com.google.common.base.CaseFormat是一种实用工具类,以提供不同的ASCII字符格式之间的转换. 其对应的枚举常量 从以上枚举中可以看出,java程序员最常用的转换类型为 ...
- Shell记录-Shell脚本基础(四)
while循环,使您能够重复执行一组命令,直到某些条件发生.它通常用于当你需要反复操纵的变量值. 语法 while command do Statement(s) to be executed if ...
- 【数据库-MySql】清空所有表格的所有数据
方式一. drop procedure if exists del_all_tb; delimiter $$ create procedure del_all_tb(db char(20)) begi ...
- Git为某个域名设置代理
打开Git 配置文件 vi ~/.gitconfig 添加如下配置: [http "https://github.com/"] proxy = http://127.0.0.1:1 ...
- Fiddler 使用
一.模拟post请求 User-Agent: FiddlerContent-Type: application/json; charset=utf-8Content-Length: 138Conten ...
- 2017中国大学生程序设计竞赛 - 网络选拔赛 1005 HDU 6154 CaoHaha's staff (找规律)
题目链接 Problem Description "You shall not pass!" After shouted out that,the Force Staff appe ...
- 2016.07.15——istringstream测试
istringstream测试 1.istringstream strcin(str),字符串(str)可以包括多个单词,单词之间使用空格分开 #include "stdafx.h" ...
- 【FCS NOI2018】福建省冬摸鱼笔记 day6【FJOI 2018】福建省选混分滚蛋记 day1
记录一下day6发生的事情吧. 7:30 到达附中求索碑,被人膜,掉RP. 7:50 进考场,6楼的最后一排的最左边的位置,世界上最角落的地方,没有任何想法. 发现电脑时间和别人不一样,赶快调了一下. ...
- imperva 更改web界面的密码
通过SSH作为用户根登录到MX(或通过另一个用户并提升) 运行命令“su oracle” //首先切换到oracle用户 sqlplus secure/(密码) /用此命令登录到数据库 s ...
- Django中HttpRequest和HttpResponse
请求和响应对象 Django中通过使用请求和响应对象来传递系统的状态. 当请求一个页面的时候,Django就创建一个HttpRequest对象,它包含了关于请求的元数据对象,然后Django加载适当的 ...