https://oj.haizeix.com/problem/285
给出一个 n×m 的矩阵,每行取一个元素,组成一个包含 n 个元素的序列,一共有 mn 种序列,求出序列和最小的前 m 个序列的序列和。
输入两个整数 n,m,接下来输入矩阵。
输出最小的前 m 个序列的序列和。每两个数之间用空格隔开。
2 3
1 2 3
2 2 3
3 3 4
时间限制:1s
内存限制:256M
100% 的数据保证 1≤n≤100,1≤m≤2000
40 分代码:
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n,m;
cin>>n>>m;
vector<vector<int> >x(n,vector<int>(m));
for(int i=0;i<n;i++)for(int j=0;j<m;j++)cin>>x[i][j];
vector<int>d(n,0);
long long f=0;
vector<int>s;
vector<int>q;
for(int k=0;k<m;k++)
{
f=0;
for(int i=0;i<n;i++)
{
f+=x[i][d[i]];
s.push_back(x[i][d[i]]);
}
q.push_back(f);
int g=1;
for (int i=n-1;i>=0;i--)
{
d[i]=(d[i]+g)%m;
g=d[i]==0?1:0;
}
s.clear();
}
sort(q.begin(),q.end());
for(int i=0;i<m-1;i++)cout<<q[i]<<' ';
cout<<q[m-1];
return 0;
}
求调