CF 256# D. Multiplication Table 二分
来源:互联网 发布:自动阅读软件 编辑:程序博客网 时间:2024/05/20 01:10
http://codeforces.com/contest/448/problem/D
Bizon the Champion isn't just charming, he also is very smart.
While some of us were learning the multiplication table, Bizon the Champion had fun in his own manner. Bizon the Champion painted ann × m multiplication table, where the element on the intersection of thei-th row and j-th column equalsi·j (the rows and columns of the table are numbered starting from 1). Then he was asked: what number in the table is thek-th largest number? Bizon the Champion always answered correctly and immediately. Can you repeat his success?
Consider the given multiplication table. If you write out all n·m numbers from the table in the non-decreasing order, then thek-th number you write out is called the k-th largest number.
The single line contains integers n, m and k (1 ≤ n, m ≤ 5·105; 1 ≤ k ≤ n·m).
Print the k-th largest number in a n × m multiplication table.
2 2 2
2
2 3 4
3
1 10 5
5思路: 数值很大的时候就要考虑二分了! 2^30 大概就2 乘10的9次 ,所以25*10的10 的数,二分的次数不过才30多次;
时间复杂度差不多就 30 * o(10的5)
#include<stdio.h>#include<string.h>#include<math.h>#include<string>#include<iostream>#include<algorithm>#include<vector>#include<queue>#include<list>#include<map>#include<set>using namespace std;typedef long long LL;LL n,m,k;bool check(LL x){ LL r=min(x,n); LL cnt=0; for(int i=1;i<=r;i++){ cnt+=min(x/i,m); } if(cnt>=k) return 1; else return 0;}void deal(){ LL st=1,ed=n*m; while(st<ed){ LL mid=(st+ed)>>1; if(check(mid)) ed=mid; else st=mid+1; } cout << st << endl;}int main(){//freopen("in.in","r",stdin);while(cin>>n>>m>>k){ deal();}return 0;}
- CF 256# D. Multiplication Table 二分
- CF(#256)D. Multiplication Table
- CF 448D Multiplication Table
- D. Multiplication Table 二分查找
- Multiplication Table - #256 (Div. 2) D (448D) 二分
- Codeforces Round #256 (Div. 2) D. Multiplication Table 二分
- Codeforces Round #256 (Div. 2) D Multiplication Table (二分)
- Codeforces Round #256 (Div. 2) D. Multiplication Table 【二分】
- codeforces Round 256(Div.2)D.Multiplication Table(二分)
- codeforces D. Multiplication Table 二分答案
- 【CodeForces】448D - Multiplication Table(二分)
- Codeforces 448D Multiplication Table(二分)
- CodeForces 448D Multiplication Table (二分 )
- CodeForces 448D Multiplication Table (二分 )
- CodeForces 448D - Multiplication Table(二分)
- CF Codeforces Round #256 (Div. 2) D (448D) Multiplication Table
- Codeforces Round #256 (Div. 2) D. Multiplication Table(二分查找)
- Codeforces Round #256 (Div. 2) D Multiplication Table(很巧妙二分)
- Codeforces Round #1C Ancient Berland Circus
- 区间Dp 暴力枚举+动态规划 Hdu1081
- 2014-07-19java小成绩
- Corporative Network +uvalive+并查集
- 广义霍夫变换GHT
- CF 256# D. Multiplication Table 二分
- C++ Primer Plus第六版 第七章 编程练习答案
- teamviewer原理和阻止方法
- 大数相乘
- 将整形转化为字符串
- POJ 3254 Corn Fields 状压DP
- 1+11+111+1111+11111+……+11……11(2009个1)的和有多少个1?
- kobo touch N905B刷Koreader
- js全选和反选