【POJ】3685
来源:互联网 发布:怎么使用同花顺软件 编辑:程序博客网 时间:2024/06/11 09:04
http://poj.org/problem?id=3685
N阶矩阵,Aij= i^2 + 100000 × i + j^2 – 100000 × j + i × j,求第M小的元素。
双重二分。
(1)先二分枚举比 mid 小的个数。
(2)观察 式子【 i^2 + 100000 × i + j^2 – 100000 × j + i × j】,它与呈i单调关系,所以每次枚举J,二分i,统计该列小于mid的个数。
#include <iostream>#include <cstdio>#include <cstring>#include <cmath>#include <queue>#include <algorithm>using namespace std;long long t,n,m;long long ans;long long f(long long i,long long j){ return i*i+100000*i+j*j-100000*j+i*j;}bool Less(long long mid){ long long cnt=0; //每列比mid小的个数 for (long long j=1;j<=n;j++){ long long l=0,r=n+1; while (r-l>1){ long long i=(r+l)>>1; if (f(i,j)<mid) l=i; else r=i; } cnt+=l; } return cnt<m;}int main(){ cin >> t; while (t--){ cin >> n >> m; long long l=-100000*n,r=n*n+100000*n+n*n+n*n; while (r-l>1){ long long mid=(r+l)>>1; if (Less(mid)) l=mid; else r=mid; } cout << l << endl; }}
阅读全文
0 0
- POJ 3685
- 【POJ】3685
- 二分-poj-3685-Matrix
- Poj 3685 Matrix
- POJ-3685-Matrix
- POJ 3685 Matrix
- POJ - 3685 Matrix 二分
- POJ 3685:Matrix 二分
- POJ-3685Matrix
- POJ - 3685 Matrix(二分)
- POJ-3685-二分
- POJ
- poj
- POJ
- POJ
- poj
- poj
- POJ
- POJ 2431Expedition
- moofest
- 电脑显示内存不足的处理方法
- 半年总结
- what is signal?
- 【POJ】3685
- StringBuilder在高性能场景下的正确用法
- node.js中的DIRT程序
- Android面试题1
- CodeForces
- [Android]BroadcastQueue如何分发广播(四)
- 通过Amazon EC2来搭建基于pptpd协议的服务器
- JavaScript模块化 --- Commonjs、AMD、CMD、es6 modules
- 04:谁拿了最多奖学金