两个序列求前k大和
---恢复内容开始---
没有题目,没有题意,这是学长提过的一个技巧,给你两个排好序的序列,每次可以各从中取一个,求前k大的和,
一个优先队列,先将a序列中最大的那个和b序列所有元素相加存进队列中,每次弹出最大的那个时(ai,bj),把(ai+1,bj)存进去,就行了;
#include<iostream>
#include<algorithm>
#include<queue>
using namespace std;
struct node
{
int sum;
int x;
int y;
friend bool operator<(node a,node b)
{
return a.sum<b.sum;
}
}temp,ans;
int main()
{
int s=0;
priority_queue<node> q;
int n,k;
int m;
int a[20];
int b[20];
cin>>n>>m>>k;
for(int i=1;i<=n;i++)
cin>>a[i];
for(int i=1;i<=m;i++)
cin>>b[i];
sort(a+1,a+1+n);
sort(b+1,b+1+m);
for(int i=1;i<=m;i++)
{
temp.sum=a[n]+b[i];
temp.x=n;
temp.y=i;
q.push(temp);
}
int cnt=0;
while(!q.empty())
{
cnt++;
if(cnt>k)
break;
ans=q.top();
s+=ans.sum;
temp.x=ans.x-1;
temp.y=ans.y;
temp.sum=a[ans.x-1]+b[ans.y];
q.pop();
q.push(temp);
}
cout<<s<<endl;
return 0;
}
最新文章
- javascript(脚本语言)
- NEST.net Client For Elasticsearch简单应用
- eclipse安装插件的各种方法
- 【JavaScript DOM编程艺术(第二版)】笔记
- gulp自己主动化任务脚本在HybridApp开发中的使用
- 09.13随笔2014年9月13日22:32:38,奶爸的英语教室,groovy
- IOC(控制反转)与DI(依赖注入)的个人理解。
- C++中的namespace
- Jenkins job之间依赖关系配置(联动构建)
- Nginx(三)------nginx 反向代理
- 爬虫---爬虫er与反爬虫er之间的斗争 转发
- mysql 5.5数据库主从配置步骤详解
- access数据库收缩(压缩)
- SVN相关命令
- Go语言小试牛刀---几个简单的例子
- spring框架(1)— 依赖注入
- 【题解】CF#960 H-Santa&#39;s Gift
- 【hihocoder】三十九周:二分.归并排序之逆序对
- 2018.11.21 struts2获得servletAPI方式及如何获得参数
- Spring MVC 学习笔记 spring mvc Schema-based configuration