POJ3179 Corral the Cows题解
我就是个垃圾……一道水题能写这么长时间……
首先看到题就想到了二维前缀和+二分边长,但地图边长10000,得离散化。
于是这个离散化就把我搞疯了,淦。
这反映出现在基础知识还是不牢固,相当不牢固。
复杂度不会算,淦。(但应该不会超过\(O(C^2\log N)\)
具体看代码吧……
#include <iostream>
#include <cstdio>
#include <algorithm>
using namespace std;
struct P{int x,y;}a[505];
int c,n,dx,dy,xx[10005],yy[10005];
int x[505],y[505],s[505][505];
bool check(int k)
{
for(int i=xx[k];i<=dx;++i) //如果边长是k,那么从k的不同的数开始找起
for(int j=yy[k];j<=dy;++j)
{
int x0=0,y0=0;
if(x[i]-k>=0) x0=xx[x[i]-k]; //这里是一个映射原坐标的判断,这样的对应应该是没问题的
if(y[j]-k>=0) y0=yy[y[j]-k];
if(s[i][j]-s[x0][j]-s[i][y0]+s[x0][y0]>=c) return 1;
}
return 0;
}
int main()
{
scanf("%d%d",&c,&n);
for(int i=1;i<=n;++i)
{
scanf("%d%d",&a[i].x,&a[i].y);
xx[a[i].x]++,yy[a[i].y]++; //这是开了个桶
}
for(int i=1;i<=10000;++i)
{
if(xx[i]) x[++dx]=i; //如果这个桶有值,那么就把它扔进一个映射的数组里
xx[i]=dx; //可以发现x与xx是互为逆运算的,也就是x[i]表示第i个不同的数是几,
//xx[i]表示i这个数是第几个不同的数
if(yy[i]) y[++dy]=i;
yy[i]=dy;
}
for(int i=1;i<=n;++i) s[xx[a[i].x]][yy[a[i].y]]++; //我们用编号来做前缀和
for(int i=1;i<=dx;++i)
for(int j=1;j<=dy;++j)
s[i][j]+=s[i-1][j]+s[i][j-1]-s[i-1][j-1];
int l=1,r=10000,ans;
while(l<=r)
{
int mid=l+r>>1;
if(check(mid)) ans=mid,r=mid-1;
else l=mid+1;
}
printf("%d",ans);
return 0;
}
POJ3179 Corral the Cows题解的更多相关文章
- poj3179 Corral the Cows
论水题与难题的差距:在于一个upper_bound 那么,这题一看就很显然了:因为答案满足二分性质所以我们二分. 然后我们再建造一个二维前缀和,每次判断的时候怎么办呢? 我先以为是贪心:选择以每个点为 ...
- $Poj3179\ Corral\ the\ Cows$ 二分+离散化+二维前缀和
Poj $Description$ 在一个二维平面上,有$N$颗草,每颗草的大小是$1*1$,左下角坐标为$x_i,y_i$.要求一个正方形,正方形的边平行于$x$或$y$轴,正方形里面包含至少$C$ ...
- 【BZOJ1720】[Usaco2006 Jan]Corral the Cows 奶牛围栏 双指针法
[BZOJ1720][Usaco2006 Jan]Corral the Cows 奶牛围栏 Description Farmer John wishes to build a corral for h ...
- POJ 3179 Corral the Cows
Corral the Cows Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 1352 Accepted: 565 De ...
- 洛谷 P2862 [USACO06JAN]把牛Corral the Cows 解题报告
P2862 [USACO06JAN]把牛Corral the Cows 题目描述 Farmer John wishes to build a corral for his cows. Being fi ...
- 洛谷——P2862 [USACO06JAN]把牛Corral the Cows
P2862 [USACO06JAN]把牛Corral the Cows 题目描述 Farmer John wishes to build a corral for his cows. Being fi ...
- 洛谷P2862 [USACO06JAN]把牛Corral the Cows
P2862 [USACO06JAN]把牛Corral the Cows 题目描述 Farmer John wishes to build a corral for his cows. Being fi ...
- 洛谷 P2862 [USACO06JAN]把牛Corral the Cows
P2862 [USACO06JAN]把牛Corral the Cows 题目描述 Farmer John wishes to build a corral for his cows. Being fi ...
- POJ2182 Lost Cows 题解
POJ2182 Lost Cows 题解 描述 有\(N\)(\(2 <= N <= 8,000\))头母牛,每头母牛有自己的独一无二编号(\(1..N\)). 现在\(N\)头母牛站成一 ...
随机推荐
- java基础第一节课随笔
第一题:1.定义一个HelloWold类2.在类中定义主方法3.在主方法中使用输出语句在dos控制台打印HelloWorld 打印结果如:HelloWorld4.在案例中使用当行注释.多行注释添加相关 ...
- XML文件存在中文注释报错问题( 3 字节的 UTF-8 序列的字节 3 无效)
今天在做mybatis项目的时候,给映射文件添加了中文注释后,程序就报错.把中文注释删除后,程序又可以正常执行.解决方法在下文提到. 我的xml映射文件如下: <?xml version=&qu ...
- 01:HTTP协议
软件开发架构 cs 客户端 服务端bs 浏览器 服务端ps:bs本质也是cs 浏览器窗口输入网址回车发生了几件事 """ 1 浏览器朝服务端发送请求 2 服务端接受请 ...
- 给元素设置overflow:hidden,pc端正常,但移动端依然可以滑动
给设置overflow:hidden的元素设置position:fixed即可解决
- GlusterFS更换Brick
故障环境还原 GlusterFS集群系统一共有4个节点,集群信息如下 # 分别在各个节点上配置hosts.同步好系统时间,关闭防火墙和selinux [root@glusterfs-master-8 ...
- Windows 11,一个新功能,一场新屠杀
6月24日,微软正式公布了新一代操作系统:Windows 11.这次的更新距离上一代操作系统Windows 10的发布,隔了有6年之久. 在新一代的操作系统中,包含了这些亮点: 采用了全新的UI设计. ...
- 熬夜总结vue3中setUp函数的2个参数详解
1.setUp函数的第1个参数props setup(props,context){} 第一个参数props: props是一个对象,包含父组件传递给子组件的所有数据. 在子组件中使用props进行接 ...
- XML:使用cxf调用WebService接口时报错:编码GBK的不可映射字符(设置UTF-8字符集)
调用代码如下 JaxWsDynamicClientFactory dcf = JaxWsDynamicClientFactory.newInstance(); Client client = dcf. ...
- imply套件以及plyql的安装
本文出自:http://www.cnblogs.com/gaojiang/p/7212149.html 1.安装nodejs,版本需要在4.0以上,安装方法见上篇博客 2.下载imply,地址:htt ...
- 线程中的yield()
属于本地方法 /** * A hint to the scheduler that the current thread is willing to yield * its current use o ...