Mike and Chocolate Thieves(CF #361 Div. 2)
生活随笔
收集整理的這篇文章主要介紹了
Mike and Chocolate Thieves(CF #361 Div. 2)
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
看到這道題時(shí),總感覺題目意思有點(diǎn)奇怪,看樣例和最下面的Note可以大概知道它在說什么。
題目大意:四個(gè)小偷去偷巧克力,且后一個(gè)偷的數(shù)量是前一個(gè)的 k 倍,而小偷的背包最多可以放 n 塊巧克力,問 n 最小為多少。附鏈接:http://codeforces.com/problemset/problem/689/C。
大體思路:通過樣例和Note,再結(jié)合描述,可以判斷出實(shí)際就是求不等式 a*k^3<=n,n的最小值,而題目給的 m 值則是 a、k的組合數(shù),用二分法,可以二分 a 值求 k,也可以二分 k 值求a,然后計(jì)算 a 和 k 的組合數(shù)。
以下為ac代碼:
#include<iostream> using namespace std; int main(){long long m;cin>>m;//m=1;long long l=1,r=1e20;long long result=-1;while(r>=l){long long mid=(r+l)/2;long long num=0;for(long long i=2;i*i*i<=mid;i++)num+=mid/(i*i*i);if(num==m)result=mid;if(num>=m)r=mid-1; //整數(shù)的話要加1,浮點(diǎn)數(shù)就不用elsel=mid+1; //同上}cout<<result<<endl;return 0; }總結(jié)
以上是生活随笔為你收集整理的Mike and Chocolate Thieves(CF #361 Div. 2)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 软件产品运营与维护
- 下一篇: CAD中如何使用Lisp程序编写坐标标注