WHY吃糖果 QDUOJ 二分嵌套

原题链接

解题思路参考链接

题意

给出一个\(n*n\)的矩阵,每个格子的权值为\(i*i+j*j+i*j+100000*(i-j)\),求该矩阵中第m小的权值为多少

解题思路

当列数固定时,这个函数是随着行数的增加而增加的(二次函数简单判断下就行),于是外层的二分进行二分答案,里面的二分进行判断小于等于当前答案的格子有多少个。这样就可以解决问题。参考大佬的思路,可以点击查看。

代码实现

#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
typedef long long ll;
const ll inf=0x3f3f3f3f3f3f3f3f;
ll n, m; ll mul(ll i, ll j)
{
return i*i+j*j+i*j+100000*(i-j);
} ll judge(ll x)
{
ll ret=0;
for(ll j=1; j<=n; j++)
{
ll l=1, r=n, mid, tmp=0;
while(l<=r)
{
mid=(l+r)>>1; //这是行数
if(mul(mid, j) <= x)
{
tmp=mid;//在列数一定时,有多少个格子满足要求
l=mid+1;
}
else
r=mid-1;
}
ret+=tmp;//这里是所有的格子里面满足要求的格子数
}
return ret;
} int main()
{
int t;
scanf("%d", &t);
while(t--)
{
ll L=-inf, R=inf, ans, mid;
cin>>n>>m;
while(L<=R)
{
mid=(L+R)>>1;
if(judge(mid) < m) //这里需要注意一下,没有等号
{
L=mid+1;
}
else
{
ans=mid;
R=mid-1;
} }
printf("%lld\n", ans);
}
return 0;
}

WHY吃糖果 QDUOJ 二分嵌套的更多相关文章

  1. HD1205吃糖果(鸽巢、抽屉原理)

    吃糖果 Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others)Total Submiss ...

  2. zzuli oj 1146 吃糖果

    Description HOHO,终于从Speakless手上赢走了所有的糖果,是Gardon吃糖果时有个特殊的癖好,就是不喜欢连续两次吃一样的糖果,喜欢先吃一颗A种类的糖果,下一次换一种 口味,吃一 ...

  3. COJN 0584 800603吃糖果

    800603吃糖果 难度级别:B: 运行时间限制:1000ms: 运行空间限制:51200KB: 代码长度限制:2000000B 试题描述 名名的妈妈从外地出差回来,带了一盒好吃又精美的巧克力给名名( ...

  4. HDU1205 吃糖果

    吃糖果 Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others) Total Submis ...

  5. HDU 1205 吃糖果(想想题)

    题目传送:http://acm.hdu.edu.cn/showproblem.php?pid=1205 Problem Description HOHO,终于从Speakless手上赢走了所有的糖果, ...

  6. 8I - 吃糖果

    HOHO,终于从Speakless手上赢走了所有的糖果,是Gardon吃糖果时有个特殊的癖好,就是不喜欢将一样的糖果放在一起吃,喜欢先吃一种,下一次吃另一种,这样:可是Gardon不知道是否存在一种吃 ...

  7. Hdu1205 吃糖果 2017-06-29 14:26 24人阅读 评论(0) 收藏

    吃糖果 Problem Description HOHO,终于从Speakless手上赢走了所有的糖果,是Gardon吃糖果时有个特殊的癖好,就是不喜欢将一样的糖果放在一起吃,喜欢先吃一种,下一次吃另 ...

  8. [DP题]吃糖果

    1944:吃糖果 总时间限制:1000ms内存限制:65536kB 描述 名名的妈妈从外地出差回来,带了一盒好吃又精美的巧克力给名名(盒内共有 N 块巧克力,20 > N >0).妈妈告诉 ...

  9. [HDU1205]吃糖果 题解(鸽巢原理)

    [HDU1205]吃糖果 Description -HOHO,终于从Speakless手上赢走了所有的糖果,是Gardon吃糖果时有个特殊的癖好,就是不喜欢将一样的糖果放在一起吃,喜欢先吃一种,下一次 ...

随机推荐

  1. print的位置差异

    第一种,for循环和print是同级的,只有当for循环结束了才会print d=[]for i in range(1, 101): d.append(i)print d[6::7] 第二种,也就是p ...

  2. Pycharm中文显示异常

    pycharm2019,中文显示乱码异常,配置了encoding为utf8还是不行,需要设置备用字体 原因是某些英文字体库不支持非英文字符,无法显示 设置fallback字体 File-setting ...

  3. CSP-S2019游记&拆塔记

    不是拆广州塔 Day -inf 四套NOI模拟降智 Day0 拆了一发新新 本来想复习小圆脸结果拆了3h最后还没带任意门 没有帘子可还行 第一天由于没发现被子可以抽出来就没睡好 Day1 8:30开考 ...

  4. idea编写第一个springboot程序

    1. 创建一个 springboot 项目 使用 idea 创建的基本步骤: 2. 加入父级,起步依赖 pom.xml文件内容: <?xml version="1.0" en ...

  5. html canvas标签 语法

    html canvas标签 语法 canvas是什么意思? 作用:定义图形,比如图表和其他图像. 说明:<canvas> 标签只是图形容器,通过脚本 (通常是JavaScript)来完成, ...

  6. 中南林业大学校赛 I 背包问题 ( 折半枚举 || 01背包递归写法 )

    题目链接 题意 : 中文题 分析 :  价值和重量都太过于大,所以采用折半枚举的方法,详细可以看挑战的超大背包问题 由于 n <= 30 那么可以不必直接记录状态来优化,面对每个用例 直接采用递 ...

  7. (三)mysql -- 逻辑控制

    条件控制 CASE validity_date THEN '月' THEN '年' ELSE '季' END CASE THEN '月' THEN '年' ELSE '季' END 循环控制 待补充

  8. EM 算法资料

    EM 算法的英文全称是: Expectation-Maximum. EM 算法的步骤 假设 \(Z\) 是隐变量,\(\theta\) 是待定参数. E 步:固定参数 \(\theta\),求 \(Z ...

  9. spring cloud:gateway-eureka-filter

    Spring Cloud Gateway 的 Filter 的生命周期不像 Zuul 的那么丰富,它只有两个:“pre” 和 “post”. PRE: 这种过滤器在请求被路由之前调用.我们可利用这种过 ...

  10. WebView:是应用程序打开web网页的UI控件前台

    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools= ...