Solution

很显然, 最优情况肯定是相邻两个相连 。

然后模型就跟 Luogu1484 类似了。

把两个房子 看成一个坑 (参考 Luogu1484), 选取 $k$ 个不相邻的坑, 使得权值最小。

Luogu1484 则是 选取 至多 $k$ 个不相邻坑,  使得权值最大。

先考虑简单问题:

当$k= 1$时, 肯定是选择 最大 的$a[i]$

当$k= 2$时, 仅有两种情况  选 最大的 $a[i]$ 和 不相邻的 $a[j]$ 或者 $a[i+1]+a[i-1]$

   我们先选了最大的$a[i]$

   那么怎么样才能让下一个找到的最大的 $a[j]$ 是满足条件的解呢?

  我们把 $a[i - 1]$ 和 $a[i + 1]$ 删去, 然后把 $a[i]$改为 $a[i + 1] + a[i - 1] - a[i]$,这样就满足了肯定不会 单独选到 $a[i + 1]或a[i-1]$。

  并且我们若想要选$a[i+1]和a[i-1]$且不选$a[i]$ 只需要再选一次$a[i]$即可。

在$k$更大的情况下同样适用。

然后就用链表存储 $nxt$ 与 $pre$, $Set$ 维护 最大值/ 最小值。

Code

 #include<cstdio>
#include<cstring>
#include<algorithm>
#include<set>
#define rd read()
#define ll long long
using namespace std;
typedef pair<ll, int> P; const int N = 1e5 + ;
const ll inf = 1e10; int n, k;
int nxt[N], pre[N];
ll a[N], ans;
set<P> st; int read() {
int X = , p = ; char c = getchar();
for (; c > '' || c < ''; c = getchar())
if (c == '-') p = -;
for (; c >= '' && c <= ''; c = getchar())
X = X * + c - '';
return X * p;
} void del(int x) {
nxt[pre[x]] = nxt[x];
pre[nxt[x]] = pre[x];
} int main()
{
n = rd; k = rd;
for (int i = ; i <= n; ++i)
a[i] = rd;
n--;
for (int i = ; i <= n; ++i)
a[i] = a[i + ] - a[i];
for (int i = ; i <= n; ++i)
nxt[i] = i + , pre[i] = i - ;
for (int i = ; i <= n; ++i)
st.insert(P(a[i], i));
a[] = a[n + ] = inf;
set<P> :: iterator it;
for (; k; --k) {
it = st.begin();
P tp = *it;
int x = tp.second; ll y = a[x];
ll t = a[pre[x]] + a[nxt[x]] - y;
a[x] = t; ans += y;
st.insert(P(t, x));
st.erase(P(y, x));
if (pre[x])
st.erase(P(a[pre[x]], pre[x])), del(pre[x]);
if (nxt[x] && nxt[x] != n + )
st.erase(P(a[nxt[x]], nxt[x])), del(nxt[x]);
}
printf("%lld\n", ans);
}

