SGU103

SGU103AC代码 SGU 103AC 代码 质量有保证! 立即下载

题目大意:

给定一个带权无向图,每个点有一个颜色属性,要么为Blue要么为Purple,颜色会在B和P之间来回变换,两种颜色各有一个持续时间

两个邻接的点之间能够通行当且仅当两点是相同的颜色,通行的代价为边权,可在点处等待

给定起点,终点,每个点的初始颜色和持续时间,蓝色的持续时间,紫色的持续时间

求起点到终点的最短时间


如果没有颜色通行的限制,那么这道题就是个最短路,加上了颜色的通行限制,题目似乎就变了

最短路的性质是s-t的最短路如果经过了k,那么s-k也一定是一条最短路

但这道题似乎有可能存在这种情况,由于颜色限制,s-k不是最短路,但k-t是最短路

更仔细一点想,这种情况是不存在的

如果s-k不是最短路,其代价为d,那么我们可以求出s-k的最短路,其代价为d'

问题在于有可能k-t存在等待时间,显然s-k的最短路可以不会比非次短路差

所以求一遍s-t的最短路即可,SPFA和Dijkstra都行


关于等待时间:

a-b的等待时间和到达a的时间有关系,而松弛的条件是dis[v]>dis[x]+边权+等待时间

因此设计一个wait函数即可(这里比较蛋疼……我wa2无数遍就是因为打错一变量)

//Lib
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<cmath>
#include<ctime>

#include<iostream>
#include<algorithm>
#include<vector>
#include<string>
#include<queue>
using namespace std;
//Macro
#define rep(i,a,b) for(int i=a,ttmp=b;i<=ttmp;i++)
#define rrep(i,a,b) for(int i=a,ttmp=b;i>=ttmp;i--)
#define erep(i,e,x) for(int i=x;i;i=e[i].next)
#define irep(i,x) for(__typedef(x.begin()) i=x.begin();i!=x.end();i++)
#define read() (strtol(ipos,&ipos,10))
#define sqr(x) ((x)*(x))
#define pb push_back
#define PS system("pause");
typedef long long ll;
typedef pair<int,int> pii;
const int oo=~0U>>1;
const double inf=1e20;
const double eps=1e-6;
string name="",in=".in",out=".out";
//Var
priority_queue<pii,vector<pii>,greater<pii> > q;
struct N
{
	int re,b,l;
}node[308];
struct E
{
	int next,node,v;
}e[30008];
int tot,st,ed,n,m;
int h[308],dis[308],pre[308];
bool vis[308];
void add(int a,int b,int c){e[++tot].next=h[a];e[tot].node=b;e[tot].v=c;h[a]=tot;}
void Init()
{
	int a,b,c;char ch[5];
	scanf("%d%d",&st,&ed);
	if(st==ed){cout<<0<<endl<<st<<endl;exit(0);}
	scanf("%d%d",&n,&m);
	rep(i,1,n)
	{
		scanf("%s %d %d %d",ch,&a,&b,&c);
		if(ch[0]=='P')node[i].re=b+c-a;
		else node[i].re=b-a;			//将起始颜色转化为B,re代表到下一种颜色的时间
		node[i].b=b;node[i].l=b+c;		//b代表blue的时间,l代表周期
	}
	rep(i,1,m)
	{
		scanf("%d%d%d",&a,&b,&c);
		add(a,b,c);add(b,a,c);
	}
}
int wait(int x,int y,int t)
{
	int tx,ty,tmp,ret;
	tx=(t+node[x].re)%node[x].l;
	ty=(t+node[y].re)%node[y].l;
	ret=0;
	rep(i,1,4)
	{
		if((tx<node[x].b)==(ty<node[y].b))return ret;
		if(tx<node[x].b)
			tmp=node[x].b-tx;else 
			tmp=node[x].l-tx;
		if(ty<node[y].b)
			tmp=min(tmp,node[y].b-ty);else
			tmp=min(tmp,node[y].l-ty);
		ret+=tmp;
		tx=(tx+tmp)%node[x].l;
		ty=(ty+tmp)%node[y].l;
	}
	return -1;
}
void Print(int x)
{
	if(pre[x])Print(pre[x]);
	printf("%d ",x);
}
void Work()
{
	rep(i,1,n)dis[i]=oo;int x,y,t;dis[st]=0;
	q.push(pii(0,st));
	while(!q.empty()&&!vis[ed])
	{
		x=q.top().second;q.pop();if(vis[x])continue;
		vis[x]=true;
		erep(i,e,h[x])
		{
			y=e[i].node;t=wait(x,y,dis[x]);
			if(t>=0&&dis[y]>dis[x]+t+e[i].v)
			{
				dis[y]=dis[x]+t+e[i].v;pre[y]=x;
				q.push(pii(dis[y],y));
			}
		}
	}
	if(dis[ed]==oo)printf("0\n");
	else
	{
		printf("%d\n",dis[ed]);
		Print(pre[ed]);
		printf("%d\n",ed);
	}
}
int main()
{
//	freopen((name+in).c_str(),"r",stdin);
//	freopen((name+out).c_str(),"w",stdout);
	Init();
	Work();
	return 0;
}



