题意:传送门
题解:根据题意可以直接看出使用二分来做,但是数据范围是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. 【AngularJS】—— 12 独立作用域
  2. WebService入门Demo
  3. 有趣c语言编程经典例子,C语言简单有趣例子总结ZWF.pdf
  4. xnio java_java基础篇---新I/O技术(NIO)
  5. 一张图告诉你,自学编程和科班程序员的差别在哪
  6. 微软1月补丁星期二值得关注的蠕虫及其它
  7. 在.NET项目中使用PostSharp,使用MemoryCache实现缓存的处理
  8. linux 0.01内核分析与操作系统设计 百度网盘,《Linux 0.01内核分析与操作系统设计——创造你自己的操作系统》...
  9. PYTHON 爬虫 必应词典翻译爬取
  10. 用 Python 实现植物大战僵尸代码
  11. 孪生网络pytoch实现,以resnet为特征提取网络
  12. 隐藏百度地图logo
  13. android中RecyclerView添加下划线
  14. VM虚拟机下如何和Windows主机共享文件夹
  15. Nature重磅:AI直接从大脑中合成脑电波
  16. Fedora13 添加 网易镜像源
  17. power bi -分组累计求和
  18. 计算任意年份之间的天数
  19. java单根结构_对象导论:单根继承结构
  20. 臧圩人:java面试题解惑系列(一)——类的初始化顺序学习笔记

热门文章

  1. UVA之11462 - Age Sort
  2. Python基础-类变量和实例变量
  3. CFS(完全公平调度算法)
  4. 六(1)、spark遇到的问题
  5. 在珠海python工资一般多少钱_珠海学习BI工资多少,大数据的应用
  6. 中俄博览会谈下大单 云从科技“展”露头角
  7. 多线程实例之售卖车票
  8. 爆肝一周,用Python在物联网设备上写了个智能语音助手
  9. 东华大学计算机蔡博士,我院2018届博士生蔡圆获得第二届全国偏微分方程优秀博士论文奖...
  10. 小白也能动手搭建属于自己的博客网站