ARC 119 补题记录
这把感觉质量很高。
\(E\)
\(E\)比较简单所以先写个\(E\),考虑就一个置换操作来说改变的只有两端的值。
考虑\(|a_i - a_{i - 1}|\)变成区间,则我们考虑分类讨论,发现只有当\(a_{i + 1} > a_{i}\)且\(a_r > a_{r + 1}\)还有\(a_{i + 1} < a_{i}\)且\(a_r < a_{r + 1}\)时,交换操作会带来一些贡献,这个贡献是两倍交集。两种情况可以反转序列来做。、(注意单独考虑\(1\)和\(n\))的情况。
E
#include<iostream>
#include<cstdio>
#include<algorithm>
#define ll long long
#define N 400005
ll n,a[N],sum,ans;
struct P{ll l,r;}b[N];
inline bool operator < (P a,P b){return a.l < b.l;}
inline ll abs(ll a){return a >= 0? a : -a;}
int main(){
scanf("%lld",&n);
for(int i = 1;i <= n;++i)
scanf("%lld",&a[i]);
// for(int i = 1;i <= n;++i)
// std::cout<<a[i]<<" ";
for(int i = 2;i <= n;++i)
sum += abs(a[i] - a[i - 1]);
ans = sum;
// std::cout<<sum<<std::endl;
for(int i = 2;i <= n - 1;++i)
ans = std::min(ans,sum - abs(a[i + 1] - a[i]) + abs(a[i + 1] - a[1]));
for(int i = 2;i <= n - 1;++i)
ans = std::min(ans,sum - abs(a[i - 1] - a[i]) + abs(a[i - 1] - a[n]));
//(al,al + 1) (ar,ar + 1)
ll cnt = 0;
for(int i = 1;i <= n - 1;++i)
if(a[i] < a[i + 1])
b[++cnt].l = a[i],b[cnt].r = a[i + 1];
std::sort(b + 1,b + cnt + 1);
ll maxr = b[1].r;
for(int i = 2;i <= cnt;++i){
// std::cout<<b[i].l<<" "<<b[i].r<<std::endl;
ans = std::min(ans,sum - 2 * (std::min(maxr,b[i].r) - b[i].l));
maxr = std::max(b[i].r,maxr);
}
std::reverse(a + 1, a + n + 1);
cnt = 0;
for(int i = 1;i <= n - 1;++i)
if(a[i] < a[i + 1])
b[++cnt].l = a[i],b[cnt].r = a[i + 1];
std::sort(b + 1,b + cnt + 1);
maxr = b[1].r;
for(int i = 2;i <= cnt;++i){
ans = std::min(ans,sum - 2 * (std::min(maxr,b[i].r) - b[i].l));
maxr = std::max(b[i].r,maxr);
}
std::cout<<ans<<std::endl;
}
D#
大概是一个经典套路。
对于一种操作把整行整列都进行操作的话,考虑把每行每列都缩成点。
那么一个\((i,j)\)的红点相当于把行和列连上边。
选择一边清空则相当于把一个点和其他所有点的连边都去掉,相当删掉这个点。
这是一个二分图,要求最小化最后两边的乘积,考虑把一个联通块从叶子开始删,那么发现只能保留根。
根据二次函数,则把这些跟全部留在原本孤立点小的那边就好了。
ARC 119 补题记录的更多相关文章
- 【补题记录】ZJU-ICPC Summer Training 2020 部分补题记录
补题地址:https://zjusummer.contest.codeforces.com/ Contents ZJU-ICPC Summer 2020 Contest 1 by Group A Pr ...
- 【JOISC 2020 补题记录】
目录 Day 1 Building 4 Hamburg Steak Sweeping Day 2 Chameleon's Love Making Friends on Joitter is Fun R ...
- 【cf补题记录】Codeforces Round #608 (Div. 2)
比赛传送门 再次改下写博客的格式,以锻炼自己码字能力 A. Suits 题意:有四种材料,第一套西装需要 \(a\).\(d\) 各一件,卖 \(e\) 块:第二套西装需要 \(b\).\(c\).\ ...
- 【cf补题记录】Codeforces Round #607 (Div. 2)
比赛传送门 这里推荐一位dalao的博客-- https://www.cnblogs.com/KisekiPurin2019/ A:字符串 B:贪心 A // https://codeforces.c ...
- Codeforces 1214 F G H 补题记录
翻开以前打的 #583,水平不够场上只过了五题.最近来补一下题,来记录我sb的调试过程. 估计我这个水平现场也过不了,因为前面的题已经zz调了好久-- F:就是给你环上一些点,两两配对求距离最小值. ...
- Yahoo Programming Contest 2019 补题记录(DEF)
D - Ears 题目链接:D - Ears 大意:你在一个\(0-L\)的数轴上行走,从整数格出发,在整数格结束,可以在整数格转弯.每当你经过坐标为\(i-0.5\)的位置时(\(i\)是整数),在 ...
- Codeforces 补题记录
首先总结一下前段时间遇到过的一些有意思的题. Round #474 (Div. 1 + Div. 2, combined) Problem G 其实关键就是n这个数在排列中的位置. 这样对于一个排 ...
- 【补题记录】NOIp-提高/CSP-S 刷题记录
Intro 众所周知原题没写过是很吃亏的,突然发现自己许多联赛题未补,故开此坑. 在基本补完前会持续更新,希望在 NOIp2020 前填完. 虽然是"联赛题",但不少题目还是富有思 ...
- ZJUT11 多校赛补题记录
牛客第一场 (通过)Integration (https://ac.nowcoder.com/acm/contest/881/B) (未补)Euclidean Distance (https://ac ...
随机推荐
- python收集参数与解包
收集任意数量的实参 def make_pizza(*toppings): """打印顾客点的所有配料""" print(toppings) ...
- Java继承中父类和子类构造函数的问题
父类有无参构造函数时(显示或隐式),子类的有参和无参构造函数都是默认调用父类的无参构造函数:当父类只有有参构造函数时,子类可以有有参和无参构造函数,子类有参构造函数必须显式调用父类的有参构造函数,子类 ...
- UI自动化测试之Airtest
官方文档: https://airtest.doc.io.netease.com/ 本文我们讲解下Airtest的使用,主要学习目标有以下几点: (1)认识Airtest (2)了解Airtest能做 ...
- MySQL:基础语法-2
MySQL:基础语法-2 记录一下 MySQL 基础的一些语法,便于查询,该部分内容主要是参考:bilibili 上 黑马程序员 的课程而做的笔记,由于时间有点久了,课程地址忘记了 上文MySQL:基 ...
- 第4次 Beta Scrum Meeting
本次会议为Beta阶段第4次Scrum Meeting会议 会议概要 会议时间:2021年6月4日 会议地点:「腾讯会议」线上进行 会议时长:0.5小时 会议内容简介:对完成工作进行阶段性汇报:对下一 ...
- Sharding-JDBC自定义复合分片算法
Sharding-JDBC自定义复合分片算法 一.背景 二.需求 1.对于客户端操作而言 2.对于运营端操作而言 三.分片算法 1.客户id和订单id的生成规则 2. 确定数据落在那个表中 3.举例说 ...
- Linux下Zabbix5.0 LTS监控基础原理及安装部署(图文教程)
Zabbix 是什么? zabbix 是一个基于 Web 界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案.通过 C/S 模式采集数据,通过 B/S 模式在 Web 端展示和配置,能监视 ...
- 计算机网络传输层之TCP可靠传输
文章转自:https://blog.csdn.net/weixin_43914604/article/details/105524592 学习课程:<2019王道考研计算机网络> 学习目的 ...
- Bzoj通过5题纪念
我A了五题啦!!!
- Python 字符串的encode与decode
python的str,unicode对象的encode和decode方法 python中的str对象其实就是"8-bit string" ,字节字符串,本质上类似java中的byt ...