一道例题
来源:互联网 发布:qq农场运输机数据 编辑:程序博客网 时间:2024/05/29 18:53
题目:
有 2 个整数数组(A 和 B),各包含 N 个元素。在每个数组中取一个元素加起来,就可以得到 N^2 个和。求这些和中最小的 N 个值。
思路:
1.暴力:O(n^2);
2.开个堆,O(nlogn);
#include<iostream>#include<cstring>#include<algorithm>#include<cstdio>#include<queue>;using namespace std;const int MAXN=200001;int a[MAXN],b[MAXN],c[MAXN];int n;struct hh{ int sum,num;};bool operator < (hh a,hh b){ return a.sum > b.sum;}priority_queue<hh>q;void solve(){ scanf("%d",&n); for(int i=1;i<=n;i++) scanf("%d",&a[i]); for(int i=1;i<=n;i++) scanf("%d",&b[i]); sort(a+1,a+n+1),sort(b+1,b+n+1); for(int i=1;i<=n;i++) q.push({a[i]+b[1],1}); for(int i=1;i<=n;i++) { hh x=q.top(); q.pop(),c[i]=x.sum; if(x.num+1<=n) q.push({c[i]-b[x.num]+b[x.num+1],x.num+1});//c[i]=a[?]+b[x.num]; } for(int i=1;i<=n;i++) printf("%d ",c[i]); return;}int main(){ solve(); return 0;}
阅读全文
1 0
- 一道例题
- 一道循环队列例题
- 例题3.2 一道简单题 UVa11991
- C语言小例题一道转载
- C语言一道初级小例题转载
- 一道Google top coder的850分例题及解答
- 一道Google top coder的850分例题及解答
- 一道Google top coder的850分例题及解答
- 一道Google top coder的850分例题及解答
- 一道Google top coder的850分例题及解答
- 一道Google top coder的850分例题及解答
- 一道Google top coder的850分例题及解答
- 一道Google top coder的850分例题及解答
- 一道Google top coder的850分例题及解答
- 一道Google top coder的850分例题及解答
- 一道Google top coder的850分例题及解答
- 一道Google top coder的850分例题及解答
- 一道Google top coder的850分例题及解答
- Python 4)面向对象的进一步拓展
- 11进程与线程
- UOJ 148/bzoj 1650(二分)(NOIP 2015)
- 010day(学习用freopen重定向输入和循环例题的练习)
- HDU
- 一道例题
- 黑客基础知识<百度文库>
- ImageLoader原理分析
- 洛谷 P2574 XOR的艺术
- 登陆验证码的实现
- 657. Judge Route Circle
- 投掷模板
- IllegalArgumentException in class: domain.User, setter method of property: birthda
- NOIP 模拟10.20