题解:P16064 [CSPro 32] 仓库规划

· · 题解

:::info[思路]{open} 数据范围不大,就用一个二维数组假设 1000 个仓库,10 维。然后:

:::warning[注意]{open} 一个仓库不能成为它自己的上级。 :::

:::success[AC Code]

#include <bits/stdc++.h>
#define int long long
using namespace std;
int a[1000][10];//假设最大1000个仓库,10维
int n,m;
signed main(void){
    ios::sync_with_stdio(0);
    cin.tie(0);cout.tie(0);
    cin>>n>>m;
    for(int i=0;i<n;i++) 
        for(int j=0;j<m;j++) 
            cin>>a[i][j];
    for(int i=0;i<n;i++){
        int ans=0;
        for(int j=0;j<n;j++){
            //自己不能成为自己的上级
            if(i==j) continue;
            bool flag=true;//标记 
            for(int k=0;k<m;k++){
                if(a[j][k]<=a[i][k]){
                    flag=false;//不满足上级条件
                    break;
                }
            }
            if (flag and (ans==0 or j+1<ans)) ans=j+1;//满足条件,更新编号 
        }
        cout<<ans<<endl;
    }
    exit(0);
}

:::