ABC F
  • 板块学术版
  • 楼主Xy_top
  • 当前回复11
  • 已保存回复11
  • 发布时间2024/8/10 21:40
  • 上次更新2024/8/10 22:43:29
查看原帖
ABC F
637796
Xy_top楼主2024/8/10 21:40

以下是我的赛时代码,获得了 AC:

#include <bits/stdc++.h>
#define int long long
#define For(i, a, b) for (int i = (a); i <= (b); i ++)
#define foR(i, a, b) for (int i = (a); i >= (b); i --)
using namespace std;
int n, k;
int f[12];
struct Node {int x, y;}a[200005];
bool cmp (Node n1, Node n2) {return n1.y > n2.y || n1.y == n2.y && n1.x < n2.x;}
void solve () {
	cin >> n >> k;
	For (i, 1, n) cin >> a[i].x >> a[i].y;
	sort (a + 1, a + n + 1, cmp);
	f[0] = 1;
	For (i, 1, n) {
		foR (j, min (i, k), 1) {
			f[j] = max (f[j], f[j - 1] * a[i].x + a[i].y);
		}
	}
	cout << f[k];
}
signed main () {
	int _ = 1;
//	cin >> _;
	while (_ --) {
		solve ();
		cout << '\n';
	}
	return 0;
}

但是有一个显然的 Hack:

3 3
100 2
1 1
1 1
Answer: 302
Output: 104

所以这个题是不是错了?

2024/8/10 21:40
加载中...