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. Ansible5:常用模块

    目录 ping模块 setup模块 file模块 copy模块 service模块 cron模块 yum模块 user模块与group模块 user模块 group示例 synchronize模块 f ...

  2. windows下用wubi快速安装ubuntu

    由于开发需要,我们可能要用到ubuntu,然而又不能完全抛弃windows,于是双系统是个不错选择. wubi是一个在windows下快速安装ubuntu双系统的工具,它包含在ubuntu 12及以前 ...

  3. python---基础知识回顾(九)图形用户界面-------WxPython

    主要使用wxPython(最成熟的跨平台python GUI工具包) wxPython手册 前戏:基础了解 import wx class MyFrame(wx.Frame): #创建自定义Frame ...

  4. bzoj千题计划161:bzoj1589: [Usaco2008 Dec]Trick or Treat on the Farm 采集糖果

    http://www.lydsy.com/JudgeOnline/problem.php?id=1589 tarjan缩环后拓扑排序上DP #include<cstdio> #includ ...

  5. call 大佬 help7——kmp 补齐 循环节

    http://acm.hdu.edu.cn/showproblem.php?pid=3746 用kmp算法,那么 但是也等于上面的是正确的 也等于下面是错误的 why? #include<cst ...

  6. Jenkins maven 构建乱码,修改file.encoding系统变量编码为UTF-8

    一切都是windows的控制台默认编码GBK问题 情景: 使用jenkins构建,console 输出的中文乱码.代码编码格式是utf-8,因为Jenkins会默认读取当前系统的编码格式,导致构建日志 ...

  7. android edittext 获取焦点并弹出软键盘

    editText.setFocusable(true); editText.setFocusableInTouchMode(true); editText.requestFocus(); activi ...

  8. Java并发编程原理与实战二十四:简易数据库连接池

    public class MyDataSource { private static LinkedList<Connection> pool = new LinkedList<> ...

  9. UCenter在JAVA项目中实现的单点登录应用实例

    Comsenz(康盛)的UCenter当前在国内的单点登录领域占据绝对份额,其完整的产品线令UCenter成为了账号集成方面事实上的标准. 基于UCenter,可以将Comsenz旗下的Discuz! ...

  10. 训练赛第三场A题 zoj 559

    题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=2559 解题报告:比赛的时候的想法是可以确定至少有两对相切的圆,所 ...