Logo Wy Online Judge

WyOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#322#7. 「WyOJ Round 1」归 · 星穗垂野cxm1024972147ms31052kbC++231.6kb2025-04-18 17:54:342025-04-18 20:49:40

answer

#include <bits/stdc++.h>
#define deb cout << "in " << __LINE__ << "\t: "
using namespace std;
#define int long long
int n, C, a[100010], b[100010], s[100010], t[20][100010], lst[100010];
#define lg(x) (31 ^ __builtin_clz(x))
int query(int l, int r) {
	int len = lg(r - l + 1);
	return __gcd(t[len][l], t[len][r - (1 << len) + 1]);
}
vector<pair<int, int>> p[100010];
int tr[100010], dp[100010];
void add(int x, int y) {
	for (; x <= n; x += x & -x)
		tr[x] = min(tr[x], y);
}
int getmn(int x, int res = 1e18) {
	x = min(x, n);
	for (; x; x -= x & -x)
		res = min(res, tr[x]);
	return res;
}
void Solve(int test) {
	cin >> n >> C;
	for (int i = 1; i <= n; i++)
		cin >> a[i], t[0][i] = a[i], tr[i] = 1e18, dp[i] = 1e18, p[i].clear();
	for (int i = 1; i <= n; i++)
		cin >> b[i], s[i] = s[i - 1] + b[i];
	for (int i = 0; i < 18; i++)
		for (int j = 1; j + (2 << i) - 1 <= n; j++)
			t[i + 1][j] = __gcd(t[i][j], t[i][j + (1 << i)]);
	for (int i = 1; i <= n; i++) {
		int l = 0, r = i;
		while (l < r) {
			int mid = (l + r + 1) / 2;
			if (query(mid, i) <= i - mid + 1)
				l = mid;
			else r = mid - 1;
		}
		lst[i] = l;
		if (l) p[l].push_back({i, query(l, i)});
	}
	add(1, 0);
	for (int i = 1; i <= n; i++) {
		for (auto [r, x] : p[i])
			dp[r] = getmn(x) + C + (s[r] - s[i - 1]) * x;
		if (lst[i]) add(i - lst[i] + 1, dp[i]);
	}
	int res = 1e18;
	for (int i = 1; i <= n; i++)
		res = min(res, dp[i]);
	cout << res << "\n";
}
signed main() {
	ios::sync_with_stdio(false);
	cin.tie(0), cout.tie(0);
	int T;
	cin >> T;
	for (int i = 1; i <= T; i++) Solve(i);
	return 0;
}

详细

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

Test #1:

score: 10
Accepted
time: 3ms
memory: 7572kb

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
-2859101918
-21349075
-1203387136
-1290642033
-851981042
-648655823
-1699966984
-1493814...

result:

ok 1000 numbers

Test #2:

score: 10
Accepted
time: 237ms
memory: 26124kb

input:

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

output:

6999125
764376403
718240695
1381649585
885156744

result:

ok 5 number(s): "6999125 764376403 718240695 1381649585 885156744"

Test #3:

score: 10
Accepted
time: 1ms
memory: 11608kb

input:

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

output:

-11025209476
-3953017107
-5975377615
-2466586019
-5823678268

result:

ok 5 number(s): "-11025209476 -3953017107 -5975377615 -2466586019 -5823678268"

Test #4:

score: 10
Accepted
time: 3ms
memory: 13600kb

input:

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

output:

-7714370390
-19569375783
-554464800
-1059581333
-6827008162

result:

ok 5 number(s): "-7714370390 -19569375783 -554464800 -1059581333 -6827008162"

Test #5:

score: 10
Accepted
time: 7ms
memory: 11784kb

input:

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

output:

-72952473687
-64021627506
-700730085
-994178012
-1624804963

result:

ok 5 number(s): "-72952473687 -64021627506 -700730085 -994178012 -1624804963"

Test #6:

score: 10
Accepted
time: 365ms
memory: 30580kb

input:

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

output:

-1656361289384
-4920133073293
-1028097824
-2809116480
-22668175189

result:

ok 5 number(s): "-1656361289384 -4920133073293 ...097824 -2809116480 -22668175189"

Test #7:

score: 10
Accepted
time: 387ms
memory: 31052kb

input:

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

output:

-4877361987440
-9327808595024
-261498007
97842263
-37427524204

result:

ok 5 number(s): "-4877361987440 -9327808595024 -261498007 97842263 -37427524204"

Test #8:

score: 10
Accepted
time: 393ms
memory: 29068kb

input:

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

output:

-8500967499879
-2162204721519
-803472133
-6968294203
-60694304098

result:

ok 5 number(s): "-8500967499879 -2162204721519 ...472133 -6968294203 -60694304098"

Test #9:

score: 10
Accepted
time: 384ms
memory: 29388kb

input:

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

output:

-1508037508585
-4714642449519
-3202809425
-6778545312
-12974512083

result:

ok 5 number(s): "-1508037508585 -4714642449519 ...809425 -6778545312 -12974512083"

Test #10:

score: 10
Accepted
time: 367ms
memory: 28868kb

input:

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

output:

-2319782085288
-10990638538852
-1651187059
-12428157994
-22719490815

result:

ok 5 number(s): "-2319782085288 -10990638538852...87059 -12428157994 -22719490815"

Extra Test:

score: -3
Extra Test Failed : Wrong Answer on 1
time: 1ms
memory: 5564kb

input:

1
3 0
3 6 2
1 1 1

output:

4

result:

wrong answer 1st numbers differ - expected: '3', found: '4'