[Usaco2017 Dec] A Pie for a Pie
[题目链接]
https://www.lydsy.com/JudgeOnline/problem.php?id=5140
[算法]
最短路
时间复杂度 : O(N^2)
[代码]
#include<bits/stdc++.h>
using namespace std;
const int MAXN = 1e5 + ; struct info
{
int x , y , id;
} a[MAXN << ] , b[MAXN << ]; int n , d;
int dist[MAXN << ];
vector< int > G[MAXN << ];
queue< int > q; template <typename T> inline void chkmax(T &x,T y) { x = max(x,y); }
template <typename T> inline void chkmin(T &x,T y) { x = min(x,y); }
template <typename T> inline void read(T &x)
{
T f = ; x = ;
char c = getchar();
for (; !isdigit(c); c = getchar()) if (c == '-') f = -f;
for (; isdigit(c); c = getchar()) x = (x << ) + (x << ) + c - '';
x *= f;
}
inline bool cmpA(info a,info b)
{
return a.x < b.x;
}
inline bool cmpB(info a,info b)
{
return a.y < b.y;
} int main()
{ read(n); read(d);
for (int i = ; i <= n; i++)
{
read(a[i].x);
read(a[i].y);
}
for (int i = ; i <= n; i++)
{
read(b[i].x);
read(b[i].y);
}
memset(dist,,sizeof(dist));
for (int i = ; i <= n; i++)
{
if (a[i].y == )
{
q.push(i);
dist[i] = ;
}
a[i].id = i;
}
for (int i = ; i <= n; i++)
{
if (b[i].x == )
{
q.push(i + n);
dist[i + n] = ;
}
b[i].id = i + n;
}
sort(a + ,a + n + ,cmpA);
sort(b + ,b + n + ,cmpB);
for (int i = ; i <= n; i++)
{
int l = , r = n , pos = -;
while (l <= r)
{
int mid = (l + r) >> ;
if (b[mid].y >= a[i].y)
{
pos = mid;
r = mid - ;
} else l = mid + ;
}
if (pos == -) continue;
for (int j = pos; j <= n; j++)
{
if (b[j].y > a[i].y + d) break;
G[b[j].id].push_back(a[i].id);
}
}
for (int i = ; i <= n; i++)
{
int l = , r = n , pos = -;
while (l <= r)
{
int mid = (l + r) >> ;
if (a[mid].x >= b[i].x)
{
pos = mid;
r = mid - ;
} else l = mid + ;
}
if (pos == -) continue;
for (int j = pos; j <= n; j++)
{
if (a[j].x > b[i].x + d) break;
G[a[j].id].push_back(b[i].id);
}
}
while (!q.empty())
{
int cur = q.front();
q.pop();
for (unsigned i = ; i < G[cur].size(); i++)
{
int v = G[cur][i];
if (dist[v] != -) continue;
dist[v] = dist[cur] + ;
q.push(v);
}
}
for (int i = ; i <= n; i++) printf("%d\n",dist[i]); return ; }
[Usaco2017 Dec] A Pie for a Pie的更多相关文章
- 【BZOJ5138】[Usaco2017 Dec]Push a Box(强连通分量)
[BZOJ5138][Usaco2017 Dec]Push a Box(强连通分量) 题面 BZOJ 洛谷 题解 这题是今天看到萝卜在做然后他一眼秒了,我太菜了不会做,所以就来做做. 首先看完题目,是 ...
- BZOJ5142: [Usaco2017 Dec]Haybale Feast(双指针&set)(可线段树优化)
5142: [Usaco2017 Dec]Haybale Feast Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 182 Solved: 131[ ...
- BZOJ5142: [Usaco2017 Dec]Haybale Feast 线段树或二分答案
Description Farmer John is preparing a delicious meal for his cows! In his barn, he has NN haybales ...
- [BZOJ5139][Usaco2017 Dec]Greedy Gift Takers 权值线段树
Description Farmer John's nemesis, Farmer Nhoj, has NN cows (1≤N≤10^5), conveniently numbered 1…N. T ...
- BZOJ5137[Usaco2017 Dec]Standing Out from the Herd
看了半天题 不知道怎么用SAM维护 于是借(chao)鉴(xi)的一发神犇的 只要判断这个子串之前被标记的记号(也就是他属于第几个串)和这次转移到的是否相同 如果不同就说明该子串属于多个串 直接标记- ...
- bzoj5138 [Usaco2017 Dec]Push a Box
题目描述: bz luogu 题解: 暴力可以记录$AB$位置转移,这个时候状态是$n^4$的,无法接受. 考虑只记录$A$在$B$旁边时的状态,这个时候状态时$n^2$的. 所以说转移有两种,一种是 ...
- BZOJ5137: [Usaco2017 Dec]Standing Out from the Herd(广义后缀自动机,Parent树)
Description Just like humans, cows often appreciate feeling they are unique in some way. Since Farme ...
- BZOJ 5137: [Usaco2017 Dec]Standing Out from the Herd(后缀自动机)
传送门 解题思路 这个似乎和以前做过的一道题很像,只不过这个是求本质不同子串个数.肯定是先把广义\(SAM\)造出来,然后\(dfs\)时把子节点的信息合并到父节点上,看哪个只被一个串覆盖,\(ans ...
- tcpdump for android L 5.x with pie support
由于使用了NDK编译的可执行文件在应用中调用,在4.4及之前的版本上一直没出问题. 最近由于要测试在Android L上的运行情况发现,当运行该可执行文件时,报如下错误: error: only po ...
随机推荐
- COJ 1211 大整数开平方
手写求大整数开根号所得到的值,具体计算过程参考别人的资料,最后利用java的大整数得到答案 别人博客链接:http://www.cnblogs.com/Rinyo/archive/2012/12/16 ...
- 【USACO】wormholes 【暴力】
题意:给出2K个平面上的点,给它们一一配对,问有多少种配对方法使得存在从某个点一直向右走会陷在循环里(K<=6) 思路:由于k很小,配对方法的话暴力枚举,然后判环,判环时需要注意的是一条直线上的 ...
- websocket个人理解总结
WebSocket 释义:聊天室.服务.套接字.协议 引用:https://www.ibm.com/developerworks/cn/web/1112_huangxa_websocket/index ...
- 51nod1135 原根
原根判定:$m>2$,$\varphi (m)$的不同素数是$q_1,q_2,……,q_s$,$(g,m)=1$,则$g$是$m$的一个原根的充要条件是$g^{\frac{\varphi(m)} ...
- ES6__字符串、数组、对象的扩展
/** * 字符串的扩展 */ // 模板字符串 tab上面的反向符号 // 添加${} // let flag = true; // // let html = `<ul> // < ...
- php责任链模式
php 责任链模式 又叫职责链模式.包含了一些命令对象和一些处理对象,每个处理对象决定它能处理那些命令对象,它也知道应该把自己不能处理的命令对象交下一个处理对象,该模式还描述了往该链添加新的处理对象的 ...
- PAT (Advanced Level) 1031. Hello World for U (20)
简单题. #include<iostream> #include<cstring> #include<cmath> #include<algorithm> ...
- 转: ORACLE存储过程笔记3----流程控制
流程控制 1.条件 if expression thenpl/sql or sqlend if; if expression thenpl/sql or sqlelsif expression ...
- Maven安装和手动安装jar到仓库
1. 安装Maven 1.下载mvn到本地,解压. 2.新建系统变量MAVEN_HOME,值指向安装目录如D:\apache-maven-3.3.9 3.path变量中增加:%MAVEN_HOME%\ ...
- 【转载】《Unix网络编程》思维导图
参考这篇文章,很不错: http://www.cnblogs.com/qiaoconglovelife/p/5734768.html