博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
POJ - 3685 Matrix
阅读量:5068 次
发布时间:2019-06-12

本文共 1606 字,大约阅读时间需要 5 分钟。

二分kth,答案满足的条件为:m ≤ 小于等于x的值数cntx。x和cntx单调不减,随着x增大,条件成立可表示为:0001111。

本地打一个小型的表可以发现列编号j固定时候,目标函数f(i,j)似乎具有单调性。

变形,f(i,j) = (i+100000+j)*i + j2 - 100000,可以看出确实具有单调性。

于是得到如下算法: 二分x,统计cnt时候,枚举j,再套一个二分。

/**********************************************************            ------------------                          **   author AbyssalFish                                   ***********************************************************/#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;typedef long long ll;ll n, m;const int d = 1e5;inline ll f(ll j,ll i){ return (i+d+j)*i + (j-d)*j; }int upp_b(ll j, ll x){ if(f(j,1) > x) return 0; int lb = 1, ub = n, md; while(lb < ub ){ md = (lb+ub+1)>>1; //f(j,md)>x? ub = md+1:lb = md+1; f(j,md)<=x? lb = md:ub = md-1; } return lb;}ll solve(){ if(m == 1) { ll ans = (3*n+d)*n; for(ll j = 1; j <= n; j++){ ans = min(ans, (1+d+j)+(j-d)*j); } return ans; } if(m == n*n){ ll ans = -(3*n+d)*n; for(ll j = 1; j <= n; j++){ ans = max(ans, (n+d+j)*n-d*j+j*j); } return ans; } ll lb = -(3*n+d)*n, ub = -lb, md; while(lb < ub){ md = (lb+ub)>>1; ll upb = 0; for(ll j = 1; j <= n; j++){ upb += upp_b(j,md); } upb >= m?ub = md:lb = md+1; } return lb;}//#define LOCALint main(){#ifdef LOCAL freopen("in.txt","r",stdin);#endif int T; scanf("%d",&T); while(T--){ scanf("%I64d%I64d",&n,&m); printf("%I64d\n", solve()); } return 0;}

 

转载于:https://www.cnblogs.com/jerryRey/p/4972645.html

你可能感兴趣的文章
jquery datagrid 后台获取datatable处理成正确的json字符串
查看>>
作业一
查看>>
AJAX
查看>>
ActiveMQ与spring整合
查看>>
web服务器
查看>>
Git的使用--打tag
查看>>
F# 编程 借助 F# 构建 MVVM 应用程序
查看>>
ACFUN切换代码自用。。。
查看>>
网卡流量检测.py
查看>>
【转】Android的权限permission
查看>>
ajax
查看>>
poj1981 Circle and Points 单位圆覆盖问题
查看>>
POP的Stroke动画
查看>>
线程同步机制初识 【转载】
查看>>
Oracle 游标使用全解
查看>>
SQL语句在查询分析器中可以执行,代码中不能执行
查看>>
yii 1.x 添加 rules 验证url数组
查看>>
html+css 布局篇
查看>>
银行排队问题(详解队列)
查看>>
序列化和反序列化(1)---[Serializable]
查看>>