Atcoder 2566 3N Numbers(优先队列优化DP)
問題文
N を 1 以上の整数とします。
長さ 3N の数列 a=(a1,a2,…,a3N) があります。 すぬけ君は、a からちょうど N 個の要素を取り除き、残った 2N 個の要素を元の順序で並べ、長さ 2N の数列 a' を作ろうとしています。 このとき、a' のスコアを (a'の前半N要素の総和)−(a'の後半N要素の総和) と定義します。
a' のスコアの最大値を求めてください。
制約
1≤N≤105
ai は整数である。
1≤ai≤109
部分点
300 点分のテストケースでは、N≤1,000 が成り立つ。
入力
入力は以下の形式で標準入力から与えられる。
N
a1 a2 … a3N
出力
a' のスコアの最大値を出力せよ。
入力例 1
Copy
2
3 1 4 1 5 9
出力例 1
Copy
1
a2, a6 を取り除くと、a'=(3,4,1,5) となり、スコアは (3+4)−(1+5)=1 となります。
入力例 2
Copy
1
1 2 3
出力例 2
Copy
-1
例えば、a1 を取り除くと、a'=(2,3) となり、スコアは 2−3=−1 となります。
入力例 3
Copy
3
8 2 2 7 4 6 5 3 8
出力例 3
Copy
5
例えば、a2, a3, a9 を取り除くと、a'=(8,7,4,6,5,3) となり、スコアは (8+7+4)−(6+5+3)=5 となります。
题意: 给出3n个数,让你去掉n个数,使剩下的前n个数的和减去后n个数的和的差最大,求这个差
题解:很容易可以写出O(n^3)的状态转移方程,然后考虑优化,可以用优先队列把O(n^2)压缩成O(logn)的,详情见代码
代码如下:
#include<cmath>
#include<queue>
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#define mod 1000000007
using namespace std; int n;
long long dp1[],dp2[],a[],sum1,sum2; priority_queue<long long,vector<long long>,greater<long long> > q;
priority_queue<long long> q2; int main()
{
//fuck!!!
scanf("%d",&n);
memset(dp1,,sizeof(dp1));
memset(dp2,0x3f,sizeof(dp2));
for(int i=;i<=*n;i++)
{
scanf("%lld",&a[i]);
}
for(int i=;i<=n;i++)
{
q.push(a[i]);
sum1+=a[i];
}
dp1[n]=sum1;
for(int i=n+;i<=*n;i++)
{
if(q.top()<a[i])
{
sum1-=q.top();
sum1+=a[i];
q.pop();
q.push(a[i]);
}
dp1[i]=sum1;
}
for(int i=*n;i>*n;i--)
{
q2.push(a[i]);
sum2+=a[i];
}
dp2[*n+]=sum2;
for(int i=*n;i>=;i--)
{
if(q2.top()>a[i])
{
sum2-=q2.top();
sum2+=a[i];
q2.pop();
q2.push(a[i]);
}
dp2[i]=sum2;
}
long long ans=-0x3f3f3f3f3f3f3f3f;
for(int i=n;i<=*n;i++)
{
ans=max(ans,dp1[i]-dp2[i+]);
}
printf("%lld\n",ans);
}
Atcoder 2566 3N Numbers(优先队列优化DP)的更多相关文章
- ZOJ 3632 K - Watermelon Full of Water 优先队列优化DP
K - Watermelon Full of Water Time Limit:3000MS Memory Limit:65536KB 64bit IO Format:%lld &am ...
- Atcoder D - 3N Numbers(优先队列+dp)
题目链接:http://abc062.contest.atcoder.jp/tasks/arc074_b 题意:给出3*n个数要求去掉n个数使得剩下的前n个数-后n个数的差最大. 题解:显然是一道如果 ...
- XJOI3602 邓哲也的矩阵(优先队列优化DP)
题目描述: 有一个 n×m的矩阵,现在准备对矩阵进行k次操作,每次操作可以二选一 1: 选择一行,给这一行的每一个数减去p,这种操作会得到的快乐值等于操作之前这一行的和 2: 选择一列,给这一列的每一 ...
- HDU 3045 Picnic Cows(斜率优化DP)
Picnic Cows Time Limit: 8000/4000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Tota ...
- Parade(单调队列优化dp)
题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=2490 Parade Time Limit: 4000/2000 MS (Java/Others) ...
- 3N Numbers
D - 3N Numbers Time limit : 2sec / Memory limit : 256MB Score : 500 points Problem Statement Let N b ...
- POJ 1511 Invitation Cards(单源最短路,优先队列优化的Dijkstra)
Invitation Cards Time Limit: 8000MS Memory Limit: 262144K Total Submissions: 16178 Accepted: 526 ...
- hdu3507Print Article(斜率优化dp)
Print Article Time Limit: 9000/3000 MS (Java/Others) Memory Limit: 131072/65536 K (Java/Others)To ...
- bzoj-4518 4518: [Sdoi2016]征途(斜率优化dp)
题目链接: 4518: [Sdoi2016]征途 Description Pine开始了从S地到T地的征途. 从S地到T地的路可以划分成n段,相邻两段路的分界点设有休息站. Pine计划用m天到达T地 ...
随机推荐
- Tkinter Cursors
Tkinter Cursors: Python的Tkinter的支持很多不同的鼠标光标的数字.确切的图形可能会有所不同,根据您的操作系统. 这里是大量有趣的的名单: "arrow&q ...
- [z]单次遍历带权随机选取
http://www.gocalf.com/blog/weighted-random-selection.html 没事可以看看,这个博客里面很多文章不错
- 「小程序JAVA实战」小程序的基础组件(24)
转自:https://idig8.com/2018/08/12/xiaochengxu-chuji-24/ 来说下 ,小程序的基础组件.源码:https://github.com/limingios/ ...
- 设置VS2010和IE8 调试ATL控件<转>
VS2010设置篇: 设置VS2010 通过IE8 调试ATL的ActiveX控件的步骤如下: 设置项目属性 在项目的属性页对话框中选中“配置属性—>调试”,在右边填入下列参数: 命令 ...
- mysql 锁 事务隔离级别
主题 最近在看mysql相关的书籍.实验了一些内容.分享一下,主要是关于事务隔离级别(read-committed和repeatable-read)和锁相关的. 很多网上文章上都能搜索到 read-c ...
- @JsonIgnore
@JsonIgnore 避免取JSON对象时无限递归的问题,过滤掉一些不需要的属性,说明createdDate这个属性不需要转成json,放到getter方法前生效
- 大神的---解决tomcat内存溢出问题----tomcat报错:This is very likely to create a memory leak问题解决
tomcat memory leak解决方案 这种问题在开发中经常会碰到的,看看前辈的总结经验 Tomcat内存溢出的原因 在生产环境中tomcat内存设置不好很容易出现内存溢出.造成内存溢出是不一 ...
- pip 18.1 官方文档翻译
快速开始 从pypi上安装一个包 $ pip install SomePackage 查看安装的包里面包含什么文件 pip show --files SomePackage 查看已经安装的包里面哪些是 ...
- python 中类的初始化过程
首先元类中的__new__被调用 所有使用该元类的类都会调用一次,不管其有没有初始化,所以元类__new__的作用是修改/验证类的定义 返回的是一个元类的实例,即一个类的定义 元类的__init__由 ...
- 保持在Div 底部的方法
<!DOCTYPE> <html> <head> <meta http-equiv="content-type" content=&quo ...