Unreal 5 MetaHuman插件全流程:从安装到角色动画生成 本文详细介绍了Unreal 5中MetaHuman插件的全流程使用指南,从安装配置到角色动画生成。通过Quixel Bridge下载预设角色,利用面部捕捉技术赋予数字人模型生命力,并提供材质编辑、性能优化等进阶技巧,帮助用户快速创建照片级真实的虚拟角色。 阅读详情

相关推荐

单节锂电池充电管理芯片应用原理阐述及应用领域

当电池电压超过2.9V时,采用恒流模式对电池充电,充电电流由PROG 管脚和GND之间的电阻RPROG确定。充电电压固定于4.2V,而充电电流可通过一个电阻器进行外部设置当充电电流在达到最终浮充电压之后降至设定值1/10时,WD4054将自动终止充电循环。在待机模式中,WD4054 对 BAT 引脚电压进行监控,只有当 BAT 引脚电压低于再充电阈值电压4.1V时(对应电池容量80%~90%),才会开始新的充电循环,重新对电池进行充电,这就避免了对电池进行不必要的反复充电,有效延长电池的使用寿命。

weixin_41141180的博客 943

SGU103 最短路 Shortest Path

题意:一个带权无向图,每个点有一个只有两种颜色的指示灯,每个灯初始颜色维持一定时间T1后变色,之后经过T2时间变色、T3时间变色、T2时间再变……成周期。一条边只有两个端点的指示灯颜色相同时才能通过,否则要等到相同。问从1到N的最短时间花费以及路径方案。     Problem:Give you a weighted undirected graph, each node has a traff

梦想天生 1193

5分钟搞懂异构图注意力网络(HAN):从元路径到节点聚合的全流程解析

本文深入解析异构图注意力网络(HAN)的核心原理与实战应用,从元路径设计到多级注意力实现的全流程。HAN通过节点级和语义级双重注意力机制,有效处理包含多种节点和边类型的异构图数据,在电商推荐、学术网络分析等场景展现卓越性能。文章提供DGL实现代码和调参技巧,帮助开发者快速掌握这一强大工具。

weixin_29056701的博客 311

sgu103 最短路

简略题意: 给出S和T,问从S到T的最短路。 但是两个节点能通行当且仅当两个节点的颜色相同。 每个节点有一个初始颜色,当前颜色剩余的时间,以及每种颜色的持续时长。 需要注意的点: 1. 双向边 2. 无解(两种颜色无限交替) 稍微修改一下最短路,每次从一个路口走到另一个路口时,需要附加上额外的时间代价,这个代价可以通过模拟得到。 然后就是一个普通的最短路。 #define ot...

即使摸爬滚打,满身泥泞,我也要前进 547

GEO芯片数据下载和探针ID转换(保姆级教程)

R语言安装、GEO芯片数据下载、探针ID转换

