zoj 3665 hdu 4430 (二分枚举)
来源:互联网 发布:python 文件所在目录 编辑:程序博客网 时间:2024/05/16 08:06
题意:有n支蜡烛,要插成r圈,第i圈的数量为k^i个,中间可插可不插,求出r*k的最小值,相同时去r最小。
思路:当时加这个比赛时我们已经把思路想出来了,没看到中间可以不插蜡烛。最多不超过四十圈,所以枚举圈数,然后二分找k,因为是一圈的时候一定是1,n-1,所以从2开始枚举。k有个上限就是1000000。
#include<stdio.h>#include<string.h>#include<iostream>using namespace std;typedef long long LL;LL find(int x,LL N){LL L,R,mid,bt,sum;L=2;R=1000000;while(L<=R){mid=(L+R)>>1;sum=0;bt=1;for(int i=1;i<=x;i++){bt*=mid;sum+=bt;if(sum>N)break;}if(sum>N){R=mid-1;}else if(sum==N)return mid;else L=mid+1;}return -1;}int main(){int i;LL r,k,f1,f2,n;while(scanf("%lld",&n)!=-1){r=1;k=n-1;for(i=2;i<40;i++){f1=find(i,n);f2=find(i,n-1);if(f1!=-1){if(f1*i<r*k)r=i,k=f1;else if(f1*i==r*k&&i<r)r=i,k=f1;}if(f2!=-1){if(f2*i<r*k)r=i,k=f2;else if(f2*i==r*k&&i<r)r=i,k=f2;}}printf("%lld %lld\n",r,k);}return 0;}
- zoj 3665 hdu 4430 (二分枚举)
- HDU 4430 & ZOJ 3665 Yukari's Birthday(二分+枚举)
- hdu 4430 枚举+二分
- hdu 4430 二分+枚举
- zoj 3665 Yukari's Birthday(枚举+二分)
- TOJ 4373 HDU 4430 ZOJ 3665 Yukari's Birthday / 二分
- hdu 4430 Yukari's Birthday 枚举+二分
- hdu 4430 Yukari's Birthday(二分+枚举)
- Hdu 4430 Yukari's Birthday 枚举+二分
- HDU 4430 Yukari's Birthday (二分+枚举)
- HDU 4430 Yukari's Birthday 枚举+二分
- HDU 4430 Yukari's Birthday(枚举+二分)
- HDU 4430 Yukari's Birthday【二分+枚举】
- hdu 4430 枚举+二分 范围运算失误
- HDU 4430 Yukari's Birthday (枚举 二分)
- HDU 5676(枚举 + 二分)
- hdu 5265(二分+枚举)
- HDU - 6012 枚举 + 二分
- Qt 动态链接库
- dedecms后台验证码问题
- python函数的四种参数传递方式
- Suse Linux 11.1 relative URLs
- java实现把文件上传至ftp服务器
- zoj 3665 hdu 4430 (二分枚举)
- shell commands (continued)
- GridView和CheckBox结合使用
- git config
- 面试题36:数组中的逆序对
- 2009-11-23
- not in 和not exists的使用
- jQuery源码分析-01总体架构
- dedecms后台小问题