国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 學(xué)院 > 開(kāi)發(fā)設(shè)計(jì) > 正文

uva 11997 K Smallest Sums

2019-11-11 03:11:10
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

原題: You’re given k arrays, each array has k integers. There are k k ways to pick exactly one element in each array and calculate the sum of the integers. Your task is to find the k smallest sums among them. Input There will be several test cases. The first line of each case contains an integer k (2 ≤ k ≤ 750). Each of the following k lines contains k positive integers in each array. Each of these integers does not exceed 1,000,000. The input is terminated by end-of-file (EOF). Output For each test case, PRint the k smallest sums, in ascending order. Sample Input 3 1 8 5 9 2 5 10 7 6 2 1 1 1 2 Sample Output 9 10 12 2 2

中文: 給你k個(gè)數(shù)組,每個(gè)數(shù)組有k個(gè)數(shù)。現(xiàn)在問(wèn)你每個(gè)數(shù)組中取一個(gè)數(shù)加一起求和,那么最小的前k個(gè)是多少?

#include <bits/stdc++.h>using namespace std;int k;vector<int> v[751],ans;struct item{ int s,b; item(int s,int b):s(s),b(b){} bool Operator < (const item &rhs) const { return s>rhs.s; }};void ini(){ for(int i=1;i<=k;i++) v[i].clear();}void Merge(vector<int> tmp){ priority_queue<item> pq; for(int i=0;i<ans.size();i++) pq.push(item(ans[i]+tmp[0],0)); for(int i=0;i<k;i++) { item t=pq.top(); pq.pop(); ans[i]=t.s; int b=t.b; if(b+1<k) pq.push(item(t.s-tmp[b]+tmp[b+1],b+1)); }}int main(){ ios::sync_with_stdio(false); while(cin>>k) { ini(); for(int i=1;i<=k;i++) { for(int j=1;j<=k;j++) { int res; cin>>res; v[i].push_back(res); } sort(v[i].begin(),v[i].end()); } ans=v[1]; for(int i=2;i<=k;i++) Merge(v[i]); for(int i=0;i<ans.size();i++) if(i!=ans.size()-1) cout<<ans[i]<<" "; else cout<<ans[i]<<endl; } return 0;}

思路: 訓(xùn)練指南中的例題,想了一會(huì)沒(méi)思路,直接看的答案。想法很巧妙。 假設(shè)有兩個(gè)數(shù)組求前k個(gè)和最小保存在ans當(dāng)中,現(xiàn)在有第三個(gè)數(shù)組,那么三個(gè)數(shù)組的和的最小值就是把當(dāng)前保存的前k個(gè)最小值加上第三個(gè)數(shù)組當(dāng)中的k個(gè)值即可。 用優(yōu)先隊(duì)列維護(hù)前k個(gè)最小值,然后用遞推的思想每次算出加上第三個(gè)數(shù)組中第i個(gè)值的和即可。


發(fā)表評(píng)論 共有條評(píng)論
用戶(hù)名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 象山县| 攀枝花市| 资溪县| 盈江县| 繁峙县| 武鸣县| 宁河县| 思茅市| 息烽县| 广宗县| 顺平县| 洞口县| 民丰县| 宁陕县| 定安县| 永德县| 睢宁县| 策勒县| 邹城市| 杭州市| 醴陵市| 东港市| 江陵县| 泸州市| 绥滨县| 璧山县| 阜康市| 南郑县| 尖扎县| 灵寿县| 南川市| 林口县| 石屏县| 新野县| 宝清县| 庆安县| 桃园市| 左贡县| 城市| 阿克苏市| 新民市|