玄关 resize
查看原帖
玄关 resize
637788
kimi0705楼主2024/5/27 18:38
#include <bits/stdc++.h>
#define multi true
#define int long long
#define debug(x) cerr << #x << '=' << x << '\n';
using namespace std;
int t = 1, n, d, ans;
vector <int> a, vis, Ans;
int pre(int x) { return (x - d + n) % n; }
void solve() {
    ans = 0;
    cin >> n >> d;
    a.clear(), vis.clear(), Ans.clear();
    a.resize(n), Ans.resize(n, 0), vis.resize(n, 0);
    for (int &i : a) cin >> i;
    queue <int> Q;
    for (int i = 0; i < n; i++)
        if (a[i] == 0) 
            Q.push(i), vis[i] = 1;
    while (Q.size()) {
        int t = Q.front();
        Q.pop();
        if (vis[pre(t)] == 0) 
            vis[pre(t)] = 1, Q.push(pre(t)), Ans[pre(t)] = Ans[t] + 1, ans = max(ans, Ans[pre(t)]);
    }
    for (int i : vis) if (i == 0) {
        cout << -1 << '\n';
        return;
    } 
    cout << ans << '\n';
}
signed main() {
    ios::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
#ifndef ONLINE_JUDGE
    freopen("in.txt", "r", stdin);
    freopen("out.txt", "w", stdout);
    freopen("err.txt", "w", stderr);
#endif
    if (multi) cin >> t;
    while (t--) 
        solve();
    return 0;
}
#include <bits/stdc++.h>
#define multi true
#define int long long
#define debug(x) cerr << #x << '=' << x << '\n';
using namespace std;
int t = 1, n, d, ans;
vector <int> a, vis, Ans;
int pre(int x) { return (x - d + n) % n; }
void solve() {
    ans = 0;
    cin >> n >> d;a.resize(n), Ans.resize(n, 0), vis.resize(n, 0);
    for (int &i : a) cin >> i;
    queue <int> Q;
    for (int i = 0; i < n; i++)
        if (a[i] == 0) 
            Q.push(i), vis[i] = 1;
    while (Q.size()) {
        int t = Q.front();
        Q.pop();
        if (vis[pre(t)] == 0) 
            vis[pre(t)] = 1, Q.push(pre(t)), Ans[pre(t)] = Ans[t] + 1, ans = max(ans, Ans[pre(t)]);
    }
    for (int i : vis) if (i == 0) {
        cout << -1 << '\n';
        return;
    } 
    cout << ans << '\n';
}
signed main() {
    ios::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
#ifndef ONLINE_JUDGE
    freopen("in.txt", "r", stdin);
    freopen("out.txt", "w", stdout);
    freopen("err.txt", "w", stderr);
#endif
    if (multi) cin >> t;
    while (t--) 
        solve();
    return 0;
}

resize 怎么用捏?求巨佬指点。

2024/5/27 18:38
加载中...