abc366_f
思路
考虑
考虑
如果交换那么贡献为:
那么如果可以交换,我们便可以通过两个式子的比较来算出比较器该怎么写。
可是我们怎么保证这是对的呢?考虑到这个式子的形式,对于之前的我们将视之为
code
#include <algorithm> #include <iostream> #include <cstring> using namespace std; using ll = long long; const int MaxN = 1e6 + 10; struct S { ll a, b; bool operator<(const S &j) const { return (j.a - 1) * b > (a - 1) * j.b; } } a[MaxN]; ll f[MaxN][20], n, k; int main() { cin >> n >> k; for (int i = 1; i <= n; i++) { cin >> a[i].a >> a[i].b; } sort(a + 1, a + n + 1); memset(f, -1, sizeof(f)); f[0][0] = 1; for (int i = 1; i <= n; i++) { for (int j = 0; j <= k; j++) { f[i][j] = f[i - 1][j]; (j && f[i - 1][j - 1] >= 0) && (f[i][j] = max(f[i][j], a[i].a * f[i - 1][j - 1] + a[i].b)); } } cout << f[n][k] << endl; return 0; }
本文作者:yabnto
本文链接:https://www.cnblogs.com/ybtarr/p/18358967
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
2023-08-21 小C的倍数问题