bzoj5047: 空间传送装置

时间:2022-09-29 17:17:52

Description

太空中一共有n座星球,它们之间可以通过空间传送装置进行转移。空间传送装置分为m种,第i种装置可以用4个参
数a_i,b_i,c_i,d_i来描述。因为时空抖动的问题,在非整数时刻禁止使用空间传送装置。如果在整数s时刻使用装
置,那么需要花费((a_i*s+b_i) mod c_i)+d_i单位时间才能完成传送。现在是s时刻,小Q位于1号星球,请写一个
程序计算从1号星球到每个星球最少需要的时间。

Input

第一行包含4个正整数n,m,s,e(2<=n<=100000,1<=m<=50,1<=s<=2000,1<=e<=200000)
分别表示星球的个数、空间传送装置的种类数、当前的时间以及空间传送装置的个数。
接下来m行,每行4个正整数a_i,b_i,c_i,d_i(1<=a_i,b_i,c_i,d_i<=2000),依次描述每种装置的参数。
接下来e行,每行3个正整数u_i,v_i,w_i(1<=u_i,v_i<=n,u_i!=v_i,1<=w_i<=m)
表示从星球u_i可以使用第w_i种装置单向传送到星球v_i。

Output

输出n-1行,每行一个整数,第i行表示从1到i+1的最少所需时间,若无解输出-1。
O(mc)递推预处理出每种边在模c意义下x时刻的边长,然后做普通的最短路。
#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: 空间传送装置的更多相关文章

  1. BZOJ5047 空间传送装置 2017年9月月赛 最短路 SPFA

    欢迎访问~原文出处——博客园-zhouzhendong 去博客园看该题解 题目传送门 - BZOJ5047 题意概括 概括??~别为难语文做一题错两题的我了…… 题解 我们发现,对于某一种装置,有c种 ...

  2. 【BZOJ5047】空间传送装置 最短路

    [BZOJ5047]空间传送装置 Description 太空中一共有n座星球,它们之间可以通过空间传送装置进行转移.空间传送装置分为m种,第i种装置可以用4个参数a_i,b_i,c_i,d_i来描述 ...

  3. 【bzoj5047】空间传送装置 堆优化Dijkstra

    题目描述 n个点e条边的有向图,每条边是m种类型之一.第i种类型在第x时刻通过所花费的时间为$(a_i*x+b_i)\mod c_i+d_i$.可以在某个点停留.问:在s时刻从1号点出发,到达每个点所 ...

  4. 【BZOJ 5047 空间传送装置】

    Time Limit: 20 Sec  Memory Limit: 256 MBSubmit: 282  Solved: 121[Submit][Status][Discuss] Descriptio ...

  5. bzoj5047 &lbrack;Lydsy1709月赛&rsqb;空间传送装置 最短路

    题目传送门 https://lydsy.com/JudgeOnline/problem.php?id=5047 题解 题目中没有说可以停留在一个点等待.问了别人才知道停留是可以的. 那么既然停留是可以 ...

  6. Linux 添加新磁盘,在线扩充空间

    CentOS 7开发环境中的home 目录空间满了,需要增加空间 到虚拟机上执行"ls /sys/class/scsi_host",然后重新扫描SCSI总线来添加设备.如右图.然后 ...

  7. QQ空间动态爬虫

    作者:虚静 链接:https://zhuanlan.zhihu.com/p/24656161 来源:知乎 著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 先说明几件事: 题目的意 ...

  8. android计算每个目录剩余空间丶总空间以及SD卡剩余空间

    ublic class MemorySpaceCheck { /** * 计算剩余空间 * @param path * @return */ public static String getAvail ...

  9. 查看mac中磁盘空间占用情况

    今天发现磁盘空间不够了,首先要找到那些文件夹占用了磁盘空间. du命令很好使 du -c -d 1 -m | sort -n -c 显示当前文件夹总计占用空间 -d 1 层级为1,即只显示当前目录下一 ...

随机推荐

  1. Linux查看端口、进程情况及kill进程

    看端口: ps -aux | grep tomcat 发现并没有8080端口的Tomcat进程. 使用命令:netstat –apn 查看所有的进程和端口使用情况.发现下面的进程列表,其中最后一栏是P ...

  2. 2014 Super Training &num;4 D Paint the Grid Again --模拟

    原题:ZOJ 3780 http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3780 刚开始看到还以为是搜索题,没思路就跳过了.结 ...

  3. Mybatis特殊字符处理,Mybatis中xml文件特殊字符的处理

    Mybatis特殊字符处理,Mybatis中xml文件特殊字符的处理 >>>>>>>>>>>>>>>>& ...

  4. 笔记-测试崩溃之memcpy&lowbar;s

    昨天晚上提测,今天早上测试发来贺电,程序崩溃!!!!!! 而问题出在memcpy_s errno_t memcpy_s( void *dest, size_t numberOfElements, co ...

  5. MYSQL数据库学习七 视图的操作

    7.1 视图 视图使程序员只关心感兴趣的某些特定数据和他们所负责的特定任务.提高了数据库中数据的安全性. 视图的特点如下: 视图的列可以来自不同的表,是表的抽象和在逻辑意义上建立的新关系. 视图是由基 ...

  6. HttpClient基本使用

    1.在pom.xml加入对httpclient的必需的jar包的依赖 <!--//httpclient的接口基本都在这儿--> <dependency> <groupId ...

  7. float四舍五入保留一位小数点(坑)

    Float四舍五入保留一位小数点 public class Test {    public static void main(String[] args){        double data1  ...

  8. 《Linux内核分析》-- 扒开系统调用的三层皮(下)之system&lowbar;call中断处理过程 20135311傅冬菁

    20135311傅冬菁  原创作品 <Linux内核分析>MOOC课程 分析system_call中断处理过程 内容分析与总结: 系统调用在内核代码中的工作机制和初始化 系统调用在用户态中 ...

  9. mySql的普通索引和复合索引

    有关普通索引和组合索引问题: 索引分单列索引和组合索引:单列索引,即一个索引只包含单个列,一个表可以有多个单列索引,但这不是组合索引:组合索引,即一个索包含多个列.   MySQL索引类型包括:   ...

  10. ListView嵌套GridView使用详解及注意事项

    ListView嵌套GridView即ListView的每个Item中都包含一个GridView:需要注意的是由于ListView和GridView都是可滑动的控件. 所以需要自定义GridView, ...