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的更多相关文章

  1. [BZOJ 2752] 高速公路

    Link: BZOJ 2752 传送门 Solution: 虽然有期望,但实际上就是除了个总数…… 此题计算总代价明显还是要使用对每个$w_i$计算贡献的方式: $w_i的贡献为w_i*(i-l+1) ...

  2. Bzoj 2752 高速公路 (期望,线段树)

    Bzoj 2752 高速公路 (期望,线段树) 题目链接 这道题显然求边,因为题目是一条链,所以直接采用把边编上号.看成序列即可 \(1\)与\(2\)号点的边连得是. 编号为\(1\)的点.查询的时 ...

  3. BZOJ 2752 高速公路(road)(线段树)

    题目链接:http://61.187.179.132/JudgeOnline/problem.php?id=2752 题意:给出一个数列A,维护两种操作: (1)将区间[L,R]之内的所有数字增加de ...

  4. BZOJ 2752: [HAOI2012]高速公路(road)( 线段树 )

    对于询问[L, R], 我们直接考虑每个p(L≤p≤R)的贡献,可以得到 然后化简一下得到 这样就可以很方便地用线段树, 维护一个p, p*vp, p*(p+1)*vp就可以了 ----------- ...

  5. BZOJ 2752: [HAOI2012]高速公路(road) [线段树 期望]

    2752: [HAOI2012]高速公路(road) Time Limit: 20 Sec  Memory Limit: 128 MBSubmit: 1219  Solved: 446[Submit] ...

  6. ●BZOJ 2752 [HAOI2012]高速公路(road)

    题链: http://www.lydsy.com/JudgeOnline/problem.php?id=2752题解: 期望,线段树. 把每个路段看成一个点,那么对于l~R的操作,就可以转化为对l~r ...

  7. BZOJ 2752 [HAOI2012]高速公路(road):线段树【维护区间内子串和】

    题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=2752 题意: 有一个初始全为0的,长度为n的序列a. 有两种操作: (1)C l r v: ...

  8. bzoj 2752 9.20考试第三题 高速公路(road)题解

    2752: [HAOI2012]高速公路(road) Time Limit: 20 Sec  Memory Limit: 128 MBSubmit: 1545  Solved: 593[Submit] ...

  9. bzoj 2752: [HAOI2012]高速公路(road)

    Description Y901高速公路是一条重要的交通纽带,政府部门建设初期的投入以及使用期间的养护费用都不低,因此政府在这条高速公路上设立了许多收费站.Y901高速公路是一条由N-1段路以及N个收 ...

随机推荐

  1. 1082 线段树练习 3 && 树状数组区间修改区间查询

    1082 线段树练习 3 题意: 给定序列初值, 要求支持区间修改, 区间查询 Solution 用树状数组, 代码量小, 空间占用小 巧用增量数组, 修改时在 \(l\) 处 $ + val$ , ...

  2. 数据分析与展示---Pandas库入门

    简介 一:Pandas库的介绍 二:Pandas库的Series类型 (一)索引 (1)自动索引 (2)自定义索引 (二)Series类型创建 (1)列表创建 (2)标量值创建 (3)字典类型创建(将 ...

  3. opencv 图像处理函数大全

    .cvLoadImage:将图像文件加载至内存: .cvNamedWindow:在屏幕上创建一个窗口: .cvShowImage:在一个已创建好的窗口中显示图像: .cvWaitKey:使程序暂停,等 ...

  4. HBase基本概念

    HBase是什么 HBase构建在 HDFS 之上的分布式列式键值存储系统.HBase内部管理的文件全部存储在HDFS中. HBase VS HDFS HDFS适合批处理场景 不支持数据随机查找 不适 ...

  5. 五、Kafka 用户日志上报实时统计之 应用概述

    一.kafka 回顾 1.简介 Kafka 的业务 业务场景: 解除耦合 增加冗余 提高可扩展性 Buffering 异步通信 2.介绍 Kafka 的应用场景 Push Message Websit ...

  6. JAVA编程之——反射Reflect

    说到反射,首先要说一下Java中的类和对象. 在Java中万事万物皆对象(有两个 例外,一个是普通数据类型,另一个是静态的东西,静态的东西不是对象的,是属于类的). 在Java中,类也是对象,类是ja ...

  7. iOS程序启动过程笔记

    CHENYILONG Blog 笔记 一.iOS程序的完整启动过程(有storyboard)1.先执行main函数,main内部会调用UIApplicationMain函数 2.UIApplicati ...

  8. jquery $.post() 向php传值 实现简单的二级联动

    更多内容推荐微信公众号,欢迎关注: 1 其中selectid是一个下拉菜单的id $().ready(function () { $("#selectid").change(fun ...

  9. SQL select语句执行顺序

    sql查询原理和Select执行顺序 关键字: 数据库 一 sql语句的执行步骤 1)语法分析,分析语句的语法是否符合规范,衡量语句中各表达式的意义. 2) 语义分析,检查语句中涉及的所有数据库对象是 ...

  10. C++ 和 MFC的学习

    1. 在Windows应用程序设计中,既可以使用个C的基本数据类型,也可以使用Windows自定义的数据类型.但要注意,凡是Windows自定义的关键字都要大写. 2. 什么是句柄? 在Windows ...