ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#245 | #7. 「WyOJ Round 1」归 · 星穗垂野 | Un1quAIoid | 0 | 2620ms | 31624kb | C++23 | 2.3kb | 2025-04-18 14:45:46 | 2025-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;
}
Details
小提示:点击横条可展开更详细的信息
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...