cf1151e number of components
很常见的思想:将整体求改为统计每个部分的贡献
本题中统计[l, r]时, 每个连通块有一个重要特征, 最右端的数在[l,r]中而下一个数不在(好像是句废话
那么我们分别考虑每个点对连通块的贡献, 即它是某个连通块的右端点, 这样可以保证每个连通块只会被算一次
对于序列 \(a_1a_2\cdots a_n\) 若\(a_i < a_{i+1}\) l的范围是1~\(a_i\) r的范围是\(a_i\) ~ $ a_j-1$ ans += (a[i+1] - a[i]) * a[i];
否则 同理 ans += (n-a[i]+1) * (a[i] - a[i+1]);
代码:
#include<cstdio>
#include<cstring>
#include<iostream>
#define ll long long
using namespace std;
template <typename T>
void read(T &x) {
x = 0;int f = 1;
char c = getchar();
for (;!isdigit(c);c=getchar()) if(c=='-') f=-1;
for (;isdigit(c);c=getchar()) x=(x<<3)+(x<<1)+c-'0';
x *= f;
}
const int N = 100050;
ll n, a[N], ans;
int main() {
read(n);
for (int i = 1;i <= n; i++) read(a[i]);
for (int i = 1;i <= n; i++) {
if (a[i+1] > a[i])
ans += (a[i+1] - a[i]) * a[i];
else ans += (n-a[i]+1) * (a[i] - a[i+1]);
}
cout << ans << endl;
return 0;
}
cf1151e number of components的更多相关文章
- 【CF1151E】Number of Components
[CF1151E]Number of Components 题面 CF 题解 联通块个数=点数-边数. 然后把边全部挂在较小的权值上. 考虑从小往大枚举左端点,等价于每次删掉一个元素,那么删去点数,加 ...
- CodeForces 1151E Number of Components
题目链接:http://codeforces.com/problemset/problem/1151/E 题目大意: n个人排成一个序列,标号为 1~n,第 i 个人的学习成绩为 ai,现在要选出学习 ...
- Codefores 1151E Number of Components
大意:给定n元素序列$a$, $1\le a_i \le n$, 定义函数$f(l,r)$表示范围在$[l,r]$以内的数构成的连通块个数, 求$\sum\limits_{i=1}^{n}\sum\l ...
- [CF1303F] Number of Components - 并查集,时间倒流
有一个 \(n \times m\) 矩阵,初态下全是 \(0\). 如果两个相邻元素(四连通)相等,我们就说它们是连通的,且这种关系可以传递. 有 \(q\) 次操作,每次指定一个位置 \((x_i ...
- Codeforces1303F Number of Components
Description link 题意:给一个全\(0\)矩阵,每次支持一个修改,修改不还原(这要是还原了不就成\(A\)题了) 然后询问每一次修改完了当前矩阵的连通块个数 每一个修改的值单调不降 修 ...
- Codeforces 1270H - Number of Components(线段树)
Codeforces 题目传送门 & 洛谷题目传送门 首先需发现一个性质,那就是每一个连通块所对应的是一个区间.换句话说 \(\forall l<r\),若 \(l,r\) 在同一连通块 ...
- 关于一些没做出来的SBCF题
这里是一些我SB没做出来的CF水题. 其实这些题思维量还不错,所以写在这里常来看看…… 不一定每题代码都会写. CF1143C Queen 其实只要注意到如果一个点开始能被删,那一直就能被删:一个点开 ...
- 杭州集训Day4
别问我为什么没有前三天,有时间再补~ 60+60+50=170. T1 . 坐等 memset0 ( 1s 256MB )( 原题:洛谷CF1151E Number of Components ) 树 ...
- [翻译]Writing Custom Report Components 编写自定义报表组件
摘要:简单介绍了如何编写一个FastReport的组件,并且注册到FastReport中使用. Writing Custom Report Components 编写自定义报表组件 FastRep ...
随机推荐
- oracle 数据库安装及jdbc的连接
今天,我在oracle的官网下载了数据库并进行安装,其中遇到一些问题,在此进行记录. 1.下载,之后,按照网上的教程进行安装,开始遇到 下载之后出现11g 出现ins13001环境不满足最低要求 这个 ...
- cookie的使用以及cookie的跨域名获取
cookie存放容量4k左右,可设置过期时间. 1.cookie的封装使用 //设置cookies function setCookie(name, value) { var Days = 30; v ...
- .net中[Serializable]序列化的应用
原文链接:https://blog.csdn.net/wanlong360599336/article/details/9222459 浅析.NET中的Serialization 摘要 本文简要介绍了 ...
- WTL自定义控件:需要的头文件
这两天自定义了一个Edit控件,继承自CEdit,如下: class CCheckEditEx : public CWindowImpl< CCheckEditEx, CEdit > 需要 ...
- Python&R&Matlab:批量生成变量
在编写程序时,有时我们需要命名相当多的变量,比如x0.x1.x2.....xn,用手一个个打出来是相当麻烦的.那么这时我们就需要批量生成变量了. 解决这个问题的关键在于,'xn'是自动构造出来的字符串 ...
- 在神经网络中weight decay
weight decay(权值衰减)的最终目的是防止过拟合.在损失函数中,weight decay是放在正则项(regularization)前面的一个系数,正则项一般指示模型的复杂度,所以weigh ...
- Rust学习-阶段1学习总结
学习Rust已经两周了,基本上是断断续续的在学,或者是在上下班坐公交时,或者是在ODC没事做时.现在已经学习了Rust程序设计语言的前5章,是时候做一个总结了.关于数据类型或者if else这种内容我 ...
- k8s的一键分发秘钥 需要yum install expect
#下面的密码你改改就行了 我的机器也用的123456 ssh-keygen -t rsa -P "" -f /root/.ssh/id_rsa for i in k8s-1 k8s ...
- JS如何设置和获取盒模型对应的宽和高
㈠方式一:通过DOM节点的 style 样式获取 dom.style.width/height 只能获取使用内联样式的元素的宽和高. <!DOCTYPE html> <html ...
- zabbix微信发送消息脚本
cat /usr/local/zabbix/share/zabbix/alertscripts/sed_messages_weixin.py python2.x #!/usr/bin/env pyth ...