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

题意:给出3*n个数要求去掉n个数使得剩下的前n个数-后n个数的差最大。

题解:显然是一道如果数据小直接dpf[i][j]表示前i个取j个最大是多少,dpe[i][j]后i个取j个最小是多少。

显然转移也是很明显的dpf[i][j]=max(dpf[i][j],dpf[i-1][j-1]+a[i]),dpe[i][j]=min(dpe[i][j],dpe[i+1][j-1]+a[i]);

但是数据有100000不能这么存但是依旧是dp

dpf[i]表示前i个取n个最大是多少,dpe[i]表示后i个取n个最小是多少,然后用优先队列维护一下。

#include <iostream>
#include <cstring>
#include <queue>
#include <cstdio>
using namespace std;
const int M = 3e5 + 10;
typedef long long ll;
int a[M];
struct cmp1 {
int x;
cmp1(int x):x(x) {}
bool operator < (const cmp1 &a) const {
return x > a.x;
}
};
struct cmp2 {
int x;
cmp2(int x):x(x) {}
bool operator < (const cmp2 &a) const {
return x < a.x;
}
};
ll dpf[M] , dpe[M];
int main() {
int n;
scanf("%d" , &n);
for(int i = 1 ; i <= 3 * n ; i++) {
scanf("%d" , &a[i]);
}
priority_queue<cmp1> st;
memset(dpf , 0 , sizeof(dpf));
memset(dpe , 0 , sizeof(dpe));
for(int i = 1 ; i <= n ; i++) {
st.push(cmp1(a[i]));
dpf[n] += (ll)a[i];
}
for(int i = n + 1 ; i <= 2 * n ; i++) {
int gg = st.top().x;
if(gg < a[i]) {st.pop() , st.push(cmp1(a[i])) , dpf[i] = dpf[i - 1] - (ll)gg + (ll)a[i];}
else dpf[i] = dpf[i - 1];
}
priority_queue<cmp2> ed;
for(int i = 2 * n + 1 ; i <= 3 * n ; i++) {
ed.push(cmp2(a[i]));
dpe[2 * n + 1] += (ll)a[i];
}
for(int i = 2 * n ; i >= n ; i--) {
int gg = ed.top().x;
if(gg > a[i]) {ed.pop() , ed.push(cmp2(a[i])) , dpe[i] = dpe[i + 1] - (ll)gg + (ll)a[i];}
else dpe[i] = dpe[i + 1];
}
ll ans = -10000000000000000;
for(int i = n ; i <= 2 * n ; i++) {
ans = max(ans , dpf[i] - dpe[i + 1]);
}
printf("%lld\n" , ans);
return 0;
}

Atcoder D - 3N Numbers(优先队列+dp)的更多相关文章

  1. Atcoder 2566 3N Numbers(优先队列优化DP)

    問題文N を 1 以上の整数とします. 長さ 3N の数列 a=(a1,a2,…,a3N) があります. すぬけ君は.a からちょうど N 個の要素を取り除き.残った 2N 個の要素を元の順序で並べ. ...

  2. 3N Numbers

    D - 3N Numbers Time limit : 2sec / Memory limit : 256MB Score : 500 points Problem Statement Let N b ...

  3. UVA.136 Ugly Numbers (优先队列)

    UVA.136 Ugly Numbers (优先队列) 题意分析 如果一个数字是2,3,5的倍数,那么他就叫做丑数,规定1也是丑数,现在求解第1500个丑数是多少. 既然某数字2,3,5倍均是丑数,且 ...

  4. 2018 ACM 国际大学生程序设计竞赛上海大都会赛重现赛 J Beautiful Numbers (数位DP)

    2018 ACM 国际大学生程序设计竞赛上海大都会赛重现赛 J Beautiful Numbers (数位DP) 链接:https://ac.nowcoder.com/acm/contest/163/ ...

  5. Gym 100703G---Game of numbers(DP)

    题目链接 http://vjudge.net/contest/132391#problem/G Description standard input/outputStatements — It' s ...

  6. codeforces 55D - Beautiful numbers(数位DP+离散化)

    D. Beautiful numbers time limit per test 4 seconds memory limit per test 256 megabytes input standar ...

  7. POJ1338Ugly Numbers(DP)

    http://poj.org/problem?id=1338 第一反应就是DP,DP[i] = min{2*DP[j], 3*DP[k], 5*DP[p] j,k,p<i};于是枚举一下0-i- ...

  8. Codeforces Beta Round #51 D. Beautiful numbers 数位dp

    D. Beautiful numbers Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/55/p ...

  9. spoj Balanced Numbers(数位dp)

    一个数字是Balanced Numbers,当且仅当组成这个数字的数,奇数出现偶数次,偶数出现奇数次 一下子就相到了三进制状压,数组开小了,一直wa,都不报re, 使用记忆化搜索,dp[i][s] 表 ...

随机推荐

  1. Java:控制反转(IoC)与依赖注入(DI)

    很长一段时间里,我对控制反转和依赖注入这两个概念很模糊,闭上眼睛想一想,总有一种眩晕的感觉.但为了成为一名优秀的 Java 工程师,我花了一周的时间,彻底把它们搞清楚了. 01.紧耦合 在我们编码的过 ...

  2. gcd, exgcd的证明

  3. UEM“探针”技术及用户体验管理

    随着互联网产品越来越多,用户群体越来越庞大以及用户品位的多样性增加,我们会发现这样的一个规律,就是相同类型的产品,比如播放器中的QQ影音和暴风影音,再比如小游戏平台中的腾讯游戏和联众等等,他们的功能是 ...

  4. Python Iterator and Generator

    Python Iterator and Generator Iterator ​ 迭代器(Iterator)和可迭代对象(Iterable)往往是绑定的.可迭代对象就是我们平时经常用的list ,st ...

  5. Element UI系列:Upload图片自定义上传

    HTML部分代码 Javascript部分代码 CSS代码 样式部分可以自由调整 主要实现的原理是利用 http-request 的属性对上传进行自定义

  6. 第一次接触Linux

    一:文件目录操作命令 (一)创建文件           vim  文件名           按i进入插入模式           写完文件后,先按Esc,           再输入     :w ...

  7. python相关,各种命令集合

    PS: cmd必须管理员身份运行 python版本 2.7  可能会出现编码问题:在 Lib/site-packages 新建文件 sitecustomize.py import sys  sys.s ...

  8. poj3415_Common Substrings

    题意 给定两个字符串,求长度大于等于k的公共子串数. 分析 将两个字符串中间加个特殊字符拼接,跑后缀数组. 将题目转化为对每一个后缀求\(\sum_{j=1}^{i-1}lcp(i,j)\),且后缀\ ...

  9. SecureCRT软件的个性化设置

    工欲善其事,必先利其器.如果我们能花点时间把每天工作都要用到的SecureCRT软件设置的舒服一些,日后工作起来也是会心情愉悦.事半功倍的. 1.日志文件设置 2.窗口配色和关键字高亮 3.效果展示 ...

  10. 【MySQL】索引

    什么是索引 索引就好比是书的目录,可以显著提高数据库查询的效率.例如像一本很厚的书,在没有目录的情况下要查到你想要看的知识点,都不知要找到什么时候,但通过目录我们可以很快的查询到对应的内容. 索引的数 ...