bzoj5047: 空间传送装置
Description
Input
Output
#include<bits/stdc++.h>
typedef unsigned int u32;
const int N=1e5+;
int _(){int x;scanf("%d",&x);return x;}
int n,m,e;
struct edge{
int to,tp;
edge*nx;
}es[N*],*ep=es,*e0[N];
struct node{
u32 w,l;
bool operator<(const node&w)const{return l>w.l;}
};
std::priority_queue<node>q;
u32 l[N];
void mins(u32&a,u32 b){if(a>b)a=b;}
struct etype{
u32 a,b,c,d,ds[];
void read(){
a=_(),b=_(),c=_(),d=_();
for(u32 i=;i<c;++i)ds[i]=(a*i+b)%c;
for(int t=;t<;++t){
ds[c]=ds[];
for(u32 i=c;i;--i)mins(ds[i-],ds[i]+);
}
for(u32 i=;i<c;++i)ds[i]+=d;
}
u32 operator()(u32 x){return ds[x%c];}
}ts[];
int main(){
n=_();m=_();l[]=_();e=_();
for(int i=;i<=m;++i)ts[i].read();
for(int i=,a,b,c;i<=e;++i){
a=_(),b=_(),c=_();
*ep=(edge){b,c,e0[a]};e0[a]=ep++;
}
for(int i=;i<=n;++i)l[i]=UINT_MAX;
q.push((node){,l[]});
while(q.size()){
node w=q.top();q.pop();
if(w.l!=l[w.w])continue;
for(edge*i=e0[w.w];i;i=i->nx){
u32 u=i->to,d=ts[i->tp](w.l);
if(l[u]>w.l+d)q.push((node){u,l[u]=w.l+d});
}
}
for(int i=;i<=n;++i)l[i]==UINT_MAX?puts("-1"):printf("%u\n",l[i]-l[]);
return ;
}
bzoj5047: 空间传送装置的更多相关文章
- BZOJ5047 空间传送装置 2017年9月月赛 最短路 SPFA
欢迎访问~原文出处——博客园-zhouzhendong 去博客园看该题解 题目传送门 - BZOJ5047 题意概括 概括??~别为难语文做一题错两题的我了…… 题解 我们发现,对于某一种装置,有c种 ...
- 【BZOJ5047】空间传送装置 最短路
[BZOJ5047]空间传送装置 Description 太空中一共有n座星球,它们之间可以通过空间传送装置进行转移.空间传送装置分为m种,第i种装置可以用4个参数a_i,b_i,c_i,d_i来描述 ...
- 【bzoj5047】空间传送装置 堆优化Dijkstra
题目描述 n个点e条边的有向图,每条边是m种类型之一.第i种类型在第x时刻通过所花费的时间为$(a_i*x+b_i)\mod c_i+d_i$.可以在某个点停留.问:在s时刻从1号点出发,到达每个点所 ...
- 【BZOJ 5047 空间传送装置】
Time Limit: 20 Sec Memory Limit: 256 MBSubmit: 282 Solved: 121[Submit][Status][Discuss] Descriptio ...
- bzoj5047 [Lydsy1709月赛]空间传送装置 最短路
题目传送门 https://lydsy.com/JudgeOnline/problem.php?id=5047 题解 题目中没有说可以停留在一个点等待.问了别人才知道停留是可以的. 那么既然停留是可以 ...
- Linux 添加新磁盘,在线扩充空间
CentOS 7开发环境中的home 目录空间满了,需要增加空间 到虚拟机上执行"ls /sys/class/scsi_host",然后重新扫描SCSI总线来添加设备.如右图.然后 ...
- QQ空间动态爬虫
作者:虚静 链接:https://zhuanlan.zhihu.com/p/24656161 来源:知乎 著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 先说明几件事: 题目的意 ...
- android计算每个目录剩余空间丶总空间以及SD卡剩余空间
ublic class MemorySpaceCheck { /** * 计算剩余空间 * @param path * @return */ public static String getAvail ...
- 查看mac中磁盘空间占用情况
今天发现磁盘空间不够了,首先要找到那些文件夹占用了磁盘空间. du命令很好使 du -c -d 1 -m | sort -n -c 显示当前文件夹总计占用空间 -d 1 层级为1,即只显示当前目录下一 ...
随机推荐
- 关于antd 日期组件只选择年份,设置mode=year无法获取value的解决办法
antd3.0后的某个版本后终于支持了只选择年份的设置.当时2.x版本的时候还不支持只选择年份,我们项目中有这个只选择年份的需求,为了ui风格的一致,只好自己撸了一个. 如今真是普天同庆!
- 基础模块 网络连接检查 js
//无对象则加载 if (typeof Base == "undefined") Base = function() {} // 获取时间对象的基本方法 Base.prototyp ...
- html5(四) canvas
http://www.cnblogs.com/Gyoung/archive/2013/04/08/2994515.html
- event对象的clientX,offsetX,screenX,pageX
chrome: e.pageX——相对整个页面的坐标 e.layerX——相对当前坐标系的border左上角开始的坐标 e.offsetX——相对当前坐标系的border左上角开始的坐标 e.clie ...
- Python日期的加减等操作
1. 日期输出格式化 所有日期.时间的api都在datetime模块内. 1. datetime => string now = datetime.datetime.now() now.strf ...
- unity中实现场景之间加载进度条
using UnityEngine; using System.Collections; using UnityEngine.SceneManagement; using UnityEngine.UI ...
- nodejs 安装失败 ,出现error 2502 和error2503
出现error 2502 和error2503是因为win8的权限问题所导致的,具体说就是要以管理员身份进行安装就可以解决,下面详细来说一下. 1.cmd命令行点击以管理员身份运行. 2.这时候就可以 ...
- JavaWeb基础-过滤器监听器
过滤器 1定义:过滤器是一个服务器的组件,他可以截取用户端的请求与响应信息,并对这些信息进行过滤;过滤器可以动态地拦截请求和响应,以变换或使用包含在请求或响应中的信息. 2过滤器的工作原理: 3过滤器 ...
- My First Linux Module
My First Linux Module Today, I successfully build my first linux hello module. First of all add a di ...
- Python2入门(1)
一.基础语法1 - 输出语句 print "hello world",print默认输出换行,如果需要实现不换行需在变量末尾加上逗号,; 2 - python合法标识符 3 - 字 ...