BZOJ 2288: 【POJ Challenge】生日礼物 贪心 + 堆 + 链表
好像是模拟费用流
Code:
#include <bits/stdc++.h>
#define setIO(s) freopen(s".in","r",stdin)
#define P pair<int,int>
#define ll long long
#define maxn 100007
using namespace std;
int arr[maxn],l[maxn],r[maxn],mark[maxn];
priority_queue<P, vector<P>, greater<P> >q;
void del(int x) {
l[r[x]]=l[x], r[l[x]]=r[x];
mark[x]=1;
}
int main() {
// setIO("input");
int n,m,tmp=0,cnt=0;
scanf("%d%d",&n,&m);
for(int i=1;i<=n;++i) {
int x;
scanf("%d",&x);
if(!x) continue;
if(1ll*arr[tmp]*x>0) arr[tmp]+=x;
else arr[++tmp]=x;
}
n=tmp;
int sum=0;
for(int i=1;i<=n;++i) {
l[i]=i-1,r[i]=i+1;
if(arr[i] > 0) ++cnt, sum+=arr[i];
q.push(make_pair(abs(arr[i]), i));
}
while(cnt > m) {
while(mark[q.top().second]) q.pop();
int x=q.top().second; q.pop();
if((l[x]&&r[x]!=n+1) || arr[x] > 0) {
sum-=abs(arr[x]);
arr[x]+=arr[l[x]] + arr[r[x]];
del(l[x]), del(r[x]);
--cnt;
q.push(make_pair(abs(arr[x]), x));
}
else del(x);
}
printf("%d\n",sum);
return 0;
}
BZOJ 2288: 【POJ Challenge】生日礼物 贪心 + 堆 + 链表的更多相关文章
- BZOJ_2151_种树_贪心+堆+链表
		BZOJ_2151_种树_贪心+堆 Description A城市有一个巨大的圆形广场,为了绿化环境和净化空气,市政府决定沿圆形广场外圈种一圈树.园林部门得到指令后,初步规划出n个种树的位置,顺时针编 ... 
- BZOJ3502PA2012Tanie linie&BZOJ2288[POJ Challenge]生日礼物——模拟费用流+链表+堆
		题目描述 n个数字,求不相交的总和最大的最多k个连续子序列. 1<= k<= N<= 1000000. 输入 输出 样例输入 5 2 7 -3 4 -9 5 样例输出 13 根据 ... 
- BZOJ2288 【POJ Challenge】生日礼物  【堆 + 链表】
		题目 ftiasch 18岁生日的时候,lqp18_31给她看了一个神奇的序列 A1, A2, ..., AN. 她被允许选择不超过 M 个连续的部分作为自己的生日礼物. 自然地,ftiasch想要知 ... 
- [bzoj2288][pojChallenge]生日礼物【贪心+堆+链表】
		题目描述 ftiasch 18岁生日的时候,lqp18_31给她看了一个神奇的序列 A1, A2, -, AN. 她被允许选择不超过 M 个连续的部分作为自己的生日礼物. 自然地,ftiasch想要知 ... 
- BZOJ2288:[POJ Challenge]生日礼物——题解
		https://www.lydsy.com/JudgeOnline/problem.php?id=2288 ftiasch 18岁生日的时候,lqp18_31给她看了一个神奇的序列 A1, A2, . ... 
- [bzoj2288][POJ Challenge]生日礼物
		用堆维护双向链表来贪心... 数据范围显然不容许O(nm)的傻逼dp>_<..而且dp光是状态就n*m个了..显然没法优化 大概就会想到贪心乱搞了吧...一开始想贪心地通过几段小的负数把正 ... 
- BZOJ.2006.[NOI2010]超级钢琴(贪心 堆)
		BZOJ 洛谷 思路和BZOJ3784一样,用前缀和+堆维护.做那题吧,不赘述啦. (没错我就是水一个AC) //54620kb 1060ms #include <queue> #incl ... 
- BZOJ 1029 JSOI2007 建筑抢修 贪心+堆
		题目大意:n个建筑须要抢修.第i个建筑须要T1时间抢修.必须在T2时间之前抢修完成.求最多能抢修多少建筑 首先我们对T2排序 然后依次修理 可是这样贪心显然是不对的 比方说这组数据: 5 10 10 ... 
- BZOJ2288:[POJ Challenge]生日礼物
		浅谈堆:https://www.cnblogs.com/AKMer/p/10284629.html 题目传送门:https://lydsy.com/JudgeOnline/problem.php?id ... 
随机推荐
- 应用安全 - Web框架 - 数据库管理 - phpMyAdmin - 漏洞汇总
			CVE-2019-18622 Date: 2019.10.28 类型: SQL injection in Designer feature 影响范围: phpMyAdmin versions prio ... 
- Redis的 SLAVEOF 命令
			SLAVEOF host port SLAVEOF 命令用于在 Redis 运行时动态地修改复制(replication)功能的行为. 通过执行 SLAVEOF host port 命令,可以将当前服 ... 
- mysql: show full processlist 详解
			show full processlist 是显示用户正在运行的线程,需要注意的是,除了 root 用户能看到所有正在运行的线程外,其他用户都只能看到自己正在运行的线程,看不到其它用户正在运行的线程. ... 
- docker之配置TensorFlow的运行环境
			Docker是一种 操作系统层面的虚拟化技术,类似于传统的虚拟机.传统虚拟机技术是虚拟出一套硬件后,在其上运行一个完整操作系统,在该系统上再运行所需应用进程:而容器内的应用进程直接运行于宿主的内核,容 ... 
- [Web 前端] 022 js 的基本数据类型及使用
			1. Javascript 基本数据类型 1.1 分类 类型 释义 boolean 布尔类型,分 true 与 false number 整型,浮点型 string 字符类型 object 对象类型 ... 
- windows下重启nginx
			参考:从零学nginx-windows下reload配置无效及如何重启 因为Nginx是多进程模型,有一个主进程和多个子进程,主进程只负责管理子进程,基本的网络事件由各个子进程处理. 所以有时候当我们 ... 
- HNUSTOJ-1520 压缩编码
			1520: 压缩编码 时间限制: 1 Sec 内存限制: 2 MB提交: 107 解决: 54[提交][状态][讨论版] 题目描述 某工业监控设备不断发回采样数据.每个数据是一个整数(0到1000 ... 
- getchar、putchar、puts、gets
			getchar(字符) 输入获取一个字符 putchar(字符) 输出控制台一个字符 scanf()格式化输入 printf() 格式化输出 gets(arr) 输入一个字符串给已经声明的数组ar ... 
- vscode学习(三)之如何修改打开终端的默认shell
			实现 第一步:打开VSCode的设置(Preferences>User Settings) 第二步:搜索terminal.integrated.shell.osx 的 并把它的值改为你的zsh安 ... 
- UIAlertView, UIAlertViewController
			iOS 8的新特性之一就是让接口更有适应性.更灵活,因此许多视图控制器的实现方式发生了巨大的变化.全新的UIPresentationController 在实现视图控制器间的过渡动画效果和自适应设备尺 ... 
