本文主要是介绍HDU5747 (Aaronson 贪心),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题目链接
贪心处理,每次减去最大的,需要注意的是数的范围的10^9,所以我们只要判断m最大到32就够了,因为2^32足够超过10^9了呀
#include<cstdio>
#include<algorithm>
using namespace std;
#define cl(a,b) memset(a,b,sizeof(a))
#define LL long long
#define pb push_back
#define gcd __gcd#define For(i,j,k) for(int i=(j);i<k;i++)
#define lowbit(i) (i&(-i))
#define _(x) printf("%d\n",x)LL qsm(LL a,LL b){LL ans=1;while(b){if(b&1)ans=ans*a;a=a*a;b>>=1;}return ans;
}const int maxn = 1e3+200;
const int inf = 1 << 23;
const LL P = 1e9+7;int main(){int T;scanf("%d",&T);while(T--){LL n,m;scanf("%lld%lld",&n,&m);int ans=0;LL t = 1LL<<32;if(m<=32)t = 1LL<<m;while(n>0){if(n>=t){n-=t;ans++;}else {t/=2;}}_(ans);}return 0;
}
这篇关于HDU5747 (Aaronson 贪心)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!