Atcoder ABC144E Gluttony
[ABC144E] Gluttony
题面翻译
【题目描述】
高桥君参加大胃王比赛。比赛由
比赛有
比赛前,高桥君的队伍会进行修行。一次修行可以将一名消化代价大于
通过修行和适当选择每位队员吃的食物,高桥队在比赛中能够获得的最好成绩是多少?
【输入格式】
第
第
第
【输出格式】
输出高桥队的最好成绩。
样例 #1
样例输入 #1
3 5 4 2 1 2 3 1
样例输出 #1
2
样例 #2
样例输入 #2
3 8 4 2 1 2 3 1
样例输出 #2
0
样例 #3
样例输入 #3
11 14 3 1 4 1 5 9 2 6 5 3 5 8 9 7 9 3 2 3 8 4 6 2
样例输出 #3
12
思路
以下简称消化代价为a,难吃程度为f.
样例是好样例,通过简单归纳,发现要把a大的乘上f小的,a小的则要乘f大的,这样能使
但是,这N个人还可以进行K次修改,怎么办呢?我们考虑二分消化时间最小值x。当
代码
#include<bits/stdc++.h> using namespace std; int a[200005],f[200005]; long long n,k; bool cmp(int &x,int &y) { return x>y; } bool check(long long x) { long long sum=0; for(int i=1;i<=n;i++) { if(1ll*a[i]*f[i]>x) { sum+=(1ll*a[i]*f[i]-x+f[i]-1)/f[i]; } } return sum<=k; } int main() { ios::sync_with_stdio(false); cin>>n>>k; for(int i=1;i<=n;i++) { cin>>a[i]; } for(int i=1;i<=n;i++) { cin>>f[i]; } sort(a+1,a+n+1); sort(f+1,f+n+1,cmp);//降序排列 long long l=0,r=1e12+5,ans=0; while(l<=r) { long long mid=(l+r)/2; if(check(mid)) { ans=mid; r=mid-1; } else { l=mid+1; } } cout<<ans<<endl; return 0; }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 25岁的心里话