Yukari's Birthday HDU
来源:互联网 发布:关于网络暴力的演讲稿 编辑:程序博客网 时间:2024/06/03 09:27
题目传送门
题意:将蛋糕分作r个同心圆,圆心可以放一个或者不放蜡烛,然后同心圆从内到外,第i个同心圆放k^i个蜡烛,问r*k最小的时候,r,k的值分别是多少,r*k相同时,输出r最小的情况。
思路:这个题其实很水,但是比赛的时候头脑十分的不清晰,自己写了一个暴力的程序,结果一直在超时,赛后看了一下题解发现这个题目使用二分来解决的,枚举各种r的情况,因为r不会特别大限制在40多就可以也不会超时,然后二分加枚举就可以做出来了。
#include <algorithm>#include <cmath>#include <cstdio>#include <cstring>#include <fstream>#include <iostream>#include <map>#include <queue>#include <set>#include <stack>#include <string>#include <vector>#define MAXN 1000010#define INF 10000000#define MOD 1000000007#define LL long longusing namespace std;LL n;LL Bisection(LL s) { LL left = 2, right = n + 10; LL mid = (left + right) / 2; while (left <= right) { mid = (left + right) / 2; LL ans = 1; LL sum = 0; for (LL i = 1; i <= s; ++i) { if (n / ans < mid) { sum = n + 1; break; } ans *= mid; sum += ans; if (sum > n) break; } if (sum == n - 1 || sum == n) return mid; else if (sum < n - 1) left = mid + 1; else right = mid - 1; } return -1;}int main() { std::ios::sync_with_stdio(false); while (cin >> n) { LL left = 1, right = n - 1; for (LL i = 2; i <= 45; ++i) { LL num = Bisection(i); if (num != -1 && num * i < left * right) { left = i; right = num; } } cout << left << " " << right << endl; } return 0;}
阅读全文
0 0
- Yukari's Birthday HDU
- Yukari's Birthday HDU
- hdu 4430 Yukari's Birthday
- hdu 4430 Yukari's Birthday
- hdu 4430 Yukari's Birthday
- hdu Yukari's Birthday (4430)
- 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 Yukari's Birthday 枚举+二分
- HDU 4430 Yukari's Birthday (二分+枚举)
- hdu 4430——Yukari's Birthday
- HDU 4430 Yukari's Birthday 枚举+二分
- hdu 4430 Yukari's Birthday(二分)
- CentOS安装sshpass
- 二叉树的深度
- HDU1076 An Easy Task
- java基础
- DC
- Yukari's Birthday HDU
- 最短路径?青蛙(Frogger), ZOJ1942, POJ2253
- spring实现表单与服务器的数据交互
- 单播、广播、组播区别
- POJ
- Redis源码学习(1):adlist
- CSU 1826:Languages(stringstream的应用)
- 小明の魔法计划(最长倍数子序列)
- 怎样将SQL数据库里面的表导出