Arc123 D
Arc123 D
很好考场降智了。
感觉\(D\)比\(C\)好做多了。
考虑\(C_i = A_i - B_i\),那么有\(C_{i + 1} \leq C_i,B_i \leq B_{i + 1},A_{i + 1} - B_{i + 1} \leq A_i - B_i \to B_i + max(0,A_{i + 1} - A_{i}) \leq B_{i+1}\)
因为\(|B_i + C_i| \leq A_i\),所以我们应该让\(B_i,C_i\)为正数,所以我们应让\(B_i\)为最小的数。
所以\(B_i = max(0,B_i + A_{i + 1} - A_i)\)
所以最后\(ans = \sum |d + B_i| +|c - B_i|\),只要选取一个合适的\(B_i\)的就好。
选取中位数。
// Problem: D - Inc, Dec - Decomposition
// Contest: AtCoder - AtCoder Regular Contest 123
// URL: https://atcoder.jp/contests/arc123/tasks/arc123_d
// Memory Limit: 1024 MB
// Time Limit: 2000 ms
//
// Powered by CP Editor (https://cpeditor.org)
#include <cstdio>
#include <algorithm>
#include <cmath>
#include <cstring>
#define LL long long
using namespace std;
const int MAXN = 4e5 + 5;
int n, a[MAXN];
LL ans, c[MAXN];
int main() {
scanf("%d", &n);
for(int i = 1; i <= n; i ++) scanf("%d", &a[i]);
for(int i = 1; i <= n; i ++) {
if(a[i] >= a[i - 1]) c[i] = c[i - 1] + a[i] - a[i - 1];
else c[i] = c[i - 1];
}
for(int i = n + 1; i <= 2 * n; i ++) c[i] = a[i - n] - c[i - n];
for(int i = 1; i <= n; i ++) c[i] = -c[i];
sort(c + 1, c + 1 + 2 * n);
for(int i = 1; i <= 2 * n; i ++) ans += abs(c[i] - c[n]); printf("%lld", ans);
return 0;
}
Arc123 D的更多相关文章
随机推荐
- sql常用的统计公式
hivesql中max,min函数不能作用于多列,因此在有上下门限区间限制时多用公式直接计算. max(x,y)=(x+y+ABS(x-y))/2 min(x,y)=(x+y-ABS(x-y))/2 ...
- Poetry(2)Poetry的基本使用方式
Poetry的基本使用 准备工作 如果你是在一个已有的项目里使用Poetry,你只需要执行 poetry init 命令来创建一个 pyproject.toml 文件: poetry init 可看到 ...
- 2 What is the Domain Driven Design? 什么是领域驱动设计
What is the Domain Driven Design? 什么是领域驱动设计 Domain-driven design (DDD) is an approach to software de ...
- MySQL:怒刷牛客网“sql实战”
MySQL:怒刷牛客网"sql实战" 在对MySQL有一定了解后,抽空刷了一下 牛客网上的 数据库SQL 实战,在此做一点小小的记录 SQL1 查找最晚入职员工的所有信息 sele ...
- 2021.9.25考试总结[NOIP模拟61]
终于有点阳间题了然而挂了60pts 哈哈 T1 交通 类似简单题,限制看似很复杂,但不难发现当确定一条边是否被删后会产生裙带关系,很多边会跟着自动被确定是否被删. 仔细观察可以得出这种关系会构成偶环结 ...
- 线程池系列二:一张动图,彻底懂了execute和submit
我们知道线程池通过execute方法执行提交的Runnable任务,但Runnable只是执行任务,没有返回任何信息. [线程池原理:线程池原来是个外包公司,打工人我悟了] 若是我们想在异步执行完 ...
- python fnmatch & glob
1,转载:Python模块学习 - fnmatch & glob - Dahlhin - 博客园 (cnblogs.com) 介绍 fnmatch 和 glob 模块都是用来做字符串匹配文件名 ...
- PWN学习之栈溢出
目录 PWN学习之栈溢出 前言 写bug bug.cpp源码 OD动态调试bug.exe OD调试观察溢出 栈溢出攻击之突破密码验证 x64位栈溢出 PWN学习之栈溢出 前言 我记得我在最开始学编程的 ...
- 谷歌chrome多个相同用户登陆同一个机器多开配置
创建快捷方式,目标中填写:路径+参数如下所示即可 参数:--user-data-dir=%LOCALAPPDATA%\Google\Chrome\%SessionName%
- 【接口】HttpClient 处理get和post请求(二)(2019-07-14 18:41)
一.环境准备 1.导入httpClient依赖包 <dependency> <groupId>org.apache.httpcomponents</groupId> ...