POJ - 3179 Corral the Cows

#include<iostream>
#include<vector>
#include<algorithm>
#define x first
#define y second
using namespace std;typedef pair<int,int>PII;
const int N = 1010;int n,c;
int sum[N][N];     //前缀和
vector<PII>points; //点的坐标
vector<int>numbers;//离散化结果int get_id(int n)
{int l=0,r=numbers.size()-1;while(l<r){int mid=l+r>>1;if(numbers[mid]>=n) r=mid;else l=mid+1;} return r;
} bool check(int len)
{for(int x1=1,x2=1;x2<numbers.size();x2++){while(numbers[x2]-numbers[x1]+1>len) x1++;for(int y1=1,y2=1;y2<numbers.size();y2++){while(numbers[y2]-numbers[y1]+1>len) y1++;if(sum[x2][y2]-sum[x1-1][y2]-sum[x2][y1-1]+sum[x1-1][y1-1]>=c) return true;//因为包括边界,所以左上角坐标需要-1}}return false;
} int main()
{cin>>c>>n;numbers.push_back(0);for(int i=0;i<n;i++){int x,y;cin>>x>>y;numbers.push_back(x);numbers.push_back(y);points.push_back({x,y});}sort(numbers.begin(),numbers.end());numbers.erase(unique(numbers.begin(),numbers.end()),numbers.end());//因为相同的数字只需要一个离散化的结果for(int i=0;i<n;i++){int x=get_id(points[i].x),y=get_id(points[i].y);sum[x][y]++;}for(int i=1;i<numbers.size();i++)for(int j=1;j<numbers.size();j++)sum[i][j]+=sum[i-1][j]+sum[i][j-1]-sum[i-1][j-1];int l=1,r=10010;while(l<r){int mid=l+r>>1;if(check(mid)) r=mid;else l=mid+1;}cout<<r<<endl;return 0;
}

POJ - 3179 Corral the Cows(二分,离散化,前缀和)相关推荐

  1. POJ - 3179 Corral the Cows【离散化】【前缀和】

    [题目描述] Farmer John wishes to build a corral for his cows. Being finicky beasts, they demand that the ...

  2. POJ - 3179 Corral the Cows(离散化+二分+二维前缀和)

    题目链接:点击查看 题目大意:在二维平面中给出n个点,每个位置都有一个一个三叶草,现在需要求出一个长方形区域,要求长方形边长最短,并且面积内部包含至少C个三叶草 题目分析:题目给出的n最大为500,但 ...

  3. POJ3179 Corral the Cows 离散化 二分 前缀和

    题目链接 http://poj.org/problem?id=3179 分析 容易想到二分和前缀和,难点在于坐标离散化,要将横纵坐标分别离散化. 对于三叶草的每个坐标,将其映射为次序: 没有三叶草的位 ...

  4. poj3179 Corral the Cows

    二分+离散化+前缀和好像过不了...就先gu了. 只能拿70分. #include<bits/stdc++.h> using namespace std; vector<int> ...

  5. Corral the Cows(二分、前缀和、离散化)

    题面:Corral the Cows[牛客] 题目大意 有 nnn 个单位的三叶草,每单位三叶草占据一个 1×11×11×1 的土地,每块土地的位置由其左下角的下标确定,并且下标 xxx 和 yyy ...

  6. 【USACO06JAN POJ3179】Corral the Cows

    POJ 洛谷 分析 离散化+前缀和+二分 这题和激光炸弹很像,但由于坐标范围较大,需要用到二分. 代码 #include <cstdio> #include <cstring> ...

  7. 洛谷 P2862 [USACO06JAN]把牛Corral the Cows 解题报告

    P2862 [USACO06JAN]把牛Corral the Cows 题目描述 Farmer John wishes to build a corral for his cows. Being fi ...

  8. 洛谷P2862 [USACO06JAN]把牛Corral the Cows

    P2862 [USACO06JAN]把牛Corral the Cows 题目描述 Farmer John wishes to build a corral for his cows. Being fi ...

  9. 算法竞赛进阶指南0x10练习7:Corral the Cows

    农夫约翰希望为他的奶牛们建立一个畜栏. 这些挑剔的畜生要求畜栏必须是正方形的,而且至少要包含 C 单位的三叶草,来当做它们的下午茶. 畜栏的边缘必须与 X,Y轴平行. 约翰的土地里一共包含 N 单位的 ...

最新文章

  1. linux编程 fmemopen函数打开一个内存流 使用FILE指针进行读写访问
  2. spark 架构_深入研究Spark内部和架构
  3. day01『NLP打卡营』实践课1:词向量应用演示
  4. 加州理工学院对高超声速飞行的早期研究
  5. 【调用IP宏文件进行仿真】modelsim仿真时出现 Instantiation of 'xxx' failed. The design unit was not found....
  6. CoreAnimation编程指南(八)事务 转自:http://www.dreamingwish.com/
  7. 著名加密艺术家XCOPY的NFT作品以1000ETH售出,约合173.5万美元
  8. 显示锁 java_第十三章:显示锁——Java并发编程实战
  9. DOS批处理删除文本文件重复的行
  10. 【转载】谈谈自己对REST、SOA、SOAP、RPC、ICE、ESB、BPM知识汇总及理解
  11. txt文件保存为Java_java实现写入并保存txt文件
  12. mysql version 50713_MySQL 5.6 升级为 MySQL 5.7
  13. 最常用的CSS字体库
  14. 怎么打开优酷的kux格式?教你把kux转换成mp4的方法
  15. C++新手入门第一课
  16. 蓝桥杯嵌入式快速入门
  17. HDU 5855 Less Time, More profit(最大权闭合图)
  18. 遍历所有点的最短路径python_图遍历算法之最短路径Dijkstra算法
  19. 关于Linux mint更换中文字体后全局楷体修改办法
  20. lightbox图片展示效果

热门文章

  1. HTML_hao123 1
  2. 【零基础】MT4量化入门一:跑一个简单的boll
  3. MT5交易软件使用技巧
  4. 网站 服务器 ftp地址,ftp服务器地址 登录ftp服务器的方式
  5. 成功的项目经理,都具有这6种特质
  6. LM358呼吸灯小设计
  7. 大数据项目一般金额多少_大数据工作月薪多少 就业前景好不好?
  8. Javascript夯实基础01
  9. hssfrow 单元格样式_POI实现上标下标和单元格部分样式修改
  10. 六种方法实现JavaScript数组去重