qq_43138237的博客 3万+

用于多种无人机协作的群体智能算法:综合综述

随着无人机技术的快速高水平发展,将多架无人机作为自主控制的编队应用于复杂情况是一个新兴领域的代表之一。在实现自主控制的挑战中,碰撞避免、任务分配、路径规划和编队重构是关键功能。本文对各种经典的无人机群智能算法进行了系统的总结和分析。

erjia_的博客 1万+

SGU 103 Traffic Lights

http://acm.sgu.ru/problem.php?contest=0&problem=103 有条件限制的最短路问题,当且仅当点的颜色一样时可以通行否则需要等到符合条件时才可以通行。等待的时间与通行时间之和用于判断松弛。 AC代码: #include #include #include #include #include #include #include

思维迷宫 590

STM32F407VET6与CH395Q串口通信实战:从零搭建以太网客户端(附完整代码)

本文详细介绍了基于STM32F407VET6微控制器与南京沁恒微CH395Q以太网芯片,通过串口通信从零搭建TCP客户端应用的完整实战过程。内容涵盖硬件连接、驱动层设计、基于FreeRTOS的任务实现以及核心调试技巧,并提供了完整的代码示例,帮助嵌入式开发者快速实现设备联网功能。

weixin_29179311的博客 413

SGU 103 略复杂的单源最短路

题目链接点这儿