Luogu 3620 数据备份 - Set的更多相关文章

  1. 数据备份的OSS接口

    最近在做一个新的项目,从RDS备份到OSS,进行数据备份以及后续的还原.这边对阿里云的OSS数据上传接口进行说明,先做下笔记先简单介绍下OSS: ①Object 在OSS中,用户操作的基本数据单元是O ...

  2. 两种适用于中小量数据的mysql数据备份

    近来项目的业务量开始大了,感觉如果数据不周期性地备份一下,很可能会出现问题,虽然我每天都有阿里云的自动快照,上网找了一下方法,找到两种相对简单而又适合中小项目或者中小公司的数据备份策略,以下都是数据库 ...

  3. redis主从复制 从而 数据备份和读写分离

    蜗牛Redis系列文章目录http://www.cnblogs.com/tdws/tag/NoSql/ 爬虫转载注明地址本文地址—博客园蜗牛 http://www.cnblogs.com/tdws/p ...

  4. MySQL 数据备份与还原

    一.数据备份 1.使用mysqldump命令备份 mysqldump命令将数据库中的数据备份成一个文本文件.表的结构和表中的数据将存储在生成的文本文件中. mysqldump命令的工作原理很简单.它先 ...

  5. 转 MySQL 数据备份与还原

    MySQL 数据备份与还原 原贴:http://www.cnblogs.com/kissdodog/p/4174421.html   一.数据备份 1.使用mysqldump命令备份 mysqldum ...

  6. Linux文件系统应用---系统数据备份和迁移(用户角度)

    1   前言 首先承诺:对于从Windows系统迁移过来的用户,困扰大家的  “Linux系统下是否可以把系统文件和用户文件分开到C盘和D盘中” 的问题也可以得到完满解决. 之前的文章对Linux的文 ...

  7. 开源服务专题之-------rsync数据备份

    RSYNC是Remote Sync 远程同步的简称,与SCP的比较,SCP= 无法备份大量数据,类似windows的复制,而rsync=边复制 ,边统计,边比较,可以备份大量数据.可以镜像保存整个目录 ...

  8. Oracle数据备份bat

    @echo on setlocal rem 设置数据库和备份文件参数... set sid=testorcl set username=testname set password=testpwd se ...

  9. Bzoj1150 数据备份Backup

    Description 你在一家 IT 公司为大型写字楼或办公楼(offices)的计算机数据做备份.然而数据备份的工作是枯燥乏味 的,因此你想设计一个系统让不同的办公楼彼此之间互相备份,而你则坐在家 ...

随机推荐

  1. 安装PostGIS 2.1.1 时遇到checking for library containing GDALAllRegister... no

    在postgis中执行./configure时,遇到 checking for library containing GDALAllRegister... no 的错误信息 [root@test po ...

  2. 用R理解统计学

    1.随机变量( random variable)概念的引入 该数据来自杰克逊实验室.2组数据,每组12只老鼠,一组普通食物,另一组高脂肪(hf)饮食.几周后,科学家们称了每只老鼠的体重,得到了这个数据 ...

  3. JMeter使用中遇到的问题:Jmeter Debug - "Unrecognized VM option '+HeapDumpOnOutOfMemoryError"(转载)

    转载自 http://www.cnblogs.com/yangxia-test 启动JMeter.bat的程序时,出现以下出错信息: Unrecognized VM option '+HeapDump ...

  4. oracle授予调用存储过程权限

    参考 https://blog.csdn.net/h254532693/article/details/45364317 grant execute on PROCEDURENAME to USERN ...

  5. linux 升级python2.7

    linux为centos6,系统默认安装了python2.6,需要执行的python脚本内容包含标准库之xml.etree.ElementTree  用到库里的一个iter方法是python2.7的新 ...

  6. 基本数据类型(dict)

    05. 基本数据类型(dict)内容:1. 字典的简单介绍2. 字典增删改查和其他操作3. 字典的嵌套⼀. 字典的简单介绍字典(dict)是python中唯⼀的⼀个映射类型.他是以{ }括起来的键值对 ...

  7. swiper轮播的slide高度自适应

    方式1:官方给的属性 autoHeight: true, //高度随内容变化 发现实际没效果 方式2:先定义了一个slide的高度数组, //设置slide父级高度 index为slide的索引 fu ...

  8. scrollIntoView 顶部与视图(容器)对齐

    调用方法为 element.scrollIntoView() 参数默认为true. 参数为true时调用该函数,页面(或容器)发生滚动,使element的顶部与视图(容器)顶部对齐: 参数为false ...

  9. PERL 正则表达式简介

    来源:脚本之家 网址:http://www.jb51.net/article/17429.htm 一.简介 二.匹配操作符 三.模式中的特殊字符 1.字符+ 2.字符 []和[^] 3.字符 *和? ...

  10. 第十一章 串 (c3)KMP算法:理解next[]表