Logo Wy Online Judge

WyOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#245#7. 「WyOJ Round 1」归 · 星穗垂野Un1quAIoid02620ms31624kbC++232.3kb2025-04-18 14:45:462025-04-18 18:01:32

answer

#include <bits/stdc++.h>
#define lowbit(x) (x & -x)
#define eb emplace_back
#define pb push_back
#define mp make_pair
using namespace std;

typedef long long ll;
const int N = 1e5+5;
const int Mod = 998244353;

int n, m, C, a[N];
int g[N][17], lg[N];
ll ans = 1e18, b[N];

int qry(int l, int r) {
    int len = lg[r - l + 1];
    return __gcd(g[l][len], g[r - (1 << len) + 1][len]);
}

struct seg {
    int l, r;
    int g, len;
    ll f, w;
};
vector<seg> P;
vector<int> L[N], R[N];

struct minBIT {
    ll T[N];
    inline void upd(int x, ll k) { for (; x <= n; x += lowbit(x)) T[x] = min(T[x], k); }
    inline ll qry(int x) { ll ret = 0; for (; x; x -= lowbit(x)) ret = min(ret, T[x]); return ret; }
} T;

void solve() {
    scanf("%d%d", &n, &C);
    for (int i = 1; i <= n; i++) scanf("%d", &a[i]);
    for (int i = 1; i <= n; i++) scanf("%lld", &b[i]), b[i] += b[i - 1];

    for (int i = 2; i <= n; i++) lg[i] = lg[i >> 1] + 1;
    for (int i = n; i; i--) {
        g[i][0] = a[i];
        for (int j = 1; i + (1 << j) - 1 <= n; j++)
            g[i][j] = __gcd(g[i][j - 1], g[i + (1 << j - 1)][j - 1]);
    }

    P.clear();
    for (int i = 1; i <= n; i++) {
        int lst = i - 1, cg = a[i];
        while (lst != n) {
            int l = lst + 1, r = n, nxt = l;

            cg = qry(i, l);
            while (l <= r) {
                int mid = (l + r) >> 1;
                if (qry(i, mid) == cg) l = mid + 1, nxt = mid;
                else r = mid - 1;
            }
            int r1 = max(lst + 1, i + cg - 1);
            if (r1 <= nxt) {
                P.pb((seg) { i, r1, cg, r1 - i + 1, 0ll, cg * (b[r1] - b[i - 1]) });
            }
            lst = nxt;
        }
    }

    m = P.size();
    for (int i = 0; i < m; i++) {
        L[P[i].l].pb(i);
        R[P[i].r].pb(i);
        // printf("|%d %d %d %lld|\n", P[i].l, P[i].r, P[i].g, &P[i].w);
    }

    memset(T.T, 0x3f, sizeof(T.T));
    for (int i = 1; i <= n; i++) {
        for (int j : L[i])
            P[j].f = T.qry(P[j].g) + C + P[j].w;

        for (int j : R[i])
            T.upd(P[j].len, P[j].f);
    }

    ans = 1e18;
    for (int i = 0; i < m; i++)
        ans = min(ans, P[i].f);

    printf("%lld", ans);
}

int main() {
    int T;
    scanf("%d", &T);
    while (T--) solve();
    return 0;
}

详细

小提示:点击横条可展开更详细的信息

Test #1:

score: 0
Wrong Answer
time: 127ms
memory: 8620kb

input:

1000
10 -759451753
8 10 5 7 5 10 6 10 2 1
5 6 5 4 9 8 5 4 1 3
10 -953033990
4 10 10 8 8 2 1 7 4 1
0 ...

output:

-2278355214-3812135888-35581787-1805080685-1290642033-851981042-1081093012-2549950475-1991752924-144...

result:

wrong output format Expected integer, but "-2278355214-3812135888-3558178...346037288313693340237311...

Test #2:

score: 0
Wrong Answer
time: 298ms
memory: 23696kb

input:

5
94253 6998801
88374 94432 21568 79110 3746 94223 86214 12083 54743 1622 16110 18595 18994 3665 547...

output:

69991257643764037182406951381649585885156744

result:

wrong output format Expected integer, but "69991257643764037182406951381649585885156744" found

Test #3:

score: 0
Wrong Answer
time: 8ms
memory: 6512kb

input:

5
120 -848255662
53358 95098 92852 36846 80052 83050 44071 22632 50005 52339 7339 38495 66618 6337 5...

output:

-11025209476-5402451654-10023214068-87975012411-25235938475

result:

wrong output format Expected integer, but "-11025209476-5402451654-10023214068-87975012411-252359384...

Test #4:

score: 0
Wrong Answer
time: 8ms
memory: 6632kb

input:

5
100 -964452256
94167 36596 60051 82090 55625 56197 94589 29844 14929 68497 81714 90264 66283 96767...

output:

-7714370390-27397367362-980976134-29668341524-12678729289

result:

wrong output format Expected integer, but "-7714370390-27397367362-980976134-29668341524-12678729289...

Test #5:

score: 0
Wrong Answer
time: 9ms
memory: 6472kb

input:

5
984 -715414516
65632 15191 55392 53178 88695 20308 44882 16528 12986 81169 76880 2239 81264 13866 ...

output:

-72952473687-107623711110-33085005643-83509558686-49069064459

result:

wrong output format Expected integer, but "-72952473687-107623711110-33085005643-83509558686-4906906...

Test #6:

score: 0
Wrong Answer
time: 398ms
memory: 29604kb

input:

5
83593 -175988991
46605 26358 5204 30137 41225 11710 75224 14130 56433 62524 29873 59483 22318 2619...

output:

-1656361289384-8302544781344-205591396010-10681751709222-2351636273649

result:

wrong output format Expected integer, but "-1656361289384-8302544781344-2...10-10681751709222-235163...

Test #7:

score: 0
Wrong Answer
time: 458ms
memory: 31624kb

input:

5
96302 -451340376
2672 47391 49737 61648 38099 10679 28316 91168 97182 40556 20560 89630 45931 9187...

output:

-4877361987440-15569123169416-70820129391-568996386173-2353543786436

result:

wrong output format Expected integer, but "-4877361987440-15569123169416-...9391-568996386173-235354...

Test #8:

score: 0
Wrong Answer
time: 448ms
memory: 30220kb

input:

5
82075 -915749780
41503 94470 21657 60519 10090 65640 80911 29436 63096 68715 79609 87499 26240 606...

output:

-8500967499879-3529190351684-291581517471-15358189250418-4791486327746

result:

wrong output format Expected integer, but "-8500967499879-3529190351684-2...71-15358189250418-479148...

Test #9:

score: 0
Wrong Answer
time: 442ms
memory: 30812kb

input:

5
86206 -158351237
12910 53574 97622 75378 61116 40492 87106 60678 72614 2146 43673 15147 23123 7469...

output:

-1508037508585-7943544175173-631125358927-23578180298496-1611946472730

result:

wrong output format Expected integer, but "-1508037508585-7943544175173-6...27-23578180298496-161194...

Test #10:

score: 0
Wrong Answer
time: 424ms
memory: 30072kb

input:

5
87683 -236086252
88768 76878 54808 98282 70961 83599 48353 34381 40413 95288 24241 74500 52966 994...

output:

-2319782085288-18589766053971-294315577516-23817970851700-2157527363832

result:

wrong output format Expected integer, but "-2319782085288-18589766053971-...16-23817970851700-215752...