御坂美琴o((≧▽≦o) 1019

(十五)CX20106A 中超声波测量的应用

(十五)CX20106A 中超声波测量的应用

m0_52555663的博客 4511

UE4动作游戏实例RPG Action解析二:GAS系统播放武器绑定的技能,以及GE效果

官方实例激活技能通过装备系统数据激活,我先用武器数据资产直接激活官方实例蒙太奇播放是自定义的AbilityTask,我先用更简单的方法实现效果1.1.1 插件启用AbilitySystem1.1.2 PlayerCharacter绑定技能组件AbilitySystemComponent 1.1.3 技能初始化,AbilitySystemComponent->GiveAbility 把上节获取到的默认武器绑定的技能GameAbility 添加到ASC组件 1.2、创建一个GameplayAbili

yuchenwuhen的专栏 1279

sgu103-最短路径

103. Traffic Lights Time limit per test: 0.25 second(s) Memory limit: 4096 kilobytes input: standard output: standard In the city of Dingilville the traffic is arranged in an unusual

abcd1992719g的专栏 1191

【宝藏级】全网最全的Pandas详细教程(2万字总结)

【回炉重造】Python之Pandas详细教程前言为什么要学习pandas?什么是Pandas?官网1. Pandas的索引操作索引对象Index {#索引对象index}1. Series和DataFrame中的索引都是Index对象2. 索引对象不可变,保证了数据的安全常见的Index种类Series索引 {#series索引}1. index 指定行索引名2. 行索引3. 切片索引4. 不连续索引5. 布尔索引DataFrame索引1. columns 指定列索引名2. 列索引3. 不连续索引高级索引

全网粉丝30W+,优快云、稀土掘金人工智能领域签约作者,人工智能、大模型、Python 爬虫,商务合作,请私信沟通。 6万+

SGU103 Traffic Lights

给出一张无向图,每个顶点有一盏红绿灯,按照一定的周期变换(左闭右开) 对于某一时刻,若一条边两个端点的颜色相同,则视为可通过,所需时间为边的权值 问0时刻从s出发,最快何时可以到达t

╮(╯▽╰)╭ 888

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

sgu103

SGU 103 Traffic Lights 题目大意: Dingiville 城市的交通规则非常奇怪,城市公路通过路口相连,两个不同路口之间最多只有一条直达公路。公路的起止点不会是同一路口。在任意一条公路上顺不同方向走所需 时间相同。每一个路口都有交通灯,这些交通灯在某一时刻要么是蓝色,要么是紫色。同一个灯上2个颜色的维持时间受到定期调控,总是蓝色持续一段时间,紫色 持续一段时间。交

Tgop_Knight的专栏 785

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

SGU 103 Traffic Lights 翻译 题解

103. 交通灯每个测试点:0.5s内存限制:4096KB   在Dingilville市城市交通的安排很不寻常,公路连接着路口,在两个不同的路口之间最多有一条公路连接,没有公路会连接一个路口自身。正反向通过一条道路的时间是相同的,在每一个路口都有一个交通灯,在任意时刻它要么是蓝色的要么是紫色的,这些灯的颜色是定期交换的:蓝色持续一段时间,紫色持续一段时间。当一条公路两边的交通灯颜色相...

aiechu6301的博客 216

最短路/sgu 103 Traffic Lights

题意 给出一个N个结点的无向图,每条边都有一个长度,但是每条边的两端有信号灯。信号灯有两种颜色:蓝色和紫色,并且信号灯有颜色变化的周期。当要走这条路,这条路的两端颜色一样时,才可以走,否则需要等到其中一个等变色后再走(走这条路的中途不用管灯的颜色)。给定两个点st,ed,求从st到ed最少的时间是多少。 输入:给出的灯的信息:C R Tb Tp。C表示开始时这个路口的灯...

dkkzxga4442的博客 131

SGU 103 Traffic Lights (最短路)

题意:http://www.cnblogs.com/yylogo/archive/2011/06/05/SGU-103.html 分析:比通常的最短路问题多了个限制条件,即每个路口的颜色必须相同时才能通过,否则需要等待。不难发现,路口的颜色是与当前已经花费的时间有关。于是可以构造一个函数,根据当前所用时间来计算某个路口的颜色,以及下一次变色所需时间。           利用该函数可以计算出当

白学病患者的专栏 568

sgu103 SPFA水题

sgu103本来是一个水题,但是因为小错误调试了两天。。。 #include #include #include #include #include #include #include const int inf=1000000; using namespace std; int dis[310],start,end,last[310]; int bgn[310],to[28010],nxt[2

~~Free planet 跳动的行星 287

SGU 103 Traffic Lights(最短路)

题意:有n个路口,m条道路,每个路口有一个红绿灯,从路口u能向v走当且仅当这两个路口的灯的颜色相同,给出每个路口最开始的红绿灯的颜色,剩余变色时间,两种颜色转换的时间,问s到t的最短路。 思路:很显然是个最短路问题,对于红绿灯的问题,只要在到u的时候算一下到v需要等多长时间就行了。由于晚到一个路口不会比早到更优,那么直接存到u的最短时间就行了。计算需要等的时间的时候要注意最开始有个初始时间,然后

绝望的乐园 892

SGU 103 Traffic Lights【最短路】

题目链接: http://acm.hust.edu.cn/vjudge/problem/visitOriginUrl.action?id=16530 题意: 给定每个点最初的颜色,最初颜色持续时间,以及每个颜色的持续时间。每个点的颜色蓝紫交替,只有等待到一条路的两个端点颜色相同才能通行。到达某点时颜色恰好变色,则按照变色之后的颜色考虑。 给定道路的花费,问...

An55511的博客 490

SGU 103 Traffic Lights

wa没有关系,冷静的找到wa的原因才是关键~ 这题我想复杂了,以为过马路的时候灯的颜色要一直相同,而且相同的时间要大于过马路需要的时间,那样就是个数论问题,取两个点循环时间的最大公约数,约掉之后求任意时刻相交的最大时间,挺麻烦的,然后再看了一下题,原来是只要有一个时刻颜色相同就能过去,这样就简单了不知道多少了,只要求下一个颜色相同的时间就可以了,轻松ac~ #include #includ

量子流逝 866

sgu 103 Traffic Lights

题目描述: 103. Traffic Lights Time limit per test: 0.5 second(s) Memory limit: 4096 kilobytes input: standard output: standard In the city of Dingilville the traffic is arranged in an un

utoppia is another word . 948
上一篇: SGU102
下一篇: SGU104
OrpineX
博客等级 码龄17年 16粉丝 68原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值