【NOIP模拟赛】就 反悔贪心
这道题,考场上上来就dp然后发现怎么优化也不行.............最后发现是贪心.............
正解:带反悔的贪心,原理是,假设我们现在得到了取i个的最优解那么我们取i+1个的时候要么是新取一个要么把原来取过的点取反(间隙与所选)。我们把所有点从大到小选,这个过程用堆维护,一开始所有的点都是可选的,那么我们取了一个点他前一个后一个都不能再选,那么我们把它们都从堆里取出来,记录答案,同时放进去一个新点,是由这三个点融合的,值为val[i-1]+val[i+1]-val[i]为取反的价值,然后一直取最大取k次就可以了。为什么可以呢:对于一个先取出来的点他左右两点都还没有被取到,因此他如果后来不选了当且仅当同时选其两边的点;这样的话我们满足每次都是在取当前次数下的最大值,这样我们堆里的点的形态大概都是 1 1 1 101 10101 1010101 1 1 1 (1表示没选,0表示选了)。
巨坑:不要错选两边的点,我们只要选了边上的点那么他一定不会被改掉,我们就把他设为inf就当做死人算了,至于为什么会错选呢:我们要选了两边的点,那么我们就会用他的值减去他里面的点的值,然后放进去,我们考虑一下我们就算是选的把点取反那也是选的点数+1的,那我们刚才那个操作是什么鬼?我们要是这么搞就有可能出现以减少所选的点的个数来换取价值的情况。
STL:对于multiset我们删除find到的指针只会删除一个然而我们find到的是我们找到的第一个数。
#pragma G++ optimize("O3")
#include <iostream>
#include <cstdio>
#include <cstring>
#include <queue>
#include <set>
#define MAXN 100010
inline void read(long long &sum){
register char ch=getchar();
for(sum=;ch<''||ch>'';ch=getchar());
for(;ch>=''&&ch<='';sum=(sum<<)+(sum<<)+ch-'',ch=getchar());
}
struct Via{
long long val;
long long l,r;
inline friend bool operator < (Via a,Via b){
return a.val!=b.val?a.val>b.val:a.r<b.r;
}
}p[MAXN];
std::set<Via> Set;
long long n,k;
long long ans;
int main(){
read(n),read(k);
for(long long i=,a;i<=n;i++){
read(a);
p[i]=(Via){a,i,i};
Set.insert(p[i]);
}
while(k--){
Via x=*Set.begin();
Set.erase(Set.find(x));
long long l=x.l,r=x.r,val=-x.val;
ans+=x.val;
if(x.l!=)
Set.erase(Set.find(p[x.l-])),val+=p[x.l-].val,l=p[x.l-].l;
else val-=0x7f7f7f7f;
if(x.r!=n)
Set.erase(Set.find(p[x.r+])),val+=p[x.r+].val,r=p[x.r+].r;
else val-=0x7f7f7f7f;
x.l=l,x.r=r,x.val=val;
for(long long i=l;i<=r;i++)p[i]=x;
Set.insert(x);
}
printf("%lld",ans);
}
【NOIP模拟赛】就 反悔贪心的更多相关文章
- 10.17 NOIP模拟赛
目录 2018.10.17 NOIP模拟赛 A 咒语curse B 神光light(二分 DP) C 迷宫maze(次短路) 考试代码 B 2018.10.17 NOIP模拟赛 时间:1h15min( ...
- NOIP模拟赛-2018.11.7
NOIP模拟赛 如果用命令行编译程序可以发现没加头文件之类的错误. 如果用命令行编译程序可以发现没加头文件之类的错误. 如果用命令行编译程序可以发现没加头文件之类的错误. 编译之前另存一份,听说如果敲 ...
- 2016-06-19 NOIP模拟赛
2016-06-19 NOIP模拟赛 by coolyangzc 共3道题目,时间3小时 题目名 高级打字机 不等数列 经营与开发 源文件 type.cpp/c/pas num.cpp/c ...
- 【HHHOJ】NOIP模拟赛 玖 解题报告
点此进入比赛 得分: \(100+20+100=220\)(还不错) 排名: \(Rank\ 16\) \(Rating\):\(+20\) \(T1\):[HHHOJ263]「NOIP模拟赛 玖」三 ...
- NOIP模拟赛20161022
NOIP模拟赛2016-10-22 题目名 东风谷早苗 西行寺幽幽子 琪露诺 上白泽慧音 源文件 robot.cpp/c/pas spring.cpp/c/pas iceroad.cpp/c/pas ...
- contesthunter暑假NOIP模拟赛第一场题解
contesthunter暑假NOIP模拟赛#1题解: 第一题:杯具大派送 水题.枚举A,B的公约数即可. #include <algorithm> #include <cmath& ...
- NOIP模拟赛 by hzwer
2015年10月04日NOIP模拟赛 by hzwer (这是小奇=> 小奇挖矿2(mining) [题目背景] 小奇飞船的钻头开启了无限耐久+精准采集模式!这次它要将原矿运到泛光之源的矿 ...
- 大家AK杯 灰天飞雁NOIP模拟赛题解/数据/标程
数据 http://files.cnblogs.com/htfy/data.zip 简要题解 桌球碰撞 纯模拟,注意一开始就在袋口和v=0的情况.v和坐标可以是小数.为保险起见最好用extended/ ...
- 队爷的讲学计划 CH Round #59 - OrzCC杯NOIP模拟赛day1
题目:http://ch.ezoj.tk/contest/CH%20Round%20%2359%20-%20OrzCC杯NOIP模拟赛day1/队爷的讲学计划 题解:刚开始理解题意理解了好半天,然后发 ...
- 队爷的Au Plan CH Round #59 - OrzCC杯NOIP模拟赛day1
题目:http://ch.ezoj.tk/contest/CH%20Round%20%2359%20-%20OrzCC杯NOIP模拟赛day1/队爷的Au%20Plan 题解:看了题之后觉得肯定是DP ...
随机推荐
- phpstudy配置域名后apache无法启动
1.设置域名后重启 apache停止了 检查步骤1.php路径不要有中文,phpstudy重新安装在无中文路径 2.检查80端口是否被占用,如果被占用可以停止该程序或者修改apache/nginx 端 ...
- SSM框架搭建步骤
首先要导入相关的jar包(spring\spring-core\spring-jdbc\spring-aop\spring-context\spring-webmvc\junit\commons-la ...
- ruby File类
类方法 路径相关: File.basename(filename <, suffix>) -> string返回给定文件名 filename 的最后一部分.如果有 suffix 参数 ...
- 一笔画问题 南阳acm42(貌似没用到什么算法)
一笔画问题 时间限制:3000 ms | 内存限制:65535 KB 难度:4 描述 zyc从小就比较喜欢玩一些小游戏,其中就包括画一笔画,他想请你帮他写一个程序,判断一个图是否能够用一笔画下 ...
- 001---C/S架构
C/S 架构介绍 什么是C/S架构 C:client,客户端 S:server,服务端 实现客户端和服务端之间的网络通信 什么是网络 人与人之间交流是通过语言,才能彼此理解对方的意思.但是地球上有多个 ...
- iScroll实现下拉刷新上拉加载
前言 初学iscroll这个控件,给我的一个感觉还是蛮不错的. 什么是iScroll:是目前最成熟的自定义滚动解决方案之一,在移动端和PC有很好的兼容性.iScroll官方提供了5个不同的版本 isc ...
- node session会话
会话机制: 浏览器-->服务器 浏览器<--服务器 (产生一个会话id,保存在cookie中) 浏览器-->服务器(服务器根据会话id关联到相应数据信息体data) var expr ...
- Android面试收集录 数据库
1.SQLite数据库如何查询表table1的第20条到30条记录? select * from table1 limit 19,11 ==>从19开始,11个数据 2.如何才能将table ...
- javascript 自定义发布与订阅
//声明一个类,与普通的类的声明不一样, function Girl() { //将类的事件声明成一个私有的属性,里面是一个对象 this._events = {} } /* { "失恋&q ...
- JavaScript序列化对象成URL格式
http://access911.net/fixhtm/72FABF1E15DCEAF3.htm?tt=