CF10E Greedy Change 题解
一个非常离谱的题。
首先有结论,如果有
理论求法过于多,这次我们选择一个通俗易懂的讲法。
如果我们用贪心,那么我们一定会取当前的最大值,那么如果贪心是错的那么我们就不会取当前最大值。
所以我们对于每一位
证明不会选比
所以我们只需找到最小的数满足只取
那么求这个就可以先枚举
如何贪心求解呢,首先我们先用面值为
证明上述贪心正确:因为求出来的余数
而这下就会有人问,因为有可能加上一个
然后利用
最后对于每个可行解,取最小值。
时间复杂度:
#include<iostream>
#include<cstdio>
using namespace std;
const int N=405;
int n,a[N],ans=2e9+5;
int main()
{
scanf("%d",&n);
for(int i=1;i<=n;i++)scanf("%d",&a[i]);
for(int i=1;i<=n;i++)
{
for(int j=i+1;j<=n;j++)
{
int num=a[i]-1,sum=0;
for(int k=i+1;k<=j;k++)
{
sum+=num/a[k];
num%=a[k];
}
int lim=a[i]-1-num+a[j];
sum++;
int tot=0;
for(int k=1;k<=n;k++)
{
tot+=lim/a[k];
lim%=a[k];
}
if(sum<tot)ans=min(ans,a[i]-1-num+a[j]);
}
}
if(ans==2e9+5)ans=-1;
printf("%d",ans);
return 0;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】