竞赛讨论区 > 请求加强数据
头像
index8990
发布于 03-18 23:55 浙江
+ 关注

请求加强数据

// F - L1-6 邻和

#include <bits/stdc++.h>
#define int long long
#define db double
#define endl "\n"

using namespace std;

void solve() {

    int n;
    cin >> n;
    int ans = 0;
    vector<int> v(n + 1);
    for (int i = 1; i <= n; i++) {
        cin >> v[i];
        if (v[i] == 1) {
            ans++;
            v[i] = lcm(v[i - 1], v[i + 1]);
        }
    }

    vector<int> all(n);
    for (int i = 1; i < n; i++) {
        all[i] = gcd(v[i], v[i + 1]);
    }
    int sum = 0;
    vector<int> res;
    for (int i = 1; i < n; i++) {
        if (all[i] == 1) {
            sum++;
        } else {
            res.push_back(sum);
            sum = 0;
        }
    }
    res.push_back(sum);

    for (auto it : res) {
        ans += (it + 2 - 1) / 2;
    }
    cout << ans << endl;

    
}

signed main() {

    ios_base::sync_with_stdio(false);
    cin.tie(nullptr);

    int t = 1;
    cin >> t;
    
    while (t--) {
        solve();
    }
    
}

这题的数据似乎不存在末尾为1的数据,可以用这个代码通过,如果末尾有1的话代码第20行会因为vector的空间开错导致索引越界

全部评论

(0) 回帖
加载中...
话题 回帖

本文相关内容

等你来战

查看全部

热门推荐