首页 > 其他分享 >西理工校赛:PP 学姐的最短时间

西理工校赛:PP 学姐的最短时间

时间:2024-03-21 23:01:31浏览次数:19  
标签:学姐 PP idx ll id 校赛 d1 vel op

原题链接:K-PP 学姐的最短时间​​​​​​

题目大意:给n个点和m条边,给每条边通过的时间为a+b/(t+1),t为从当前点出发的时间。求从第一点到第n个点的最短时间。

思路:这题明显是求最短路的题目,那么肯定可以使用迪杰斯特拉来跑最短路,但是二个点之间通过时间是动态的,那么如何来确定这个动态时间什么时候能最小呢?在i点的时间为t,然后i到j的通过时间为a+b/(t+1),那么就是比较停留在i点的时间和b/(t+1)能够提供的节省时间比较。可以分为3种情况考虑,如果b<t+1,那么就不需要等待,多等待一秒,b/(t+1)也是0。如果t+1>sqrt(b),那么多等待一秒,b/(t+1)能减少的最多也就1秒。如果t+1<sqrt(b),那么多等待一秒,b/(t+1)肯定会减少至少1,可以等待。

#include<bits/stdc++.h>
#define endl '\n'
using namespace std;
typedef long long ll;
typedef pair<ll,ll> pii;
const int N=1e6+10; 
ll h[N],e[N],ne[N],w[N],p[N],idx,d[N];
bool st[N];
void add(ll a,ll b,ll c,ll d)
{
	e[idx]=b,ne[idx]=h[a],w[idx]=c,p[idx]=d,h[a]=idx++;
}
ll calc(ll t,ll b)
{
	if(b<t+1)//第一种情况
	{
		return 0;
	}
	else//对于第二种情况,肯定不能继续等,对于第三种情况一定要继续等,那么就可以枚举sqrt(b)周围的情况来找到最小的通过时间
	{
		ll ans=1e18;
		for(int i=max(t,(ll)sqrt(b)-1);i<=max(t,(ll)sqrt(b)+1);i++)
        {
			ans=min(ans,i-t+b/(i+1));//i是从当前点出发的时间,t是到达当前点的时间
		}
		return ans;
	}
}
int main()
{
    ios::sync_with_stdio(0),cout.tie(0),cin.tie(0);
    ll n,m;cin>>n>>m;
    memset(h,-1,sizeof(h));
    while(m--)
    {
    	ll a,b,c,d;cin>>a>>b>>c>>d;
    	add(a,b,c,d);add(b,a,c,d);
	}
	priority_queue<pii,vector<pii>,greater<pii>> op;
	op.push({0,1});
    memset(d,0x3f,sizeof(d));
	d[1]=0;
	while(op.size())
	{
		auto [vel,id]=op.top();op.pop();
		if(st[id])continue;st[id]=1;
		for(int i=h[id];~i;i=ne[i])
		{
 			ll j=e[i],a=w[i],b=p[i];
            ll d1=calc(vel,b);
			if(d[j]>vel+d1+a)
			{
				d[j]=vel+d1+a;
				op.push({d[j],j});
			}
		}
	}
	if(d[n]>1e17)cout<<-1;
	else cout<<d[n];
    return 0;
}

标签:学姐,PP,idx,ll,id,校赛,d1,vel,op
From: https://blog.csdn.net/qq_74190237/article/details/136923238

相关文章

  • 2024年天梯成信校赛补题
    1-1代码胜于雄辩嘿嘿 L1-2收水费思路:分类讨论 L1-3日期思路:模拟 L1-4回文数思路:翻转后判断是否相等 L1-5yihan的新函数思路:模拟 L1-6二进制思路:二进制每位最多进位1,模拟下二进制加法即可 L1-7大山中的学院思路:统计每个山脉对空地的贡献 L1-8堆积木思......
  • MATLAB强化学习使用全解析+附代码(以DDPG PPO为例)
    Content建立动作和观测的数据结构创建环境根据观测、动作、环境step和reset函数创建环境测试环境是否符合要求网络创建Critic网络设置Critic网络训练参数Actor网络设置Actor网络训练参数创建智能体设置训练参数开始训练MATLAB强化学习step函数......
  • SpringbootLogingApplication has been compiled by a more recent version of the Ja
    一、问题描述:        SpringbootLogingApplicationhasbeencompiledbyamorerecentversionoftheJavaRuntime(classfileversion61.0),thisversionoftheJavaRuntimeonlyrecognizesclassfileversionsupto55.0        更新版本的Ja......
  • 870大神安卓Android电影院订票app设计-计算机毕业源码设计
    【友情提示】本店所有安卓Android项目都支持Eclipse和AndroidStudio编程工具,你们可以任意选择开发软件!开发环境:Myclipse(服务器端)+Eclipse(手机客户端)+mysql数据库 影院系统在电影院有着重要的地位,它不仅保存着电影院的基本信息,而且会储存大量的用户个人信息。影......
  • 解决过期苹果App应用的方法
     在使用苹果设备时,经常会遇到一些App应用已过期的情况,给用户带来不便。针对这一问题,本文将为您介绍几种处理过期苹果App应用的方法,包括更新应用、寻找替代应用、联系开发者和删除应用。通过这些方法,用户可以有效解决过期应用带来的问题。  1.更新应用首先,尝试更新该应用......
  • <sa8650>sa8650 video-之-vidc_test_app测试播放mp4
    <sa8650>sa8650video-之-vidc_test_app测试播放mp41、前言2、编写测试xml3、测试运行4、其它5、参考1、前言在SA8650中有一个测试video的测试程序那就是vidc_test_app;vidc_test_app的可是视频的编解码功能;本文主要分析讲解解码mp4文件的测试过程;详细内容下面分......
  • Uscrapper:一款功能强大的网络资源爬取工具
    关于UscrapperUscrapper是一款功能强大的网络资源爬取工具,该工具可以帮助广大研究人员从各种网络资源中轻松高效地提取出有价值的数据,并且提供了稳定、友好且易于使用的UI界面,是安全研究人员和网络分析人员的强有力工具。Uscrapper最大程度地释放了开源情报资源的力量,该工具......
  • 使用appuploder流程笔记
    使用appuploder流程笔记1.如何没有账号去apple官网注册一个,地址:https://developer.apple.com/account2.下载解压appuploder,双击打开,用刚刚注册的账号登录,下载地址:http://www.applicationloader.net/(使用第一次后,可以点击记住密码即可一键登录)注意:未支付apple的账号需要勾......
  • 云效 AppStack + 阿里云 MSE 实现应用服务全链路灰度
    作者:周静、吴宇奇、泮圣伟在应用开发测试验证通过后、进行生产发布前,为了降低新版本发布带来的风险,期望能够先部署到灰度环境,用小部分业务流量进行全链路灰度验证,验证通过后再全量发布生产。本文主要介绍如何通过阿里云MSE微服务引擎和云效应用交付平台AppStack实现灰度发布。......
  • 云效 AppStack + 阿里云 MSE 实现应用服务全链路灰度
    作者:周静、吴宇奇、泮圣伟在应用开发测试验证通过后、进行生产发布前,为了降低新版本发布带来的风险,期望能够先部署到灰度环境,用小部分业务流量进行全链路灰度验证,验证通过后再全量发布生产。本文主要介绍如何通过阿里云MSE微服务引擎和云效应用交付平台AppStack实现灰度发布。......