[题目链接]

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的更多相关文章

  1. 【BZOJ5138】[Usaco2017 Dec]Push a Box(强连通分量)

    [BZOJ5138][Usaco2017 Dec]Push a Box(强连通分量) 题面 BZOJ 洛谷 题解 这题是今天看到萝卜在做然后他一眼秒了,我太菜了不会做,所以就来做做. 首先看完题目,是 ...

  2. BZOJ5142: [Usaco2017 Dec]Haybale Feast(双指针&set)(可线段树优化)

    5142: [Usaco2017 Dec]Haybale Feast Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 182  Solved: 131[ ...

  3. BZOJ5142: [Usaco2017 Dec]Haybale Feast 线段树或二分答案

    Description Farmer John is preparing a delicious meal for his cows! In his barn, he has NN haybales ...

  4. [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 ...

  5. BZOJ5137[Usaco2017 Dec]Standing Out from the Herd

    看了半天题 不知道怎么用SAM维护 于是借(chao)鉴(xi)的一发神犇的 只要判断这个子串之前被标记的记号(也就是他属于第几个串)和这次转移到的是否相同 如果不同就说明该子串属于多个串 直接标记- ...

  6. bzoj5138 [Usaco2017 Dec]Push a Box

    题目描述: bz luogu 题解: 暴力可以记录$AB$位置转移,这个时候状态是$n^4$的,无法接受. 考虑只记录$A$在$B$旁边时的状态,这个时候状态时$n^2$的. 所以说转移有两种,一种是 ...

  7. 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 ...

  8. BZOJ 5137: [Usaco2017 Dec]Standing Out from the Herd(后缀自动机)

    传送门 解题思路 这个似乎和以前做过的一道题很像,只不过这个是求本质不同子串个数.肯定是先把广义\(SAM\)造出来,然后\(dfs\)时把子节点的信息合并到父节点上,看哪个只被一个串覆盖,\(ans ...

  9. tcpdump for android L 5.x with pie support

    由于使用了NDK编译的可执行文件在应用中调用,在4.4及之前的版本上一直没出问题. 最近由于要测试在Android L上的运行情况发现,当运行该可执行文件时,报如下错误: error: only po ...

随机推荐

  1. FZU2206函数求解

    Problem 2206 函数求解 Accept: 154    Submit: 456 Time Limit: 1000 mSec    Memory Limit : 32768 KB  Probl ...

  2. 机器学习基础-Logistic回归1

    利用Logistic回归进行分类的主要思想是:根据现有数据对分类边界线建立回归公式,以此进行分类. 训练分类器时的做法就是寻找最佳拟合参数,使用的时最优化算法. 优点:计算代价不高,利于理解和实现. ...

  3. Linux Bash对拍

    代码: #!/bin/bash while true; do ./rand > input //数据生成器 ./test < input > output //测试程序 ./std ...

  4. hdu 4421 和poj3678类似二级制操作(2-sat问题)

    /* 题意:还是二进制异或,和poj3678类似 建边和poj3678一样 */ #include<stdio.h> #include<string.h> #include&l ...

  5. [NOIP2001] 提高组 洛谷P1024 一元三次方程求解

    题目描述 有形如:ax3+bx2+cx+d=0 这样的一个一元三次方程.给出该方程中各项的系数(a,b,c,d 均为实数),并约定该方程存在三个不同实根(根的范围在-100至100之间),且根与根之差 ...

  6. 字符串常量与const常量内存区(——选自陈皓的博客)

    1. 一个常见的考点: char* p = "test"; 那么理利用指针p来改变字符串test的内容都是错误的非法的. 例如: p[0] = 's'; strcpy(p, &qu ...

  7. PatentTips - Solid State Disk (SSD) Device

    BACKGROUND OF THE INVENTION A SSD apparatus is a large-capacity data storage device using a nonvolat ...

  8. HDU 6390

    GuGuFishtion Time Limit: 3000/1500 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Tota ...

  9. ACM常用模板整理

    线段树单点修改区间查询 #include<stdio.h> #include<string.h> #include<algorithm> using namespa ...

  10. java 读取数据库数据转化输出XML输出在jsp页面

    因为老师实验报告要求,搭建服务端解析XML 下面代码实现转化XML格式也是在网上找的转化代码 输出在jsp页面以便于客户端解析是自己写的 一个类就解决了Test package tests; //三只 ...