题意:传送门
题解:根据题意可以直接看出使用二分来做,但是数据范围是100001000010000,二分+++判断下来复杂度为O(n2∗logn)O(n^2*logn)O(n2∗logn)肯定会TTT,但是点的个数最多只给出500500500个,就算各不相同,那么离散下来也就只有100010001000,再算复杂度可以,然后就是将坐标离散化,进行前缀和,然后进行二分判定,判定中有个细节,就是草是在一个一个格子上的,所以细节需要多多调试。
code:code:code:

#include<iostream>
#include<cstdio>
#include<algorithm>
#include<vector>
#define pii pair<int,int>
using namespace std;
inline int read()
{int x=0,f=1;char ch=getchar();while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();}return x*f;
}
const int N=1010;
int c,n,sum[N][N];
pii points[N];
vector<int>numbers;
int get(int x){return lower_bound(numbers.begin(),numbers.end(),x)-numbers.begin();}
bool check(int len)
{for(int x1=0,x2=1;x2<numbers.size();x2++){while(numbers[x2]-numbers[x1+1]+1>len)x1++;for(int y1=0,y2=1;y2<numbers.size();y2++){while(numbers[y2]-numbers[y1+1]+1>len)y1++;if(sum[x2][y2]-sum[x1][y2]-sum[x2][y1]+sum[x1][y1]>=c)return true;}}return false;
}
int main()
{c=read();n=read();numbers.push_back(0);for(int i=0;i<n;i++){points[i].first=read();points[i].second=read();numbers.push_back(points[i].first);numbers.push_back(points[i].second);}sort(numbers.begin(),numbers.end());numbers.erase(unique(numbers.begin(),numbers.end()),numbers.end());for(int i=0;i<n;i++){int x=get(points[i].first),y=get(points[i].second);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=10000;while(l<r){int mid=l+r>>1;if(check(mid))r=mid;else l=mid+1;}printf("%d\n",r);return 0;
}

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

  1. POJ 3061 (二分+前缀和or尺取法)

    题目链接: http://poj.org/problem?id=3061 题目大意:找到最短的序列长度,使得序列元素和大于S. 解题思路: 两种思路. 一种是二分+前缀和.复杂度O(nlogn).有点 ...

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

    POJ - 3179 Corral the Cows #include<iostream> #include<vector> #include<algorithm> ...

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

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

  4. POJ - 2018 二分+单调子段和

    依然是学习分析方法的一道题 求一个长度为n的序列中的一个平均值最大且长度不小于L的子段,输出最大平均值 最值问题可二分,从而转变为判定性问题:是否存在长度大于等于L且平均值大于等于mid的字段和 每个 ...

  5. 【实数二分/前缀和维护】Best Cow Fences

    Poj 2018 Best Cow Fences 实数二分+前缀和维护 调了一晚上, 但发现没什么注意事项orz 无输出只因eps定义成了int型QAQ哭唧唧 #include<cstdio&g ...

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

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

  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. P1083 借教室(标记永久化线段树/二分+前缀和)难度⭐⭐⭐★

    P1083 借教室 标记永久化线段树 很典型的区间修改问题,先输入赋值建树(这就是最典型的线段树呀,别忘了),然后修改 这里问的是是否有足够的空教室,所以线段树中 min 代表的是当前区间内最小的剩余 ...

最新文章

  1. php alert弹框按钮,PHP 实现类似js中alert() 提示框
  2. python非线性回归分析_sklearn实现非线性回归模型
  3. JS开发利器-IxEdit傻瓜式JavaScript开发工具(附下载、汉化版、视频教程)
  4. VS2013 编译程序时提示 无法查找或打开 PDB 文件
  5. Vector的简单使用
  6. 小程序 ios页面 左右滑动 解决方法
  7. 浅析Linux开发工具之Makefile
  8. C语言核心技术-C语言概述与开发环境搭建
  9. 再见了,余!额!宝!!!
  10. 终于购入Mac mini,发现HDMI接口与显示器不兼容,网购了一个VGA转换插头
  11. 阿里云云计算 23 VPC的基础架构
  12. python numpy函数手册_NumPy常用中文手册.pdf
  13. 软件设计文档国家标准—软件需求说明书(GB856T——88)
  14. MySQL定时备份并清理
  15. 微信扫码下载apk快速解决方案,中间页引导法
  16. HTML源码大放送1
  17. [1140]linux查看历史命令history
  18. 数据分析——两种求解R平方的方法
  19. office picture manger图片处理工具下载与安装教程
  20. python性能差_Python 性能分析大全

热门文章

  1. 企业研发流程演进之路
  2. MySQL修改数据库编码
  3. 读书笔记(六)--Catena
  4. ERROR: Unable to launch the RTL Schematic process. The input NGR file, Can not fnd the module的解决方法
  5. 赠书 | 十年运维经验总结出的智能运维系统落地方案,不得不赞
  6. 高品质免费字体集锦:25款英文艺术字体下载
  7. Android控制图片在屏幕内缩放和移动
  8. 分享微信答题活动制作步骤_制作微信答题活动要注意什么
  9. 2008年中国富豪榜今日发布,以下为富豪榜101-200名
  10. 西安西北大学计算机排名,全国计算机排名真是这样吗?