题目链接:http://abc062.contest.atcoder.jp/tasks/arc074_b

题意:从3*n个元素中删除n个元素,使得剩余元素中前n个元素的和减后n个元素的和最大;

思路:用b[i]存储前i个元素中选 n 个元素和能达到的最大值,c[i+1]存储后i个元素中选择 n 个元素能达到的最小值;

然后再遍历一次,取 max (b[i]-c[i+1]) 即为答案;

代码:

 #include <iostream>
#include <stdio.h>
#include <queue>
#define ll long long
using namespace std; const int MAXN = 3e5+;
const ll inf = 0x3f3f3f3f3f3f3f3f;
ll a[MAXN], b[MAXN], c[MAXN]; int main(void){
int n;
ll cnt1=inf, cnt2=-inf, ans1=, ans2=, ans=-inf;
scanf("%d", &n);
for(int i=; i<=*n; i++){
scanf("%lld", &a[i]);
}
priority_queue<ll, vector<ll>, greater<ll> > q1;
for(int i=; i<=*n; i++){
if(i <= n){
q1.push(a[i]);
ans1 += a[i];
b[i] = ans1;
continue;
}
ll cnt = q1.top();
if(cnt < a[i]){
q1.pop();
q1.push(a[i]);
ans1 -= cnt;
ans1 += a[i];
}
b[i] = ans1;
}
priority_queue<ll, vector<ll>, less<ll> > q2;
for(int i=*n; i>n; i--){
if(i > *n){
q2.push(a[i]);
ans2 += a[i];
c[i] = ans2;
continue;
}
ll cnt = q2.top();
if(cnt > a[i]){
q2.pop();
q2.push(a[i]);
ans2 -= cnt;
ans2 += a[i];
}
c[i] = ans2;
}
for(int i=n; i<=*n; i++){
ans = max(ans, b[i]-c[i+]);
}
cout << ans << endl;
return ;
}

atcode062D(预处理&优先队列)的更多相关文章

  1. ZOJ 3888 Twelves Monkeys (预处理+优先队列)

    题目链接:ZOJ 3888 Twelves Monkeys 题意:题目描写叙述起来比較绕,直接讲案例 9 3 3 9 1 6 1 4 1 6 7 2 输入n,m,q.n限制了你询问的年份,m台时光机, ...

  2. hihoCoder 1391 Countries【预处理+排序+优先队列】2016北京网络赛

    题目:http://hihocoder.com/problemset/problem/1391 题目大意: A和B两个国家互射导弹,每个国家都有一个防御系统,在防御系统开启的时间内可以将到达本国的导弹 ...

  3. 2015baidu复赛2 连接的管道(mst && 优先队列prim)

    连接的管道 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submi ...

  4. HDU 1430 魔板(康托展开+BFS+预处理)

    魔板 Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submis ...

  5. hdu 1142 用优先队列实现Dijkstra

    之前很认真地看了用优先队列来实现Dijkstra这块,借鉴了小白书上的代码模板后,便拿这道题来试试水了.这道题的大意就是问你从地点1到地点2有多少条满足条件的路径(假设该路径经过 1->...- ...

  6. hdu1058丑数(优先队列、暴力打表)

    hdu1058 题意:当一个数只有2.3.5.7这四种质因数时(也可以一种都没有或只有其中几种),这个数就是丑数,输出第 n 个丑数是多少: 其实并没有发现hdu把这道题放在 dp 专题里的意图,我的 ...

  7. Problem 1016 咒文卷轴 优先队列+前缀和+rmq

    题目链接: 题目 Problem 1016 咒文卷轴 Time Limit: 3000 mSec Memory Limit : 131072 KB 问题描述 小Y 是一个魔法师,有一天他获得了一卷神秘 ...

  8. codeforce447 D SGU 548 贪心+优先队列

    codeforce447 D - DZY Loves Modification 题意:有一个n*m的矩阵,每次可以选择一行或者一列,可以得到这行或这列的所有元素sum的积分,然后使这一列/行的每一个元 ...

  9. hihoCoder 1391 Countries 【预处理+排序+堆】 (ACM-ICPC国际大学生程序设计竞赛北京赛区(2016)网络赛)

    #1391 : Countries 时间限制:1000ms 单点时限:1000ms 内存限制:256MB 描述 There are two antagonistic countries, countr ...

随机推荐

  1. YTST_CX_0001(ALV栏位汇总)

    *********************************************************************** * Title           : X        ...

  2. spring 获取bean的几种方式

    1.读取xml文件的方式,这种在初学入门的时候比较适用 . ApplicationContext applicationContext = new ClassPathXmlApplicationCon ...

  3. spring-boot5

    Spring Boot集成MyBatis: (1)新建maven project;取名为:spring-boot-mybatis (2)在pom.xml文件中引入相关依赖: (3)创建启动类App.j ...

  4. POJ3693 Maximum repetition substring —— 后缀数组 重复次数最多的连续重复子串

    题目链接:https://vjudge.net/problem/POJ-3693 Maximum repetition substring Time Limit: 1000MS   Memory Li ...

  5. Hadoop- 集群时间同步

    集群的时间要同步 * 找一台机器 时间服务器 * 所有的机器与这台机器时间进行定时的同步 比如,每日十分钟,同步一次时间 # rpm -qa|grep ntp # vi /etc/ntp.conf # ...

  6. POJ 3071 Football:概率dp

    题目链接:http://poj.org/problem?id=3071 题意: 给定n,有2^n支队伍参加足球赛. 给你所有的p[i][j],表示队伍i打败队伍j的概率. 淘汰赛制.第一轮(1,2)两 ...

  7. Java丨springMVC + Ajax 来进行分页

    javaweb 分页技术 实现的方式有很多种,但是小编在网上问了度娘也问了谷老师,得到的答案让小编我不是很满意,so,还是自己写吧! 在小编的博文中,小编不会上传源码,只会把重要的代码和思路供大家参考 ...

  8. listen 58

    Different Brain Regions Handle Different Music Types (Vivaldi) versus (the Beatles) . Both great. Bu ...

  9. Linux User

    1.用户的工作目录,在/etc/passwd中查看 2.如果shell=bin/false(正常为bin/bash)代表禁止登录,这样就无法登录以及通过su进行切换: 3.修改,usermod -d ...

  10. mysql错误-修改mysql.sock位置

    在Mysql下有时候会出现mysql.sock位置错误,导致无法链接数据库. mac下报错的时候: 首先修改my.cnf 位置在/etc/my.cnf下,假如没有的话,去/usr/locate/mys ...