cf1453B. Suffix Operations
cf1453B. Suffix Operations
题意:
给你一个整数序列,其中有n个元素。你需要对这个序列进行操作。
1 在所有操作开始前,你可以选择一个数,并修改他的值,这个值你可以自己定。本操作无花费。
2 选择一个下标i,将所有下标不小于i的元素加上一个整数x,x可以你自己定。这次操作花费为x的绝对值。
本题给你一个序列,要你求要将这个序列中的元素统一,至少花费多少。
题解:
因为修改只有一次,我们先不考虑,如果没有修改的话,答案就是所有相邻两数差的绝对值之和。
为什么?我们的操作是将的下标大于等于i的都+x,我们考虑差值,发现只有第i-1位和第i位的差值发生了改变,其他相邻数都没有改变。也就是说我们一次操作,其实只能改变这两个相邻数之间的差值,那总修改数不就是所有相邻两个数差的绝对值的和.(个人理解)
现在我们有修改操作,因为可以随便修改,那我们可以将第x位直接修改到我们想要的理想状态,那原来的∣ax−1−ax∣+∣ax−ax+1∣|a_{x-1}-a_{x}|+|a_{x}-a_{x+1}|∣ax−1−ax∣+∣ax−ax+1∣变成∣ax−1−ax+1∣|a_{x-1}-a_{x+1}|∣ax−1−ax+1∣,记得将边界特判一下
代码:
#include <bits/stdc++.h>
#include <unordered_map>
#define debug(a, b) printf("%s = %d\n", a, b);
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
typedef pair<int, int> PII;
clock_t startTime, endTime;
//Fe~Jozky
const ll INF_ll= 1e18;
const int INF_int= 0x3f3f3f3f;
void read(){};
template <typename _Tp, typename... _Tps> void read(_Tp& x, _Tps&... Ar)
{x= 0;char c= getchar();bool flag= 0;while (c < '0' || c > '9')flag|= (c == '-'), c= getchar();while (c >= '0' && c <= '9')x= (x << 3) + (x << 1) + (c ^ 48), c= getchar();if (flag)x= -x;read(Ar...);
}
template <typename T> inline void write(T x)
{if (x < 0) {x= ~(x - 1);putchar('-');}if (x > 9)write(x / 10);putchar(x % 10 + '0');
}
void rd_test()
{#ifdef ONLINE_JUDGE
#elsestartTime = clock ();freopen("data.in", "r", stdin);
#endif
}
void Time_test()
{#ifdef ONLINE_JUDGE
#elseendTime= clock();printf("\nRun Time:%lfs\n", (double)(endTime - startTime) / CLOCKS_PER_SEC);
#endif
}
const int maxn=2e5+9;
int a[maxn];
int b[maxn];
int main()
{//rd_test();int t;read(t);while(t--){int n;read(n);for(int i=1;i<=n;i++)read(a[i]);for(int i=2;i<=n;i++)b[i]=abs(a[i]-a[i-1]);ll ans=0;for(int i=2;i<=n;i++)ans+=b[i];ll sum=ans;for(int i=2;i<n;i++){ans=min(ans,sum-b[i]-b[i+1]+abs(a[i+1]-a[i-1]));}ans=min(ans,min(sum-b[2],sum-b[n]));cout<<ans<<endl;} //Time_test();
}
cf1453B. Suffix Operations相关推荐
- Codeforces Round #688 (Div. 2)
Codeforces Round #688 (Div. 2) 题号 题目 知识点- A Cancel the Trains 签到(题解) B Suffix Operations 思维 C Triang ...
- C++ iostream、ostream、istream等标准库都是什么?看完这篇就知道了
目录 `iostream` 库 组成 基本类模板 类模板实例 标准对象 类型 操纵符 源码 `ostream` 库 `istream` 库 `fstream` 库 `ios` 库 我们在写C++代码的 ...
- C++ ostream源码
C++ ostream 源码分享: // Output streams -*- C++ -*-// Copyright (C) 1997-2019 Free Software Foundation, ...
- 浅显易懂 Makefile 入门 (06)— 文件名操作函数(dir、notdir、suffix、basename、addsuffix、addperfix、join、wildcard)
编写 Makefile 的时候,很多情况下需要对文件名进行操作.例如获取文件的路径,去除文件的路径,取出文件前缀或后缀等等. 注意:下面的每个函数的参数字符串都会被当作或是一个系列的文件名来看待. 1 ...
- 2021年大数据Spark(四十六):Structured Streaming Operations 操作
目录 Operations 操作 官网示例代码: Operations 操作 获得到Source之后的基本数据处理方式和之前学习的DataFrame.DataSet一致,不再赘述 官网示 ...
- 【C++】C++11 STL算法(八):对未初始化内存的操作(Operations on uninitialized memory)、C库(C library)
对未初始化内存的操作(Operations on uninitialized memory) 一.uninitialized_copy 1.原型: template< class InputIt ...
- 【C++】C++11 STL算法(七):排列操作(Permutation operations)、数值操作(Numeric operations)
排列操作(Permutation operations) 一.is_permutation 1.原型: template< class ForwardIt1, class ForwardIt2 ...
- 【C++】C++11 STL算法(六):最小/最大操作(Minimum/maximum operations)、比较运算(Comparison operations)
目录 最小/最大操作(Minimum/maximum operations) 一.max 1.原型: 2.说明: 3.官方demo 二.max_element 1.原型: 2.说明: 3.官方demo ...
- 【C++】C++11 STL算法(五):设置操作(Set operations)、堆操作(Heap operations)
目录 设置操作(Set operations) 一.includes 1.原型: 2.说明: 3.官方demo 二.set_difference 1.原型: 2.说明: 3.官方demo 三.set_ ...
最新文章
- android中一个解决办法
- Node.js进击基础一(5-5http知识填坑)
- 【数论】GCD(P2568)
- Dynamics 365的系统作业实体记录增长太快怎么回事?
- 使用TypeScript正确键入Vuex
- js与c语言效率_2020年为什么要精通C语言?是什么造就封神之路?不愧是最强编程语言...
- hdu(杭电oj)输入输出练习题目总结
- android des ecb加密_Android逆向 | 基础知识篇 01
- 运维人必知必会的Zabbix核心命令
- Yahoo!用户体验与设计前副总裁推荐——《设计模式》
- 视频教程-Python实现自己的分布式区块链视频教程-区块链
- 「eBay大赛专访特辑」第一轮淘汰在即!已经有同学出单$2500!
- 写给大一充实,大二不顺,大三迷茫的同学
- AngularJS学习笔记-2
- 计算机绘图cad2016,帮忙用cad画图计算机绘图线下形考册2016秋
- JS黄金分割法实现随机漂亮颜色!
- 了解 ARM Coretex-A 系列芯片
- 图片格式及其内存占用
- 【Java】Java获取昨天日期的正确姿势
- echarts3.0之关系图详解
热门文章
- 正方形与圆的爱恨纠缠...
- 生产者消费者_【线程通信】生产者消费者模型
- mysql sleep详解_sql注入详解(二)
- python turtle 绘图_谈一下Pycharm中关联系统Python解释器的方法
- oracle表存储表空间,Oracle的存储信息-表空间信息记录
- 控制台编写JAVA程序教程_写一个java程序的步骤是什么?写java程序技巧
- python实战excel_实战python 读写EXCEL表
- linux适合搭建什么服务器吗,Linux 的三种服务器的搭建
- 多个cpp文件生成so_boostpython:从多个.cpp文件创建一个模块(.so)
- 2020项目商机_2020未来商机,一万元可以做什么项目