【BZOJ 4070】【APIO 2015】雅加达的摩天楼
http://www.lydsy.com/JudgeOnline/problem.php?id=4070
分块建图。
对每个\(P_i\)分类讨论,\(P_i>\sqrt N\)则直接连边,边数少于\(\sqrt N\)。
对每个横跨长度\(\leq\sqrt N\)的边,建一条“滑轨”,当\(P_i\leq\sqrt N\)时则把这个点送到滑轨上,可以到任何一个位置下来。一共要建\(\sqrt N\)条滑轨。
最后跑最短路就可以了,uoj上死活过不了hack数据,貌似过了的都没有建图?
时间复杂度\(O(n\sqrt n)\),如果spfa是\(O(m)\)的话。
#include<queue>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int N = 30003;
const int B = 113;
const int Qtot = N * B - 1;
int nxt[N * B * 5], to[N * B * 5], w[N * B * 5];
int point[N * B], cnt = 0, n, m, S[N], P[N];
void ins(int u, int v, int W) {
nxt[++cnt] = point[u]; to[cnt] = v; w[cnt] = W; point[u] = cnt;
}
bool inq[N * B];
int dist[N * B], tot;
queue <int> qu;
int spfa(int s, int t) {
memset(dist, 127, sizeof(int) * (tot + 1));
dist[s] = 0;
int u, v, di; qu.push(s); inq[s] = true;
while (!qu.empty()) {
inq[u = qu.front()] = false; qu.pop();
for (int i = point[u]; i; i = nxt[i]) {
v = to[i];
if ((di = dist[u] + w[i]) < dist[v]) {
dist[v] = di;
if (!inq[v]) {
inq[v] = true;
qu.push(v);
}
}
}
}
return dist[t] == dist[0] ? -1 : dist[t];
}
int main() {
scanf("%d%d", &n, &m);
int Si, Pi; tot = B * n;
int tt = n;
for (int i = 1; i < B; ++i)
for (int j = 1; j <= n; ++j)
ins(++tt, j, 0);
for (int i = 1; i < B; ++i)
for (int j = 1; j <= i; ++j) {
int tmp = j + i, st = i * n;
while (tmp <= n) {
ins(st + tmp - i, st + tmp, 1);
ins(st + tmp, st + tmp - i, 1);
tmp += i;
}
}
for (int i = 1; i <= m; ++i) {
scanf("%d%d", &Si, &Pi);
S[i] = ++Si; P[i] = Pi;
if (Pi >= B) {
for (int tmp = Si + Pi, j = 1; tmp <= n; tmp += Pi, ++j)
ins(Si, tmp, j);
for (int tmp = Si - Pi, j = 1; tmp >= 1; tmp -= Pi, ++j)
ins(Si, tmp, j);
} else
ins(Si, Pi * n + Si, 0);
}
printf("%d\n", spfa(S[1], S[2]));
return 0;
}
【BZOJ 4070】【APIO 2015】雅加达的摩天楼的更多相关文章
- [APIO 2015] 雅加达的摩天楼
[题目链接] https://www.lydsy.com/JudgeOnline/problem.php?id=4070 [算法] 考虑将每个"Doge"向其所能到达的楼连边 直接 ...
- 解题:APIO 2015 雅加达的摩天大楼
题面 分块思想+最短路 发现对于步长小的doge会连出很多边,很容易导致大量的重边,于是对doge们根据步长分块讨论:根据步长建出分层图,然后把步长不超过某个值的doge们连到对应层上的点上,其余的d ...
- BZOJ 4070:[APIO2015]雅加达的摩天楼 最短路
4070: [Apio2015]雅加达的摩天楼 Time Limit: 10 Sec Memory Limit: 256 MBSubmit: 464 Solved: 164[Submit][Sta ...
- bzoj 4070 [Apio2015]雅加达的摩天楼 Dijkstra+建图
[Apio2015]雅加达的摩天楼 Time Limit: 10 Sec Memory Limit: 256 MBSubmit: 644 Solved: 238[Submit][Status][D ...
- 【CTSC 2015】&【APIO 2015】酱油记
蒟蒻有幸参加了神犇云集的CTSC & APIO 2015,感觉真是被虐成傻逼了……这几天一直没更新博客,今天就来补一下吧~~(不过不是题解……) Day 0 从太原到北京现在坐高铁只需3小时= ...
- 【BZOJ4070】[Apio2015]雅加达的摩天楼 set+最短路
[BZOJ4070][Apio2015]雅加达的摩天楼 Description 印尼首都雅加达市有 N 座摩天楼,它们排列成一条直线,我们从左到右依次将它们编号为 0 到 N−1.除了这 N 座摩天楼 ...
- [LOJ 2134][UOJ 132][BZOJ 4200][NOI 2015]小园丁与老司机
[LOJ 2134][UOJ 132][BZOJ 4200][NOI 2015]小园丁与老司机 题意 给定平面上的 \(n\) 个整点 \((x_i,y_i)\), 一共有两个问题. 第一个问题是从原 ...
- [LOJ 2133][UOJ 131][BZOJ 4199][NOI 2015]品酒大会
[LOJ 2133][UOJ 131][BZOJ 4199][NOI 2015]品酒大会 题意 给定一个长度为 \(n\) 的字符串 \(s\), 对于所有 \(r\in[1,n]\) 求出 \(s\ ...
- luogu_3645: 雅加达的摩天楼
雅加达的摩天楼 题意描述: 有\(N\)座摩天楼,从左到右依次编号为\(0\)到\(N-1\). 有\(M\)个信息传递员,编号依次为\(0\)到\(M-1\).编号为i的传递员最初在编号为\(B_i ...
- [BZOJ 3992] [SDOI 2015] 序列统计(DP+原根+NTT)
[BZOJ 3992] [SDOI 2015] 序列统计(DP+原根+NTT) 题面 小C有一个集合S,里面的元素都是小于质数M的非负整数.他用程序编写了一个数列生成器,可以生成一个长度为N的数列,数 ...
随机推荐
- GridControl详解(一)原汁原味的表格展示
Dev控件中的表格控件GridControl控件非常强大.不过,一些细枝末节的地方有时候用起来不好找挺讨厌的.使用过程中,多半借助Demo和英文帮助文档.网上具体的使用方法也多半零碎.偶遇一个简单而且 ...
- 使用CSS3创建文字颜色渐变(CSS3 Text Gradient)
考虑一下,如何在网页中达到类似以下文字渐变的效果? 传统的实现中,是用一副透明渐变的图片覆盖在文字上.具体实现方式可参考 http://www.qianduan.net/css-gradient-te ...
- 面试C++失败
到今天,面试已经整整一周,一个offer没有收到,mmp. 无奈,痛苦,迷茫. 以前活的太安逸,太舒适了. 自以为是,异想天开. 要重新振作起来. 要不断学习,保持强大,未来之路才会越走越宽.
- 面试整理(2)跨域:jsonp与CORS
问题:跨域有哪些方法?jsonp的原理是什么? jsonp: 先说jsonp,jsonp的主要原理是利用script标签的src可以跨域请求,据说有src属性的都可以跨域请求,但script标签返回的 ...
- C语言二分查找
#include <stdio.h> /* 二分查找条件: 1.有序序列 2.数据在数组中 */ int baseBinarySearch(int a[],int h,int k) { ; ...
- https://segmentfault.com/bookmark/1230000008276077
https://segmentfault.com/bookmark/1230000008276077
- 5、Linux操作系统介绍
1操作系统的作用·是现代计算机系统中最基本和最重要的系统软件·是配置在计算机硬件上的第一层软件,是对硬件系统的首次扩展·主要作用是管理好硬件设备,并为用户和应用程序提供一个简单的接口,以便于使用·而其 ...
- 爬虫实战--使用Selenium模拟浏览器抓取淘宝商品美食信息
from selenium import webdriver from selenium.webdriver.common.by import By from selenium.common.exce ...
- SVM问题再理解与分析——我的角度
SVM问题再理解与分析--我的角度 欢迎关注我的博客:http://www.cnblogs.com/xujianqing/ 支持向量机问题 问题先按照几何间隔最大化的原则引出他的问题为 上面的约束条件 ...
- js日期工具
/** * 日期工具类 */ define(function(require, exports, module) { var constants = require("constants&q ...