博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
2017.10.4 国庆清北 D4T2 正方形
阅读量:4604 次
发布时间:2019-06-09

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

题目描述

在一个10000*10000的二维平面上,有n颗糖果。

LYK喜欢吃糖果!并且它给自己立了规定,一定要吃其中的至少C颗糖果!

事与愿违,LYK只被允许圈出一个正方形,它只能吃在正方形里面的糖果。并且它需要支付正方形边长的价钱。

LYK为了满足自己的求食欲,它不得不花钱来圈一个正方形,但它想花的钱尽可能少,你能帮帮它吗?

输入输出格式

输入格式:

第一行两个数C和n。

接下来n行,每行两个数xi,yi表示糖果的坐标。

输出格式:

一个数表示答案。

 

输入输出样例

输入样例#1:
3 41 22 14 15 2
输出样例#1:
4样例解释选择左上角在(1,1),右下角在(4,4)的正方形,边长为4。

说明

对于30%的数据n<=10。

对于50%的数据n<=50。

对于80%的数据n<=300。

对于100%的数据n<=1000。1<=xi,yi<=10000。

 

1 /* 2 如果边长为x可行,边长x+1也一定能覆盖至少C个糖果 3 假如x不可行,边长为x-1是不可能覆盖C个糖果的。 ——> 二分答案。 4 l=1,r=10000,  判断mid是否可行,  可行->  答案在[l,mid] ,不可行 -> (mid,r] 5 while (l<=r) {if (!check((l+r)/2)) l=(l+r)/2+1; else r=(l+r)/2-1;} 6 二分完答案后,怎么判定。 7 ↓↓↓↓↓↓↓↓↓↓↓ 8 枚举上边在哪里。 9 下边的位置是固定的。10 哪些糖果被夹在这段区间中。 O(n)11 12 左边为1的情况下,右边是什么13 随着左边向右移动,右边也一定向右移动。14 左边至多移动n次,右边也至多移动n次,总共2n次。  O(n)15 */16 17 #include
18 #include
19 #include
20 #include
21 #include
22 using namespace std;23 24 int C,n,L,R,mid,temp[1005];25 struct Candy26 {27 int x,y;28 bool operator < (Candy a) const //在结构体里一定要写const29 {30 return x
x) //边长比二分的边长大了 54 {55 if(judge(l,i-1)) return true; //判断是否可行,i-1是因为要找的边长<=mid 56 while(candy[i].x-candy[l].x>x) l++; //不行的话,左边界向右移动 57 }58 }59 if(judge(l,n)) return true; //单独判断n为右边界的时候是否可行,因为r==n时没法在上面的for循环中写 60 return false;61 }62 63 int main()64 {65 scanf("%d%d",&C,&n);66 for(int i=1;i<=n;i++)67 {68 scanf("%d%d",&candy[i].x,&candy[i].y);69 }70 sort(candy+1,candy+n+1);71 L=1,R=10000;72 while(L<=R) //二分一个边长 73 {74 mid=(L+R)>>1;75 if(check(mid)) R=mid-1;76 else L=mid+1;77 }78 printf("%d",L+1);79 return 0;80 }
View Code

转载于:https://www.cnblogs.com/lovewhy/p/7649342.html

你可能感兴趣的文章
-Dmaven.multiModuleProjectDirectory system propery is not set.
查看>>
Python2 unichr() 函数
查看>>
Python 字典 copy()方法
查看>>
Minimum Path Sum
查看>>
Remove Duplicates from Sorted Array II
查看>>
常量指针和指针常量巧妙记忆方法[转]
查看>>
python-haproxy作业讲解视频总结
查看>>
mui搜索框 搜索点击事件
查看>>
A == B ?
查看>>
洛谷P3763 [Tjoi2017]DNA 【后缀数组】
查看>>
UVa 442 Matrix Chain Multiplication(矩阵链,模拟栈)
查看>>
多种方法求解八数码问题
查看>>
spring mvc ModelAndView向前台传值
查看>>
(黑客游戏)HackTheGame1.21 过关攻略
查看>>
Transparency Tutorial with C# - Part 2
查看>>
android 文件上传
查看>>
ASCII 码表对照
查看>>
javascript的DOM操作获取元素
查看>>
Shuffle'm Up(串)
查看>>
20145219 《Java程序设计》第06周学习总结
查看>>