博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
UVA.11997- K Smallest Sums, OJ4TH.368 - Magry's Sum I
阅读量:5360 次
发布时间:2019-06-15

本文共 1907 字,大约阅读时间需要 6 分钟。

感谢算法助教们给了这么一个好题...

题意:

给出n个数组,每个数组有n个元素,我们从每个数组中挑选一个元素,共计n个元素求和,得到共计 $ k^k $ 种sum,求sum中的最小n个值。

 

  1. 利用二分查找符合条件的最大sum值,dfs搜索判断二分条件。最坏时间复杂度 $O(n^{2}log(n*Max(a[i][j])) $
  2. 刘汝佳训练指南上给出了优先队列多路归并的思想。

思路1代码:

1 #include
2 #include
3 #include
4 #include
5 using namespace std; 6 7 int a[751][751]; 8 int pos[751]; 9 int n;10 int mid;11 int sum;12 int ans[1000];13 int cnt = 0;14 void dfs(int i)15 {16 if (sum > mid) return;17 ans[cnt ++] = sum;18 if (cnt > n) {19 return;20 }21 for (i; i < n && cnt < n; i ++)22 {23 if (pos[i] == n - 1) continue;24 25 ++pos[i];26 sum += a[i][ pos[i] ] - a[i][ pos[i] - 1 ];27 dfs(i);28 sum -= a[i][ pos[i] ] - a[i][ pos[i] - 1 ];29 --pos[i];30 }31 }32 33 int main()34 {35 while(~scanf("%d",&n))36 {37 for (int i = 0; i < n; i++)38 for (int j = 0; j < n; j++)39 scanf("%d",&a[i][j]);40 41 for (int i = 0; i < n; i++)42 sort(a[i],a[i] + n);43 44 memset(pos,0,sizeof pos);45 int l = -1, r = n*1000000;46 while(r-l > 1)47 {48 sum = 0;49 for (int i = 0; i < n; i++)50 sum += a[i][0];51 52 cnt = 0;53 mid = (l+r) / 2;54 dfs(0);55 if (cnt >= n) r = mid;56 else l = mid;57 }58 cnt = 0;59 sum = 0;60 for (int i = 0; i < n; i++)61 sum += a[i][0];62 63 mid = r - 1;64 dfs(0);65 sort(ans,ans+cnt);66 for (int i = 0; i < cnt; i++)67 printf("%d ",ans[i]);68 for (int i = cnt; i < n-1; i++)69 printf("%d ",r);70 printf("%d\n",r);71 }72 }
View Code

 

思路2代码留坑

转载于:https://www.cnblogs.com/zjc-Connor/p/5953808.html

你可能感兴趣的文章
Python环境搭建(安装、验证与卸载)
查看>>
一个.NET通用JSON解析/构建类的实现(c#)
查看>>
如何辨别一个程序员的水平高低?是靠发量吗?
查看>>
linux的子进程调用exec( )系列函数
查看>>
MySQLdb & pymsql
查看>>
zju 2744 回文字符 hdu 1544
查看>>
【luogu P2298 Mzc和男家丁的游戏】 题解
查看>>
前端笔记-bom
查看>>
上海淮海中路上苹果旗舰店门口欲砸一台IMAC电脑维权
查看>>
Google透露Android Market恶意程序扫描服务
查看>>
给mysql数据库字段值拼接前缀或后缀。 concat()函数
查看>>
迷宫问题
查看>>
【FZSZ2017暑假提高组Day9】猜数游戏(number)
查看>>
泛型子类_属性类型_重写方法类型
查看>>
练习10-1 使用递归函数计算1到n之和(10 分
查看>>
Oracle MySQL yaSSL 不明细节缓冲区溢出漏洞2
查看>>
Code Snippet
查看>>
zoj 1232 Adventure of Super Mario
查看>>
组合数学 UVa 11538 Chess Queen
查看>>
Redis常用命令
查看>>