Codeforces Round #802 (Div. 2)C. Helping the Nature(差分)
题目链接
题目大意:
给你一个有n个元素的数组a,你可以通过一下三种操作使数组的每一个值都为0:
- 选择一个下标i,然后让a[1],a[2]....a[ i ] 都减一;
- 选择一个下标i,然后让a[i],a[i+1]....a[n] 都减一;
- 让每一个值都加一
问让整个数组的值都为0的最小操作数。
题目思路:
我们观察所有操作,发现其都是让一个连续区间都减去一个相同的数,或者加上一个相同的数,这与差分十分相似,所以我们将其转化为差分操作:
1.a[1]-1,a[i+1]+1
2.a[i]-1
3.a[1]+1
因为操作1每次都会改变两个元素的值,所以根据贪心的思想我们要尽量多的使用操作1
所以我们将原数组转化为差分数组,应用操作即可
代码实现:
# include<iostream>
# include<bits/stdc++.h>
using namespace std;
# define int long long
# define endl "\n"
const int N = 2e5 + 10;
int a[N];
int b[N];
void solve() {
int n;
cin >> n;
for (int i = 1; i <= n; ++i) cin >> a[i];
for (int i = 1; i <= n; ++i) b[i] = a[i] - a[i - 1];
int ans = 0;
for (int i = 2; i <= n; ++i) {
if (b[i] < 0) {//小于0使用操作1
b[1] += b[i];
ans += abs(b[i]);
} else ans += b[i];//大于0使用操作2
}
ans += abs(b[1]);//最后对a[1]看需要使用操作2还是操作3
cout << ans << endl;
}
int tt;
signed main() {
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
tt = 1;
cin >> tt;
while (tt--)solve();
return 0;
}
Codeforces Round #802 (Div. 2)C. Helping the Nature(差分)的更多相关文章
- Codeforces Round #802 (Div. 2)
题集链接 A Optimal Path 水 代码 #include <bits/stdc++.h> #define endl "\n" using namespace ...
- Codeforces Round #533 (Div. 2) E - Helping Hiasat 最大团
E - Helping Hiasat 裸的最大团,写了一种 2 ^ (m / 2) * (m / 2)的复杂度的壮压, 应该还有更好的方法. #include<bits/stdc++.h> ...
- Codeforces Round #533 (Div. 2) E. Helping Hiasat(最大独立集)
题目链接:https://codeforces.com/contest/1105/problem/E 题意:有 n 个事件,op = 1 表示我可以修改昵称,op = 2 表示一个名为 s_i 的朋友 ...
- Codeforces Round #670 (Div. 2) D. Three Sequences 题解(差分+思维+构造)
题目链接 题目大意 给你一个长为n的数组a,要你构造一个非严格单调上升的数组b和一个非严格单调下降的数组c,使得\(b_i+c_i=a_i\) 要你使这两个数组b,c中最大的元素最小,还有q次修改(q ...
- Codeforces Round #366 (Div. 2) ABC
Codeforces Round #366 (Div. 2) A I hate that I love that I hate it水题 #I hate that I love that I hate ...
- Codeforces Round #354 (Div. 2) ABCD
Codeforces Round #354 (Div. 2) Problems # Name A Nicholas and Permutation standard input/out ...
- Codeforces Round #368 (Div. 2)
直达–>Codeforces Round #368 (Div. 2) A Brain’s Photos 给你一个NxM的矩阵,一个字母代表一种颜色,如果有”C”,”M”,”Y”三种中任意一种就输 ...
- cf之路,1,Codeforces Round #345 (Div. 2)
cf之路,1,Codeforces Round #345 (Div. 2) ps:昨天第一次参加cf比赛,比赛之前为了熟悉下cf比赛题目的难度.所以做了round#345连试试水的深浅..... ...
- Codeforces Round #279 (Div. 2) ABCDE
Codeforces Round #279 (Div. 2) 做得我都变绿了! Problems # Name A Team Olympiad standard input/outpu ...
随机推荐
- pnpm凭什么这么快
前端包管理器层出不穷,pnpm算是一个后起之秀.它和npm有什么不同,为什么有了npm还要造一个pnpm? npm的问题 npm是最早的包管理器,安装nodejs自带npm,v3版本之前,npm安全依 ...
- pydantic 支持Dotenv 文件设置变量
1. 安装 pip install pydantic pip install pydantic[dotenv] 注意: 安装pip install pydantic[dotenv]时会提示no mat ...
- 【lwip】04-网络数据包流向
目录 前言 4.1 TCPIP分层与lwip数据共享 4.2 协议栈线程模型 4.3 pbuf 结构体 4.3.1 pbuf的标志位flags 4.4 pbuf的类型 4.4.1 PBUF_RAM类型 ...
- React报错之Property 'value' does not exist on type EventTarget
正文从这开始~ 总览 当event参数的类型不正确时,会产生"Property 'value' does not exist on type EventTarget"错误.为了解决 ...
- 关于DOS命令窗口的一点基本知识
1.DOS命令窗口又可称为CMD窗口.shell.终端. 2.常用的DOS命令: -硬盘分区名+: :进入到该硬盘分区(注意是英文冒号哦) -cd+目录名:进入到指定(该)目录 -dir:列出当前目录 ...
- Spring常用注解(SpirngBoot方面讲的更加详细)
注解实现自动装配 使用注解须知: 导入约束,context约束 配置注解的支持 <?xml version="1.0" encoding="UTF-8"? ...
- mydodo协议
mydodo协议 目录 数据帧结构 命令 协议 代码样例 数据帧结构 帧头1 帧头2 设备号 命令 数据长度 数据 0x4D 0x59 xxx cmd nByte data 例子:设备my01 的继电 ...
- KingbaseES TOAST存储方式
KingbaseES为"大字段"的物理存储提供了TOAST功能,通过合适的配置策略能够减少IO次数和扫描块数,进而提升查询速度. TOAST:The Oversized-Attri ...
- 从Spring中学到的【1】--读懂继承链
最近看了一些 Spring 源码,发现源码分析的文章很多,而底层思想分析的文章比较少,这个系列文章准备总结一下Spring中给我的启示,包括设计模式思想.SOLID设计原则等,涉及一些编程的基本原则, ...
- 【项目实战】pytorch实现逻辑斯蒂回归
视频指导:https://www.bilibili.com/video/BV1Y7411d7Ys?p=6 一些数据集 在pytorch框架下,里面面有配套的数据集,pytorch里面有一个torchv ...