P3745 学习笔记

省流:三分水蓝。

题目传送门

设经过操作后所有成绩全部公布的时间为 \(x\),所获得的不愉快度为 \(f(x)\)

经过我们的一顿分析猛如虎,我们知道 \(f(x)\) 是一个下凸单峰函数,于是乎——我们可使用三分找到极值点。

其实我不太会三分

code
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <iterator>
#include <map>
#include <unordered_map>
#include <queue>
#include <string>
#include <cstring>
#include <set>
#include <bitset>
#include <unordered_set>
#include <vector>
#include <deque>
#include <iomanip>
#include <fstream>
#include <sstream>
#include <list>
#include <array>
#include <iterator>
#include <cmath>
#include <new>
#include <random>
#include <cfloat>
#include <cstdlib>
#include <climits>
#include <numeric>
#include <complex>
#include <ctime>
#include <chrono>
#include <thread>
#include <mutex>
#include <future>
#include <exception>
#include <stdexcept>
#include <cstdint>
#include <cassert>
#include <stack>
#include <cctype>
#define int long long
using namespace std;

using ll = long long;
using ull = unsigned long long;
using lb = long double;

constexpr int mod = 998244353;
constexpr int maxn = 100005;

int n, m, A, B, C, ans;
int t[maxn], b[maxn];

int calc1(int p) {
	int x = 0, y = 0;
	for (int i = 1; i <= m; i++) {
		if (b[i] < p)
			x += p - b[i];
		else 
			y += b[i] - p;
	}
	if (A < B)
		return min(x, y) * A + (y - min(x, y)) * B;
	else 
		return y * B;
}

int calc2(int p) {
	int sum = 0;
	for (int i = 1; i <= n; i++) 
		if (t[i] < p)
			sum += (p - t[i]) * C;
	return sum;
}

int32_t main() {
	cin >> A >> B >> C >> n >> m;
	for (int i = 1; i <= n; i++)
		cin >> t[i];
	for (int i = 1; i <= m; i++)
		cin >> b[i];
	sort(t + 1, t + n + 1);
	sort(b + 1, b + m + 1);
	if (C >= 1e16) 
		return cout << calc1(t[1]), 0;
	ans = 1e16 - 1;
	int l = 1, r = maxn;
	while (r - l > 2) {
		int mid1 = l + (r - l) / 3;
		int mid2 = r - (r - l) / 3;
		int c1 = calc1(mid1) + calc2(mid1);
		int c2 = calc1(mid2) + calc2(mid2);
		if (c1 <= c2)
			r = mid2;
		else 
			l = mid1;
	}
	for (int i = l; i <= r; i++) {
		int x = calc1(i) + calc2(i);
		ans = min(ans, x);
	}
	cout << ans;
}

posted @ 2026-02-10 10:15  constexpr_ll  阅读(4)  评论(0)    收藏  举报