[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 ...
随机推荐
- 在C#代码中应用Log4Net系列教程(附源代码)地址
在博客园看到一篇关于Log4Net使用教程,比较详细,感谢这位热心的博主 博客园地址:http://www.cnblogs.com/kissazi2/archive/2013/10/29/339359 ...
- hexo干货系列:(六)hexo提交搜索引擎(百度+谷歌)
前言 能看到这里,说明大家都跟我一样,已经把博客搭起来并洋洋洒洒写了几篇博文,正春风得意感觉良好的时候,搭建博客有屎以来最大的危机出现在没有准备的我面前,百度+谷歌都无法搜索到我的博客.装逼还没几天就 ...
- 用svn下载github中指定目录的文件
1.先用命令看看github的分支 svn ls https://github.com/BlueRiverInteractive/robovm-ios-bindings 输出: branches/ t ...
- 【BZOJ2006】超级钢琴(RMQ,priority_queue)
题意: 思路: 用三元组(i, l, r)表示右端点为i,左端点在[l, r]之间和最大的区间([l, r]保证是对于i可行右端点区间的一个子区间),我们用堆维护一些这样的三元组. 堆中初始的元素为每 ...
- windows7 下安装使用memcached(二)
Memcached 安装使用 本地环境:Windows7 64位web环境:wamp集成环境,php版本:PHP Version 7.1.17 学习参考网站: RUNOOB.COM官网 http:/ ...
- union关键字和字节大小端序的确定
union 关键字的用法与struct 的用法非常类似. union 维护足够的空间来置放多个数据成员中的“一种”,而不是为每一个数据成员配置空间,在union 中所有的数据成员共用一个空间,同一时间 ...
- 在d盘中创建一个文件夹 在文件夹里创建三个txt文本
import java.io.File; import java.io.IOException; public class FileDemo { public static void main(Str ...
- Android远程服务
一.远程服务主要代码 1.IService.aidl package com.shz.remoteservice; interface IService { String getTicketInfoB ...
- mysql too many connection 解决办法
SHOW VARIABLES LIKE "max_connections"; SHOW VARIABLES LIKE "wait_timeout"; SET G ...
- Office EXCEL 如何将复制的一堆数据按空格断开
1 复制粘贴一堆数据,点击数据-分类,然后点击下一步 2 一直下一步 3 最后效果如下图所示