ABC F 求调
  • 板块学术版
  • 楼主xvl_
  • 当前回复5
  • 已保存回复5
  • 发布时间2024/8/10 22:10
  • 上次更新2024/8/11 00:08:50
查看原帖
ABC F 求调
760266
xvl_楼主2024/8/10 22:10
#include <bits/stdc++.h>

const long long IMX = 1ll << 30;
const long long LMX = 1ll << 60;
const long long MOD = 998244353;

using ll = long long;
using i128 = __int128;
using ld = long double;
using f128 = __float128;

namespace xvl_ { 
	#define SP(n, x) std :: setprecision(n) << std :: fixed << x
	#define REP(i, l, r) for (auto i = (l); i <= (r); i++)
	#define PER(i, r, l) for (auto i = (r); i >= (l); i--)
	#define DEBUG(x) std :: cerr << #x << " = " << x << '\n'
	#define SZ(x) (x.size())
	#define fst first
	#define snd second
	template <typename T> T Max(T a, T b) { return a > b ? a : b; } template <typename T, typename... Args> T Max(T a, Args... args) { return a > Max(args...) ? a : Max(args...); }
	template <typename T> T Min(T a, T b) { return a < b ? a : b; } template <typename T, typename... Args> T Min(T a, Args... args) { return a < Min(args...) ? a : Min(args...); }
}
using namespace std;
using namespace xvl_;
const int N = 200005, K = 15;
int n, k;
ll a[N], b[N], id[N], dp[N][K];
int main() {
	// freopen("InName.in", "r", stdin);
	// freopen("OutName.out", "w", stdout);
	ios :: sync_with_stdio(0);
	cin.tie(nullptr);
	cin >> n >> k;
	for (int i = 1; i <= n; i++) cin >> a[i] >> b[i], id[i] = i;
	sort(id + 1, id + 1 + n, [](int x, int y) { return a[y] * b[x] + b[y] > a[x] * b[y] + b[x]; });
	for (int i = 1; i <= n; i++) cout << id[i] << ' ';
	cout << '\n';
	for (int i = 0; i <= n; i++) dp[i][0] = 1;
	for (int i = 1; i <= n; i++) {
		for (int j = 1; j <= k; j++) dp[i][j] = Max(dp[i][j], dp[i - 1][j - 1] * a[id[i]] + b[id[i]]);
	}
	cout << dp[n][k];
	return 0;
}

样例没过。

场上 10min 想到思路,调了半个小时没跳出来。

2024/8/10 22:10
加载中...