POJ-3685-二分
来源:互联网 发布:淘宝双十一报名入口 编辑:程序博客网 时间:2024/05/23 23:29
题目大意:有一个n*n的矩阵,第i行第j列元素的值为i*i+100000*i+j*j-100000*j+i*j;问第m大的元素是什么;
题目解析:注意到如果j确定的话,那么函数就是关于i的增函数,所以可以二分再二分;
AC代码:
#include<iostream>#include<cstdio>#include<cstring>#include<string>#include<algorithm>using namespace std;typedef long long ll;ll n,m;ll fun(ll x,ll y){ return x*x+100000*x+y*y-100000*y+x*y;}bool ok(ll t){ ll cnt=0; for(ll j=1;j<=n;j++) { ll l=1; ll r=n,ans=0; while(l<=r) { ll mid=(l+r)>>1; if(l==0&&r==0) { ans=0; break; } if(fun(mid,j)<=t) { ans=mid; l=mid+1; } else { r=mid-1; } } cnt+=ans; } return cnt>=m;}int main(){ int cas; scanf("%d",&cas); while(cas--) { scanf("%lld%lld",&n,&m); ll l=-100000*n,r=2*n*n+100000*n,ans; while(l<=r) { ll mid=(l+r)>>1; if(ok(mid)) { ans=mid; r=mid-1; } else { l=mid+1; } } printf("%lld\n",ans); } return 0;}
0 0
- poj 3685 二分套二分
- poj 3685 二分套二分
- 二分-poj-3685-Matrix
- POJ - 3685 Matrix 二分
- POJ 3685:Matrix 二分
- POJ - 3685 Matrix(二分)
- POJ-3685-二分
- poj 3685 Matrix (二分+枚举+二分)
- poj 3685 Matrix (二分套二分)
- POJ 3685 Matrix(二分套二分)
- poj 3685 Matrix 二分里套二分
- Poj 3685(经典二分)
- POJ 3685Matrix(两次二分)
- POJ 3685 - Matrix(二分搜索)
- POJ-3685---Matrix (二分)
- POJ 3685 Matrix 二维的二分
- POJ 3685 Matrix (二分搜索)
- poj 3685 Matrix(二分嵌套)
- unity Ngui
- PostgreSQL常用语句
- Codeforces Round #343 (Div. 2) D. Babaei and Birthday Cake (复杂的DP)
- 关于listView ui更新的问题
- mongodb[三] 文档操作:插入、更新、删除
- POJ-3685-二分
- 了解LoRa
- 无人机常用术语及缩写
- 输入字母来判断星期几的问题
- 国有资产管理处组织召开新版固定资产管理系统操作培训会
- Shell对IP合法性检查
- c++的istream如果想在循环体中重复使用,请按如下操作
- HDU1232 畅通工程
- js闭包转载jb.51