https://www.luogu.org/problemnew/show/P3130

#include <cstdio>
#include <iostream> using namespace std;
const int N = 2e5 + ; #define LL long long LL W[N << ], Min[N << ], Size[N << ], F[N << ];
int n, T;
LL Answer; #define gc getchar()
#define oo 999999999 inline int read() {
int x = ; char c = gc;
while(c < '' || c > '') c = gc;
while(c >= '' && c <= '') x = x * + c - '', c = gc;
return x;
} #define lson jd << 1
#define rson jd << 1 | 1 void Up(int jd) {
W[jd] = W[lson] + W[rson];
Min[jd] = min(Min[lson], Min[rson]);
return ;
} void Build_tree(int l, int r, int jd) {
Size[jd] = (r - l + );
if(l == r) {W[jd] = read(); Min[jd] = W[jd]; return ;}
int mid = (l + r) >> ;
Build_tree(l, mid, lson);
Build_tree(mid + , r, rson);
Up(jd);
} void Down(int jd) {
int imp = F[jd];
F[lson] += imp; F[rson] += imp;
W[lson] += imp * Size[lson]; W[rson] += imp * Size[rson];
Min[lson] += imp; Min[rson] += imp;
F[jd] = ;
return ;
} void Sec_A_min(int l, int r, int jd, int x, int y) {
if(x <= l && r <= y) {Answer = min(Answer, Min[jd]); return ;}
if(F[jd]) Down(jd);
int mid = (l + r) >> ;
if(x <= mid) Sec_A_min(l, mid, lson, x, y);
if(y > mid) Sec_A_min(mid + , r, rson, x, y);
} void Sec_A_sum(int l, int r, int jd, int x, int y) {
if(x <= l && r <= y) {Answer += W[jd]; return ;}
if(F[jd]) Down(jd);
int mid = (l + r) >> ;
if(x <= mid) Sec_A_sum(l, mid, lson, x, y);
if(y > mid) Sec_A_sum(mid + , r, rson, x, y);
} void Sec_G(int l, int r, int jd, int x, int y, int g) {
if(x <= l && r <= y) {W[jd] += g * Size[jd]; Min[jd] += g; F[jd] += g; return ;}
if(F[jd]) Down(jd);
int mid = (l + r) >> ;
if(x <= mid) Sec_G(l, mid, lson, x, y, g);
if(y > mid) Sec_G(mid + , r, rson, x, y, g);
Up(jd);
} int main() {
n = read(); T = read();
Build_tree(, n, );
while(T --) {
string s; cin >> s;
if(s[] == 'M') {Answer = oo; int x = read(), y = read(); Sec_A_min(, n, , x, y); cout << Answer << "\n";}
else if(s[] == 'S') {Answer = ; int x = read(), y = read(); Sec_A_sum(, n, , x, y); cout << Answer << "\n";}
else {int x = read(), y = read(), g = read(); Sec_G(, n, , x, y, g);}
}
return ;
}

