BZOJ 4070: [Apio2015]雅加达的摩天楼 根号分治+spfa
时间:2019-09-19
本文章向大家介绍BZOJ 4070: [Apio2015]雅加达的摩天楼 根号分治+spfa,主要包括BZOJ 4070: [Apio2015]雅加达的摩天楼 根号分治+spfa使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
此题卡Dijkstra...
Code:
#include <bits/stdc++.h> #define N 30005 #define M 4000000 #define ll long long #define inf 100000000 #define E 14300000 #define setIO(s) freopen(s".in","r",stdin) using namespace std; ll d[M]; int n,m,block,cnt,edges,s,t; int id[N][103],hd[M],to[E],nex[E],val[E],done[M]; struct Node { int u; ll dis; Node(int u=0,ll dis=0):u(u),dis(dis){} bool operator<(Node b) const { return b.dis<dis; } }; priority_queue<Node>q; void add(int u,int v,int c) { // ++edges; nex[++edges]=hd[u],hd[u]=edges,to[edges]=v,val[edges]=c; } void Dijkstra() { memset(d,0x3f,sizeof(d)); for(d[s]=0,q.push(Node(s,0));!q.empty();) { Node e=q.top(); q.pop(); int u=e.u; if(done[u]) continue; done[u]=1; for(int i=hd[u];i;i=nex[i]) { int v=to[i]; if(d[v]>d[u]+val[i]) { d[v]=d[u]+val[i]; q.push(Node(v, d[v])); } } } } int main() { int i,j,k; // setIO("input"); scanf("%d%d",&n,&m); block=min(100,(int)sqrt(n)); cnt = n + 23; for(i=1;i<=block;++i) { for(j=0;j<i;++j) { for(k=j;k<n;k+=i) { id[k][i]=++cnt; add(cnt,k,0); if(k>=i) add(cnt-1,cnt,1), add(cnt,cnt-1,1); } } } for(i=1;i<=m;++i) { int a,b; scanf("%d%d",&a,&b); if(i==1) s=a; if(i==2) t=a; if(b<=block) add(a, id[a][b], 0); else { int tt=0; for(j=a-b;j>=0;j-=b) add(a,j,++tt); tt=0; for(j=a+b;j<n;j+=b) add(a,j,++tt); } } // printf("%d %d\n",cnt,edges); Dijkstra(); printf("%lld\n",d[t]>=inf?-1:d[t]); return 0; }
原文地址:https://www.cnblogs.com/guangheli/p/11547462.html
- mysql数据迁移hbase问题
- hbase问题总结
- mysql DUPLICATE KEY UPDATE 问题
- mysql复制学习二 安装及首次复制配置
- 关于操作权限
- hadoop loadBalance源码分析
- writeup | 应该不是 XSS
- Hbase 源码分析之 Get 流程及rpc原理
- MOCTF WEB 题解
- HBase行锁与MVCC分析
- HBase行锁探索
- Spring Cloud构建微服务架构:分布式服务跟踪(抽样收集)【Dalston版】
- HBase client访问ZooKeeper获取root-region-server DeadLock问题(zookeeper.ClientCnxn Unable to get data of zn
- zookeeper学习系列:四、Paxos算法和zookeeper的关系
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 字符串:前缀表不右移,难道就写不出KMP了?
- HTTP请求头referer
- 【干货】C++基础知识:继承与派生详解
- 文本相似度——编辑距离
- 文本相似度——汉明距离
- python函数——Bunch配置加载
- npm install、npm install --global、npm install --save、npm install --save-dev的区别
- 3种 Springboot 全局时间格式化方式,别再写重复代码了
- pip conda 安装速度慢解决方法
- Linux 中指定使用的GPU
- 未读消息(小红点),前端 与 RabbitMQ 实时消息推送实践,贼简单~
- Day13 :调整数组顺序使奇数位于偶数前面
- TensorFlow 指定GPU 日志却显示的是第0块
- bazel 出现no such package '@org_tensorflow//tensorflow' 错误
- tensorflow API——tf.random_uniform 使用