暴力+优化的最快代码(仅次于打表)
2025-08-26 17:35:43
发布于:江西
5阅读
0回复
0点赞
本片为上古时期的代码
先从最暴力的思路讲起,枚举 11 张 个,5张 个,1张 个,时间复杂度为
注意到:1张完全可以通过数学方法算出来 , 时间复杂度为
还能在优化吗?肯定的
注意到正解所用的 均小于 5 ,而 是小数据唯一不符合贪心的返例,因此 一定大于
这样,时间复杂度为 但我们还能据需优化
如果我们知道 多大,可以求出剩下,而剩下一定 即
时间复杂度就是 级别
代码:
# include <bits/stdc++.h>
using namespace std ;
int i,j,k;
int main ( )
{
int n,res = 1e9; // 初始值要大
cin>>n;
for(i = max(n/11-3,0);i<=n/11;i++){
int l = n-i*11; // 剩下的
int ans = i+l/5+l%5; // 总共张数
res = min(ans,res); // 求最小
}
cout<<res;
return 0 ;
}
循环运行次数是 次
这里空空如也
有帮助,赞一个