logo AlgoBeat OnlineJudge
登录 注册

「[CSPro 32] 仓库规划」题解

作者: Dr_KC_Haus  ·  发布于 2026-07-08 20:17:10  ·  最后修改于 2026-07-08 20:49:52
已通过
审核员:joe_zxq 彩笔 · 2026-07-08 20:49:52

洛谷观看效果更佳


思路

数据范围不大,就用一个二维数组假设 个仓库, 维。然后:

  • 对于每个仓库,遍历所有其他的仓库,看是否满足上级的条件。

  • 如果满足条件且编号更小,那么就更新上级仓库的编号。

  • 最后输出每个仓库的上级仓库编号,如果无上级则输出

注意:一个仓库不能成为它自己的上级

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);
}

暂无评论

登录 后即可评论。