题目链接:uva 11997 - K Smallest Sums
题目大意:有k个整数数组,包含k个元素,在每个数组中取一个元素加起来可以得到kk个数,输出最小的k个。
解题思路:问题可以转换成对两个长度为k个数组中各选一个后的和中最小的k个值,然后做k-1次处理即可。
#include <cstdio>
#include <cstring>
#include <queue>
#include <algorithm>
using namespace std;
const int maxn = 1005;
int N, arr[maxn][maxn];
struct item {
int s, pos;
item (int s = 0, int pos = 0) {
this->s = s;
this->pos = pos;
}
bool operator < (const item& u) const {
return s > u.s;
}
};
void merge (int* A, int* B, int* C, int n) {
priority_queue<item> pri_que;
for (int i = 0; i < n; i++)
pri_que.push(item(A[i] + B[0], 0));
for (int i = 0; i < n; i++) {
item u = pri_que.top();
pri_que.pop();
C[i] = u.s;
if (u.pos + 1 < n)
pri_que.push(item(u.s - B[u.pos] + B[u.pos+1], u.pos+1));
}
}
int main () {
while (scanf("%d", &N) == 1) {
for (int i = 0; i < N; i++) {
for (int j = 0; j < N; j++)
scanf("%d", &arr[i][j]);
sort(arr[i], arr[i] + N);
}
for (int i = 1; i < N; i++)
merge(arr[0], arr[i], arr[0], N);
printf("%d", arr[0][0]);
for (int i = 1; i < N; i++)
printf(" %d", arr[0][i]);
printf("\n");
}
return 0;
}
分享到:
相关推荐
373._Find_K_Pairs_with_Smallest_Sums查找和最小的k对数字【LeetCode单题讲解系列】
代码:// find K-th Smallest Pair Distancepublic int smallestDistancePair(int[] nums
k-th-Smallest-element-in-an-array:第k个数组中的最小元素
关于有向图最小树形图的C代码,供大家参考。
AT_code_festival_2017_qualb_f Largest Smallest Cyclic Shift 的 AC 代码
将您的过程解决方案编码到lib/smallest_multiple.rb文件中。 将您的面向对象的解决方案编码到lib/oo_smallest_multiple.rb文件中。 运行learn直到所有RSpec测试通过。 来源 -- 在Learn.co上查看并开始免费学习编码。
这个源代码是一个最小生成树的算法实现,采用的visual c++6.0
将您的过程解决方案编码到lib/smallest_multiple.rb文件中。 将您的面向对象的解决方案编码到lib/oo_smallest_multiple.rb文件中。 运行learn直到所有RSpec测试通过。 来源 -- 在Learn.co上查看并开始免费学习编码。
将您的过程解决方案编码到lib/smallest_multiple.rb文件中。 将您的面向对象的解决方案编码到lib/oo_smallest_multiple.rb文件中。 运行learn直到所有RSpec测试通过。 来源 -- 在Learn.co上查看并开始免费学习编码。
将您的过程解决方案编码到lib/smallest_multiple.rb文件中。 将您的面向对象的解决方案编码到lib/oo_smallest_multiple.rb文件中。 运行learn直到所有RSpec测试通过。 来源 -- 在Learn.co上查看并开始免费学习编码。
将您的过程解决方案编码到lib/smallest_multiple.rb文件中。 将您的面向对象的解决方案编码到lib/oo_smallest_multiple.rb文件中。 运行learn直到所有RSpec测试通过。 来源 -- 在Learn.co上查看并开始免费学习编码。
将您的过程解决方案编码到lib/smallest_multiple.rb文件中。 将您的面向对象的解决方案编码到lib/oo_smallest_multiple.rb文件中。 运行learn直到所有RSpec测试通过。 来源 -- 在Learn.co上查看并开始免费学习编码。
将您的过程解决方案编码到lib/smallest_multiple.rb文件中。 将您的面向对象的解决方案编码到lib/oo_smallest_multiple.rb文件中。 运行learn直到所有RSpec测试通过。 来源 -- 在Learn.co上查看并开始免费学习编码。
将您的过程解决方案编码到lib/smallest_multiple.rb文件中。 将您的面向对象的解决方案编码到lib/oo_smallest_multiple.rb文件中。 运行learn直到所有RSpec测试通过。 来源 -- 在Learn.co上查看并开始免费学习编码。
将您的过程解决方案编码到lib/smallest_multiple.rb文件中。 将您的面向对象的解决方案编码到lib/oo_smallest_multiple.rb文件中。 运行learn直到所有RSpec测试通过。 来源 -- 在Learn.co上查看并开始免费学习编码。
欧拉公式求长期率的matlab代码最小倍数 构建一个函数,以找到最小的正数,该正数可以被从1...smallest_multiple.js的文件中完成。 使用以下命令npm test : npm test 总共有两个测试。 让他们通过! 来自欧拉计划问题5
自述文件描述Spring Boot最小项目Spring Boot最佳实践使用最简单的结构设定档档案结构|-- src|-- main|-- |-- com.spring.boot.example.{projectName}|-- |-- |-- {projectName}Application.java|-- |-- |-- config|...
欧拉公式求长期率的matlab代码欧拉计划 ...将您的过程解决方案编码到lib/smallest_multiple.rb文件中。 将您的面向对象的解决方案编码到lib/oo_smallest_multiple.rb文件中。 运行learn直到所有RSpec测试通过。 来源 --
欧拉公式求长期率的matlab代码欧拉计划 ...将您的过程解决方案编码到lib/smallest_multiple.rb文件中。 将您的面向对象的解决方案编码到lib/oo_smallest_multiple.rb文件中。 运行learn直到所有RSpec测试通过。 来源 --
学号: 201618013229011姓名: 李坚松The problem is to let us to find the n-th smallest val