求助 用复制个a数组 用auto tmp = a会wa
  • 板块学术版
  • 楼主ruye
  • 当前回复2
  • 已保存回复2
  • 发布时间2024/3/7 16:58
  • 上次更新2024/3/7 19:52:02
查看原帖
求助 用复制个a数组 用auto tmp = a会wa
757864
ruye楼主2024/3/7 16:58

题目

//#pragma GCC optimize(2)
//#pragma GCC optimize(3,"Ofast","inline")
#include <bits/stdc++.h> // By Lucky Ox
#define IOS ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
#define int long long
#define double long double
#define endl "\n"
#define pii pair<int, int>
#define tans cout << "答案:"
using namespace std;
using i128 = __int128;
const int mod = 1000000000000002493, INF = 0x3f3f3f3f3f3f3f3f;
int lcm(int x, int y) { return x * y / __gcd(x, y); }
int q_pow(int a, int k) { int res = 1; while (k) { if (k & 1) res = res * a % mod; k >>= 1; a = a * a % mod; } return res; }
int len_10(int x) { int len = 0; while(x) { x /= 10; len ++ ; } return len; }
int len_2(int x) { int len = 0; while(x) { x /= 2; len ++ ; } return len; }

const int N = 1e6 + 10;
int n, m;
int r[N], d[N], s[N], t[N];
bool check(int k) {
    for (int i = 1; i <= n; i ++ ) tmp[i] = r[i];

    for (int i = 1; i <= k; i ++ ) {
        tmp[s[i]] -= d[i];
        tmp[t[i] + 1] += d[i];
    }

    for (int i = 1; i <= n; i ++ ) {
        tmp[i] += tmp[i - 1];
        if (tmp[i] < 0) return 1;
    }
    return 0;
}

void solve() {
    cin >> n >> m;
    for (int i = 1; i <= n; i ++ )  cin >> r[i];
    for (int i = n; i; i -- ) r[i] -= r[i - 1];
    for (int i = 1; i <= m; i ++ ) cin >> d[i] >> s[i] >> t[i];

    int l = 1, r = m;
    while (l <= r) {
        int mid = (l + r) >> 1;
        if (check(mid)) r = mid - 1;
        else l = mid + 1;
    }

    if (l == m + 1) cout << 0 << endl;
    else cout << -1 << endl << l << endl;
}

void init() {

}

signed main() {
    IOS;
    cout << fixed << setprecision(10);
    init();
    int T = 1;
    //cin >> T;
    while (T -- ) solve();
    return 0;
}

全部代码贴上 for (int i = 1; i <= n; i ++ ) tmp[i] = r[i];

这一串 你用auto tmp = r 就会wa 但不懂为什么会wa啊

2024/3/7 16:58
加载中...