2020qbxt D1T3 停车
嗯...
题目:
【问题描述】
市中心有一个环形的停车场,编号1到n,现在有m个车要停,停在每个位置会有不同的费用。为了方便,不允许两辆车停在相邻的位置,请问停好所有车的最小花费是多少?
【输入格式】
第一行包含两个正整数n, m,保证n>=2m-1
第二行包含n个正整数,表示停在i位置的费用
【输出格式】
输出一个整数,表示停好所有车的最小花费是多少
【样例输入】
7 3
1 2 3 4 5 6 7
【样例输出】
9
【样例说明】
停在1 3 5
【数据规模与约定】
20% n<=10
40% n<=100
60% n<=1000
100% n<=100000 ai<=10000
分析:
这道题我们首先会考虑贪心。如果没有限制,只需要从小到大贪心即可。由于有了限制,考虑设计能够撤销之前操作。
考虑一个性质的证明:
如果有1 2 3 三个数中选择,如果不选2,那么一定会选1和3。这样的话如果选了2,删除1、3两个节点,把2的权值更改成a[1]+a[3]-a[2],相当于把2修改成了1和3。
优先队列优化贪心可以做到O(nlogn),每次处理后用链表来删除。
AC代码:
#include<cstdio>
#include<iostream>
#include<queue>
#define pa pair<int,int>
using namespace std; int n,m,ans;
int vis[],a[],L[],R[];
priority_queue<pa,vector<pa>,greater<pa> >q; inline void del(int x){
vis[x]=;
R[L[x]]=R[x];
L[R[x]]=L[x];
} int main(){
scanf("%d%d",&n,&m);
for(int i=;i<=n;i++){
scanf("%d",&a[i]);
L[i]=(i==)?n:i-;
R[i]=(i==n)?:i+;
q.push(pa(a[i],i));
}
while(m--){
while(vis[q.top().second]) q.pop();
int x=q.top().second; q.pop();
ans+=a[x];
a[x]=a[L[x]]+a[R[x]]-a[x];
del(L[x]); del(R[x]);
q.push(pa(a[x],x));
}
printf("%d\n",ans);
return ;
}
AC代码
2020qbxt D1T3 停车的更多相关文章
- 城管停车执法打印APP 移动云POS 现场打印告知单-执法平台+智能POS客户端系统
市城管局城管支队工作人员使用最新配备的城管执法手持终端对便道违法停放车辆进行拍照取证. 城管执法手持终端具备拍照.现场打印.无线传输等功能,执法人员只要在该终端登录,即可随时实现对违停车辆的拍照取证. ...
- <停车卫> 产品需求说明书 version 2.0
<停车卫> 产品需求说明书 文档版本号: Version 2.0 文档编号: xxxx 文档密级: 归属部门/项目: 产品名: 停车卫 子系统名: 编写人: kina 编写日期: 2015 ...
- java多线程模拟停车系统
import java.util.Random; import java.util.concurrent.ArrayBlockingQueue; import java.util.concurrent ...
- [luogu P3953] [noip2017 d1t3] 逛公园
[luogu P3953] [noip2017 d1t3] 逛公园 题目描述 策策同学特别喜欢逛公园.公园可以看成一张$N$个点$M$条边构成的有向图,且没有 自环和重边.其中1号点是公园的入口,$N ...
- ETC(电子不停车收费系统)的发展演变
ETC引进中国是在上世纪的90年代中期,当时中国部分经济发达地区的高速公路车流量激增,从而导致了收费口的交通堵塞.高速公路堵车现象时有发生,拥堵严重的路段可能会天天堵,有时候一堵好几天.高速公路管理手 ...
- 【NOIP2017 D1T3】逛公园
NOIP2017 D1T3 逛公园 题意:给一个有向图,每条边有权值,问从\(1\)到\(N\)的长度不超过最短路长度\(+K\)的路径条数.如果有无数条则输出\(-1\). 思路:我们首先扔掉\(- ...
- [2018HN省队集训D1T3] Or
[2018HN省队集训D1T3] Or 题意 给定 \(n\) 和 \(k\), 求长度为 \(n\) 的满足下列条件的数列的数量模 \(998244353\) 的值: 所有值在 \([1,2^k)\ ...
- noip 2018 D1T3 赛道修建
noip 2018 D1T3 赛道修建 首先考虑二分答案,这时需要的就是对于一个长度求出能在树中选出来的最多的路径条数.考虑到一条路径是由一条向上的路径与一条向下的路径构成,或者仅仅是向上或向下的路径 ...
- 逆向某停车app(原创)
最近一直在做python开发的事情,信息安全方面做得很少,也是"蛋蛋"的忧伤呀.今天有朋友请我帮忙,将一个app里的文字和图标替换一下,花了一下午和一晚上的时间搞了一下,主要是图标 ...
随机推荐
- Linux package installation: deb and rpm
一般来说著名的 Linux 系统基本上分两大类: RedHat 系列:Redhat.Centos.Fedora 等 Debian 系列:Debian.Ubuntu 等 Dpkg (Debian系): ...
- C++-数据抽象入门
一.假定数据是如何存储的 隐藏某些实现逻辑时,我们是想要隐藏绘制子弹的细节.我们是通过使用一个可以调用的函数,而不是直接写出绘制子弹到屏幕上的代码来实现的.这里同样可以使用一个函数来隐藏棋盘存储的细节 ...
- spring boot 运行错误: 找不到或无法加载主类
在项目根目录运行 mvn clean install 进行重新编译 不行的话就删了原有的启动配置,重新配置启动.
- 经常使用的cmd命令
ASSOC 显示或修改文件扩展名关联.ATTRIB 显示或更改文件属性.BREAK 设置或清除扩展式 CTRL+C 检查.BCDEDIT 设置启动数据库中的属性以控制启动加载.CACLS 显示或修改文 ...
- python之路之网络基础
c类地址
- spring(四):IoC
IoC-Inversion of Control,即控制反转 IoC意味着将你设计好的对象交给容器控制,而不是传统的在你的对象内部直接控制. 理解IoC的关键:"谁控制谁,控制什么,为何是反 ...
- 如何查看当前工程,已经安装的nuget包?
本文链接:https://blog.csdn.net/Microsoft_Mao/article/details/101161872如果想知道,当前解决方案(solution)里都安装了什么包,这里可 ...
- C++-LUOGU2938- [USACO09FEB]股票市场Stock Market-[完全背包]
开O2,开O2,开O2 重要的事情说三遍 #include <set> #include <map> #include <cmath> #include <q ...
- AcWing 3. 完全背包问题
朴素 #include<iostream> #include<algorithm> using namespace std ; ; int n,m; int v[N],w[N] ...
- 【做题笔记】P1330 封锁阳光大学
读题易得:对于有边的两个点 \(u,v\) ,能且仅能其中一点对这条边进行封锁. 什么意思呢?假设给这张图上的点进行染色,那么对于上述的两个点 \(u,v\) ,\(u,v\) 必须异色(理解这一点很 ...