CCF CSP题解:仓库规划(202312-1)

链接和思路

OJ链接:传送门

本题思路不难,理解上级仓库的含义后,暴力验证即可。最坏情况为整个输入序列都是上级仓库在前,下级仓库在后,其复杂度分析如下:

给定的 n n n个向量都要与另外( n − 1 n-1 n1)个向量相互比较,一共 n ( n − 1 ) n(n-1) n(n1)次向量比较;由于向量为 m m m维,单次向量比较最多需要 m m m次数值比较。因此只需要不多于 m n ( n − 1 ) mn(n-1) mn(n1)次数值比较即可求解本题,时间复杂度为 O ( m n 2 ) O(mn^2) O(mn2)

由于给定的 n n n m m m不大,其中, 0 < m ≤ 10 0 < m \le 10 0<m10 0 < n ≤ 1000 0 < n \le 1000 0<n1000,使用暴力法求解在有限时间内是可以接受的。否则,要考虑构建更为复杂的索引。

AC代码

#include <iostream>
#include <vector>

using namespace std;

bool is_lower(const vector<int> &a, const vector<int>&b) {
    for (int i = 0; i < a.size(); i++)
        if(a[i] >= b[i])
            return false;
    return true;
}


int main() {
    int n, m;
    cin >> n >> m;
    vector<vector<int>>v(n);
    for (auto &i:v){
        i.resize(m);
        for (auto &j:i)
            cin >> j;
    }

    for (int i = 0; i < v.size(); i++){
        bool flag = false;
        for (int j = 0; j < v.size(); j++){
            if (j == i) continue;
            if(is_lower(v[i],v[j])){
                cout << j + 1 << endl;
                flag = true;
                break;
            }
        }
        if(!flag)
            cout << 0 << endl;
    }

    return 0;
}

  • 31
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

曹无悔

请支持我的梦想!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值