poj3685 二分套二分
Crawling in process... Crawling failed Time Limit:6000MS Memory Limit:65536KB 64bit IO Format:%lld & %llu
Description
Given a N × N matrix A, whose element in the i-th row and j-th column Aij is an number that equals i2 + 100000 × i + j2 - 100000 × j + i × j, you are to find the M-th smallest element in the matrix.
Input
The first line of input is the number of test case.
For each test case there is only one line contains two integers, N(1 ≤ N ≤ 50,000) and M(1 ≤ M ≤ N × N). There is a blank line before each test case.
Output
For each test case output the answer on a single line.
Sample Input
121 12 12 22 32 43 13 23 83 95 15 255 10
Sample Output
3 -99993 3 12 100007 -199987 -99993 100019 200013 -399969 400031 -99939 题目大意:给你一个n*n矩阵,每一个位置都有一个值,这个值由该点的该点的行列标决定,问你第m小的元素是多少。思路分析:比赛时都贴上二分标签了,最后还没敲出来,首次我们要二分答案,然后check,check函数里面按列进行枚举,因为在j确定的情况下函数关于i递增,然后直接二分查找刚好小于等于mid的元素在每一列的位置,累加return,判断返回的数与m的关系,继续二分代码:
#include <iostream> #include <algorithm> #include <cstdio> #include <cstring> #include <cmath> using namespace std; const int inf=1e9; typedef long long ll; const int C=100000; ll f(ll x,ll y) {return (x*x+C*x+y*y-C*y+x*y); } ll n,m; ll checknum(ll num) {ll cnt=0;for(int i=1;i<=n;i++)//枚举列,因为在列数确定的情况下表达式关于i是递增的 {ll sl=1,sr=n;int ant=0;while(sl<=sr){ll smid=(sl+sr)>>1;if(f(smid,i)<=num){ant=smid;sl=smid+1;}else sr=smid-1;}cnt+=ant;}return cnt; } int main() {int T;scanf("%d",&T);while(T--){scanf("%lld%lld",&n,&m);ll l=-100000*n,r=n*n+100000*n+n*n+n*n;ll ans;while(l<=r){ll mid=(l+r)>>1;//cout<<mid<<endl;if(checknum(mid)>=m){ans=mid;//cout<<ans<<endl;r=mid-1;}else l=mid+1;// cout<<ans<<endl; }printf("%lld\n",ans);} }
转载于:https://www.cnblogs.com/xuejianye/p/5691120.html
poj3685 二分套二分相关推荐
- qduoj - WHY吃糖果(二分套二分)
题目链接:点击查看 题目大意:给出一个n*n的矩阵,每个格子的权值为i*i+j*j+i*j+100000*(i-j),求该矩阵中第m小的权值为多少 题目分析:这个题在选拔的时候给我整自闭了,看到n有5 ...
- 主席树 + 后缀数组求LCP + 二分套二分 ---- P4094 [HEOI2016/TJOI2016]字符串
题目链接 题目大意: 解题思路: 设我们的答案为midmidmid(注意这里有坑是[a,b][a,b][a,b]的所有子串和[c,d][c,d][c,d]这个子串的最长lcplcplcp),那么我们会 ...
- 牛客 - 乘法(二分套二分)
题目链接:点击查看 题目大意:给出一个n*m的矩阵,每个位置的元素为 maze [ i ] [ j ] = a [ i ] * b [ j ],现在给出数组 a 和数组 b ,求出矩阵中第k大的数 题 ...
- 【NOI2012】骑行川藏【拉格朗日乘数法】【二分套二分】
传送门 拉格朗日乘数法裸题 限制 f({v})=∑i=1nkisi(vi−vi′)=EUf(\{v\})=\sum_{i=1}^nk_is_i(v_i-v_i')=E_Uf({v})=i=1∑nki ...
- 二分查找 二分答案 万字详解,超多例题,带你学透二分。
很多人对二分感到很苦恼,很困惑,可能是因为二分的边界很难掌握,也许是判断条件难写- 然而,很幸运,你找到了这篇文章,仔细看下去,这篇文章将带你学透二分!!! 二分可以简单分为二分查找与二分答案. 可能 ...
- LibreOJ #2006. 「SCOI2015」小凸玩矩阵 二分答案+二分匹配
#2006. 「SCOI2015」小凸玩矩阵 内存限制:256 MiB时间限制:1000 ms标准输入输出 题目类型:传统评测方式:文本比较 上传者: 匿名 提交提交记录统计讨论测试数据 题目描述 小 ...
- [CTSC2018]混合果汁 二分 套 主席树上二分
题意: n种果汁,第iii种果汁的美味程度是did_idi有lil_ili升,价格是pip_ipi升 mmm个询问,要求使用果汁的总量不小于LimLimLim,价格不超过GGG,最大化所用的果 ...
- 外卖(food) 洛谷4040宅男计划 三分套二分贪心
food评测传送门 [题目描述] 叫外卖是一个技术活,宅男宅女们一直面对着一个很大的矛盾,如何以有限的金钱在宿舍宅得尽量久. 外卖店一共有 N 种食物,每种食物有固定的价钱 Pi 与保质期 S ...
- P2839 [国家集训队]middle(二分 套 主席树)
P2839 [国家集训队]middle 有一个长度为nnn的序列,有mmm次询问,每次询问a,b,c,da, b, c, da,b,c,d,为l∈[a,b],r∈[c,d]l \in [a, b], ...
最新文章
- c语言中的if语句_If ... C中的其他语句解释
- [转]关于WM_NCHITTEST消息
- 现在的编程语言越来越多,为什么 C 和 C++ 还没有被现在的时代淘汰呢?
- Editor:实用的在线编辑器(WYSIWYG Editor)
- python replace替换多个字符_关于python:使用string.replace(x,y)替换所有
- 创建war类型的maven工程时报web.xml is missing and failOnMissingWebXml is set to true
- Recoil 是 React 的状态管理库
- 薄板冲压成型过程的计算机仿真与应用,薄板冲压成型过程的计算机仿真与应用_钟志华.pdf...
- VB.net中的sender和e
- 奇怪的等待事件“enq: ss - contention”
- 安全教育平台账号后四位_安全教育平台账号登录入口https://www.xueanquan.com/
- logstash nginx error access 日志处理
- Linux下登陆mysql服务器不需要输入账号密码信息
- MIDIPLUS STUDIO M S 2 4声卡安装调试教程
- 连点4次android版本,连点器极速版下载-连点器快速版v4.0.8 安卓版 - 极光下载站...
- GEE(python)雨天Gini指数
- Hadoop官网查看手册
- 【物联网平台篇9】使用MQTT上传图片到OneNET
- ChatGPT 爆火!谷歌、微软、百度纷纷下场?
- IDEA创建web工程+tomcat配置