比赛链接https://www.luogu.com.cn/contest/235262
抱歉由于这题还没上传到主题库所以给不了题目链接。
总算 AK 了(笑)。
实际上,暴力跑 次就完事了。
实现一个函数,按照第 个量为关键字进行排序。
我用的是冒泡排序。
至于冒泡排序( 暴力)是啥不用我多说了吧。
实现
#include<bits/stdc++.h>
using namespace std;
#define int long long
const int mod=1e9+7;
int n,m,g[55];
struct node{
int id,sum,s[55];
}a[55],b[55];
void Sort(int v){
for(int i=1;i<=n;i++){
for(int j=1;j<n;j++){
if(a[j].s[v]>a[j+1].s[v]){
swap(a[j],a[j+1]);
}else if(a[j].s[v]==a[j+1].s[v]&&a[j].sum<a[j+1].sum){
swap(a[j],a[j+1]);
}else if(a[j].s[v]==a[j+1].s[v]&&a[j].sum==a[j+1].sum&&a[j].id>a[j+1].id){
swap(a[j],a[j+1]);
}
}
}
}
signed main(){
ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
cin>>n>>m;
for(int i=1;i<=m;i++){
cin>>g[i];
}
for(int i=1;i<=n;i++){
b[i].id=i;
int mr=1e18;
for(int j=1;j<=m;j++){
cin>>b[i].s[j];
mr=min(mr,b[i].s[j]/g[j]);
}
b[i].sum=mr;
for(int j=1;j<=m;j++){
b[i].s[j]-=(mr*g[j]);
}
}
for(int i=1;i<=m;i++){
for(int j=1;j<=n;j++){
a[j]=b[j];
}
Sort(i);
for(int j=1;j<=n;j++){
cout<<a[j].id<<' ';
}
cout<<'\n';
}
return 0;
}