这把感觉质量很高。

\(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 补题记录的更多相关文章

  1. 【补题记录】ZJU-ICPC Summer Training 2020 部分补题记录

    补题地址:https://zjusummer.contest.codeforces.com/ Contents ZJU-ICPC Summer 2020 Contest 1 by Group A Pr ...

  2. 【JOISC 2020 补题记录】

    目录 Day 1 Building 4 Hamburg Steak Sweeping Day 2 Chameleon's Love Making Friends on Joitter is Fun R ...

  3. 【cf补题记录】Codeforces Round #608 (Div. 2)

    比赛传送门 再次改下写博客的格式,以锻炼自己码字能力 A. Suits 题意:有四种材料,第一套西装需要 \(a\).\(d\) 各一件,卖 \(e\) 块:第二套西装需要 \(b\).\(c\).\ ...

  4. 【cf补题记录】Codeforces Round #607 (Div. 2)

    比赛传送门 这里推荐一位dalao的博客-- https://www.cnblogs.com/KisekiPurin2019/ A:字符串 B:贪心 A // https://codeforces.c ...

  5. Codeforces 1214 F G H 补题记录

    翻开以前打的 #583,水平不够场上只过了五题.最近来补一下题,来记录我sb的调试过程. 估计我这个水平现场也过不了,因为前面的题已经zz调了好久-- F:就是给你环上一些点,两两配对求距离最小值. ...

  6. Yahoo Programming Contest 2019 补题记录(DEF)

    D - Ears 题目链接:D - Ears 大意:你在一个\(0-L\)的数轴上行走,从整数格出发,在整数格结束,可以在整数格转弯.每当你经过坐标为\(i-0.5\)的位置时(\(i\)是整数),在 ...

  7. Codeforces 补题记录

    首先总结一下前段时间遇到过的一些有意思的题. Round #474 (Div. 1 + Div. 2, combined)   Problem G 其实关键就是n这个数在排列中的位置. 这样对于一个排 ...

  8. 【补题记录】NOIp-提高/CSP-S 刷题记录

    Intro 众所周知原题没写过是很吃亏的,突然发现自己许多联赛题未补,故开此坑. 在基本补完前会持续更新,希望在 NOIp2020 前填完. 虽然是"联赛题",但不少题目还是富有思 ...

  9. ZJUT11 多校赛补题记录

    牛客第一场 (通过)Integration (https://ac.nowcoder.com/acm/contest/881/B) (未补)Euclidean Distance (https://ac ...

随机推荐

  1. k8s replicaset controller分析(1)-初始化与启动分析

    replicaset controller分析 replicaset controller简介 replicaset controller是kube-controller-manager组件中众多控制 ...

  2. Convolutional Neural Network-week2编程题1(Keras tutorial - 笑脸识别)

    本次我们将: 学习到一个高级的神经网络的框架,能够运行在包括TensorFlow和CNTK的几个较低级别的框架之上的框架. 看看如何在几个小时内建立一个深入的学习算法. 为什么我们要使用Keras框架 ...

  3. 第3次 Beta Scrum Meeting

    本次会议为Beta阶段第3次Scrum Meeting会议 会议概要 会议时间:2021年6月2日 会议地点:「腾讯会议」线上进行 会议时长:0.5小时 会议内容简介:对完成工作进行阶段性汇报:对下一 ...

  4. 单片机stm32的5个时钟源的详细分析

    众所周知STM32有5个时钟源HSI.HSE.LSI.LSE.PLL,其实他只有四个,因为从上图中可以看到PLL都是由HSI或HSE提供的. 其中,高速时钟(HSE和HSI)提供给芯片主体的主时钟.低 ...

  5. hdu 5095 Linearization of the kernel functions in SVM(模拟,分类清楚就行)

    题意: INPUT: The input of the first line is an integer T, which is the number of test data (T<120). ...

  6. 从0到1搭建自己的组件(vue-code-view)库(下)

    0x00 前言 书接上文,本文将从源码功能方面讲解下 vue-code-view 组件核心逻辑,您可以了解以下内容: 动态组件的使用. codeMirror插件的使用. 单文件组件(SFC,singl ...

  7. linux环境下redis安装(redis伪集群搭建)

    redis在linux环境下搭建 1.创建目录 [root@192 local]# mkdir /usr/local/redis 2.下载redis,并解压 [root@192 local]# wge ...

  8. 关于docker中容器可以Ping通外网,真机无法Ping通容器的问题

    首先我们要知道整体的框架结构,docker是我们安装在centos7上的,而centos7是安装在vmware上.其中docker中还有若干容器运行. 整体框架图如下: 我们将它分为两部分,一部分是d ...

  9. Tomcat 内存马(二)Filter型

    一.Tomcat处理请求 在前一个章节讲到,tomcat在处理请求时候,首先会经过连接器Coyote把request对象转换成ServletRequest后,传递给Catalina进行处理. 在Cat ...

  10. SpringCloud概念

    SpringCloud概述 1.SpringCloud是什么? 官方解释:  官网: https://spring.io/projects/spring-cloud/  SpringCloud是一系列 ...