F求debug
  • 板块学术版
  • 楼主Vitamin_B
  • 当前回复3
  • 已保存回复3
  • 发布时间2024/7/27 01:07
  • 上次更新2024/7/27 09:43:52
查看原帖
F求debug
743373
Vitamin_B楼主2024/7/27 01:07

rt,F赛时炸样例了。

# pragma GCC optimize("Ofast,no-stack-protector")

# pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,avx,tune=native")

# include <bits/stdc++.h>

# define I return

# define AK 0

# define IOI ;

using namespace std;

typedef long long ll;

typedef pair <int, int> pii;

int t, n, k, l, r, mid, a[200005], b[200005], c[200005];

ll best;

bool check () {

	ll sum = 0;

	int s = 0;

	for (int i = 1; i <= n; ++ i)
		if (a[i] >= mid) {

			const int x = (a[i] - mid) / b[i];

			if ((s += x) > k)
				return 0;

			c[i] = a[i] - max (0, x * b[i]);
//			if (mid == 6) cerr << c[i] << ' ';
			sum += ((ll) x) * (a[i] + a[i] - (x - 1) * b[i]) / 2;
//			cerr << i << ':' << x << ',' << sum << ';' << c[i] << '\n';
		} else
			c[i] = a[i];
//	if (mid == 6) {
//		cerr << '\n';
//	cerr << s << '\n';
//	for (int i = 1; i <= n; ++ i) cerr << c[i] << ' ';
//	cerr << '\n';
//	}
	sort (c + 1, c + 1 + n, greater <int> ());

	s = min (k - s, n);

	for (int i = 1; i <= s; ++ i)
		sum += c[i];

	best = sum;

	return 1;

}

int main () {

	ios::sync_with_stdio (0);

	cin.tie (0);

	cout.tie (0);

	cin >> t;

	while (t --) {

		cin >> n >> k;

		l = best = r = 0;

		for (int i = 1; i <= n; ++ i)
			cin >> a[i], r = max (r, a[i]);

		for (int i = 1; i <= n; ++ i)
			cin >> b[i];
//		mid = 6;
//		cerr << check () << ' ' << best << '\n';
//		return 0;
		while (l <= r) {

			mid = l + r >> 1;

			if (check ())
				r = mid - 1;
			else
				l = mid + 1;

		}
//		cerr << r + 1 << '\n';
//		mid = 6;
//		cerr << check () << ' ' << best << '\n';
		cout << best << '\n';

	}

	I AK IOI

}
/*
1
5 9
32 52 68 64 14
18 14 53 24 8
*/
2024/7/27 01:07
加载中...