[Luogu] 计数的更多相关文章

  1. Luogu P5296 [北京省选集训2019]生成树计数

    Luogu P5296 [北京省选集训2019]生成树计数 题目链接 题目大意:给定每条边的边权.一颗生成树的权值为边权和的\(k\)次方.求出所有生成树的权值和. 我们列出答案的式子: 设\(E\) ...

  2. Luogu 1351 NOIP 2014 联合权值(贪心,计数原理)

    Luogu 1351 NOIP 2014 联合权值(贪心,计数原理) Description 无向连通图 G 有 n 个点,n-1 条边.点从 1 到 n 依次编号,编号为 i 的点的权值为 Wi, ...

  3. luogu 1608 路径统计--最短路计数

    https://www.luogu.org/problemnew/show/P1608 题意https://www.cnblogs.com/rmy020718/p/9440588.html相似,建议还 ...

  4. BZOJ 2281 Luogu P2490 [SDOI2011]黑白棋 (博弈论、DP计数)

    怎么SDOI2011和SDOI2019的两道题这么像啊..(虽然并不完全一样) 题目链接: (bzoj) https://www.lydsy.com/JudgeOnline/problem.php?i ...

  5. Luogu P2807 三角形计数

    题目背景 三角形计数(triangle) 递推 题目描述 把大三角形的每条边n等分,将对应的等分点连接起来(连接线分别平行于三条边),这样一共会有多少三角形呢?编程来解决这个问题. 输入输出格式 输入 ...

  6. luogu【P1144】最短路计数

    原题入口 这道题 一道有关于最短路的图论问题. 要求从1开始求解最短路的条数. 这个题十分有趣,首先,跑裸的spfa(或者dijkstra)算出从1开始的最短路的长度. 再其次,计数的话,可以用记忆化 ...

  7. 线段树合并 || 树状数组 || 离散化 || BZOJ 4756: [Usaco2017 Jan]Promotion Counting || Luogu P3605 [USACO17JAN]Promotion Counting晋升者计数

    题面:P3605 [USACO17JAN]Promotion Counting晋升者计数 题解:这是一道万能题,树状数组 || 主席树 || 线段树合并 || 莫队套分块 || 线段树 都可以写..记 ...

  8. 题解 luogu P1144 【最短路计数】

    本蒟蒻也来发一次题解第一篇请见谅 这个题有几个要点 1.无向无权图,建图的时候别忘记建来回的有向边[因此WA掉1次 2.无权嘛,那么边长建成1就好了2333333 3.最短路采用迪杰斯特拉(别忘用堆优 ...

  9. luogu P3605 [USACO17JAN]Promotion Counting晋升者计数

    题目链接 luogu 思路 可以说是线段树合并的练手题目吧 也没啥说的,就是dfs,然后合并... 看代码吧 错误 和写主席树错的差不多 都是变量写错.... 代码 #include <bits ...

随机推荐

  1. QT 打包exe

    QT打包主要方法: 1.把无措的代码进行Release编译 2.在运行完后,找到运行后生成的目录,以下是我的文件,名为result,运行类型有两种,一种是Debug,另一种是Release,我们需要的 ...

  2. 12.如何设置ulimit

    ulimit -a用来显示当前的各种用户进程限制 修改所有 linux 用户的环境变量文件:vi /etc/profileulimit -u 10000              #用户的最大进程数u ...

  3. 怎样理解AJAX

    AJAX: Asynchronous JavaScript and XML, 翻译过来就是: 异步的JavaScript与XML 这已经成为了一个通用名词, 字面意义已经消失了, 因为现在使用Java ...

  4. Oracle设置权限和还原数据库

    Oracle还原数据库 ,在最高权限账户上,先将安装好的数据上创建一个账户 -- Create the user create user newsafe identified by newsafe d ...

  5. C#动态生成Word文档并填充数据

    C#也能动态生成Word文档并填充数据 http://www.cnblogs.com/qyfan82/archive/2007/09/14/893293.html 引用http://blog.csdn ...

  6. 【CNN】 吴恩达课程中几种网络的比较

    LeNet5 AlexNet VGG16 ResNet  : 残差网络 Inception Net :  特点,可以通过1*1*192 的卷积核来缩减参数个数,压缩维度,约缩减10倍, 例如  :用1 ...

  7. MUI 跨域请求web api

    由于刚接触MUI框架,所以在跨域问题上花了一点时间.希望我的方式能帮你少走点弯路(大神就直接过里吧)! 首先,遇到这个问题,各种百度.其中说法最多的是将mui,js文件里的 setHeader('X- ...

  8. 阻塞IO和非阻塞IO

    1 TCP协议 每一个TCP通信的的socket的内核里面都会有一个发送缓冲区和接收缓冲区 发送端 : send 报文 -- TCP发送缓冲区 -- 接收端 :TCP接收缓冲区 -- receive ...

  9. Spring7大模块

    Spring 框架是一个分层架构,由 7 个定义良好的模块组成.Spring 模块构建在核心容器之上,核心容器定义了创建.配置和管理 bean 的方式,组成 Spring 框架的每个模块(或组件)都可 ...

  10. 解决织梦5.7添加新变量出现:Request var not allow!的办法

    找到:根目录->include->common.inc.phpif( strlen($svar)>0 && preg_match('#^(cfg_|GLOBALS|_ ...