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读取Excel表格
前言:需要进行自动化办公或者自动化测试的朋友,可以了解下此文,掌握Python读取Excel表格的方法. 一.准备工作: 1.安装Python3.7.0(官网下载安装包) 2.安装Pycharm(官网 ...
- javascript高级程序设计第三版书摘
在HTML 中使用JavaScript <script>元素 在使用<script>元素嵌入 JavaScript 代码时,只须为<script>指定 type 属 ...
- Codeforces Round #747 (Div. 2) Editorial
Codeforces Round #747 (Div. 2) A. Consecutive Sum Riddle 思路分析: 一开始想起了那个公式\(l + (l + 1) + - + (r − 1) ...
- [软工顶级理解组] Beta阶段团队贡献分评分
贡献分评分依据 下述表格适用于前端.后端.爬虫开发者的评分,在此基础上进行增减. 类别 程度 加减分 准时性 提前完成 +0 按时完成 +0 延后完成,迟交时间一天内或未延误进度 -2 延后完成,迟交 ...
- Alpha阶段发布声明
发布声明 Alpha 1.Alpha版本功能说明 功能列表和详情图 模块 功能 展示 首页 查看首页博文,搜索博文,可供未登录用户使用 动态 查看推荐动态给未登录用户使用,登录用户可以查看关注动态.我 ...
- 微信小程序的实现原理
一.背景 网页开发,渲染线程和脚本是互斥的,这也是为什么长时间的脚本运行可能会导致页面失去响应的原因,本质就是我们常说的 JS 是单线程的 而在小程序中,选择了 Hybrid 的渲染方式,将视图层和逻 ...
- CSP-S 2021 遗言
感谢€€£,谢谢宁嘞! 第一题,€€£给了很多限制条件,什么"先到先得"."只有一个跑道",让它看起来很好做,然后来骗,来偷袭,广大"消费者" ...
- GEOS使用记录
由于需要计算GIS障碍物的缓冲区,所以研究了 一下GEOS库的使用,将使用的一些细节内容记录一下: 1.vs2010IDE无法编译较高版本的GEOS库,较高版本的库使用了更加高级的C++语法,如果想使 ...
- switch中case...用法-c语言
... 表示范围 case 0...4; // error case 5 ... 9; // ok eg 1: char ch = 4; switch(ch) { case 1: printf(& ...
- PWN学习之格式化字符串漏洞
目录 PWN学习之格式化字符串漏洞 格式化输出函数 格式化字符串漏洞 漏洞利用 使程序崩溃 栈数据泄露 任意地址内存泄漏 栈数据覆盖 任意地址内存覆盖 PWN学习之格式化字符串漏洞 格式化输出函数 可 ...