本题数据的正确性
查看原帖
本题数据的正确性
509865
openallzzz楼主2023/5/16 16:37

标题

最暴力的代码,奔着40分去的,为什么在洛谷一分不得,在官网和C语言网都是40分

代码

#include <iostream>
#include <cstring>
#include <algorithm>
#include <vector>
#include <unordered_map>

using namespace std;

typedef pair<int, int> PII;

const int N = 100010;

int n, m;
struct store {
    int l, r, p, cnt; // cnt作用不大
    unordered_map<int, int> record;
}a[N];

int main() {
    cin >> n >> m;

    int up = 0, down = 1e9;
    for(int i = 0; i < m; i ++) {
        cin >> a[i].l >> a[i].r >> a[i].p >> a[i].cnt;
        up = max(up, a[i].r);
        down = min(down, a[i].l);
        for(int j = 0; j < a[i].cnt; j ++) {
            int id, price;
            cin >> id >> price;
            if(a[i].record.count(id)) {
                price = min(price, a[i].record[id]); // 商店里可以卖同种商品
            }
            a[i].record[id] = price;
        }
    }

    int res = 1e9;
    for(int i = down; i <= up; i ++) { // 枚举这一天购买所有物品
        int sum = 0;
        for(int j = 1; j <= n; j ++) { // 枚举第i天第j种物品的最低价
            int miV = 1e9;
            for(int k = 0; k < m; k ++) {
                if(a[k].l <= i && a[k].r >= i) {
                    if(a[k].record.count(j)) miV = min(miV, (a[k].p * a[k].record[j]) / 100);
                } else {
                    if(a[k].record.count(j)) miV = min(miV, a[k].record[j]);
                }
            }
            sum += miV;
        }
        res = min(res, sum);
    }

    cout << res << "\n";
    return 0;
}
2023/5/16 16:37
加载中...