Chocolate
提供一种比较清新的做法。
思路:贪心。
思考:如果在巧克力上横向切一刀,那么纵向要切的刀数就会加一。如果在巧克力上纵向切一刀,那么横向要切的刀数就会加一。
结论:要先切代价大的,再切代价小的。
做法:横切代价与纵切代价放到一起排序,依次计算需要的代价即可。
#include <bits/stdc++.h>
using namespace std;
struct node{
int xy;
bool flag;//flag区分是纵切代价还是横切代价。
}a[20010];
int cnt[2];//cnt[i]代表在某个方向上已经有多少块巧克力。
bool cmp(node a,node b){
return a.xy>b.xy;
}
int main()
{
int n,m;
long long ans=0;
cin>>n>>m;
n--;
m--;
for(int i=1;i<=n;i++)cin>>a[i].xy;
for(int i=1;i<=m;i++){
cin>>a[i+n].xy;
a[i+n].flag=1;
}
sort(a+1,a+n+m+1,cmp);
for(int i=1;i<=n+m;i++) {
ans+=(long long)a[i].xy*(cnt[!a[i].flag]+1);//用当前方向的代价去乘以另一个方向上的块数。
cnt[a[i].flag]++;//切了一刀,块数加一。
}
cout<<ans;
return 0;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现