“新华三杯”第十届成都信息工程大学ACM程序设计竞赛(同步赛)L. 怎么走啊(最短路+二分 分段函数)

news2024/11/26 8:33:53

题目

登录—专业IT笔试面试备考平台_牛客网

思路来源

衡阳师范学院ac代码、pj学弟

题解

大致可以证明,在w从1e5减小到1的过程中,

之前某条反向边没有用到,现在需要用到反向边,也就是正向边用到的变少了

这样的变化有sqrt个,二分每个变化时的临界点,复杂度似乎是O(nsqrtnlognlogn)的

但是由于只关注1到n的最短路,临界点&二分的量级很难卡满,只能说O(能过)了

代码

#include<bits/stdc++.h>
using namespace std;
typedef long long int ll;
typedef unsigned long long int ull;
#define endl "\n"
#define IOS ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0)
#define int ll
const int N=1e5+10;
const int mod=1e9+7;
const int inf=0x3f3f3f3f;
typedef pair<int,int> pii;
int n,m,d[N],st[N],ans[N],pre[N];
vector<array<int,3>> g[N];
int dijkstra(int W){
    for(int i=1;i<=n;i++) st[i]=0,d[i]=1e18;
    priority_queue<pii,vector<pii>,greater<pii>> q;
    q.push({0,1}); d[1]=0;
    while(!q.empty()){
        auto [dt,u]=q.top(); q.pop();
        if(st[u]) continue;
        st[u]=1;
        for(auto [j,w,f]:g[u]){
            int dis=dt;
            if(f) dis+=w*W;
            else dis+=w;
            if(d[j]>dis){
                d[j]=dis;
                pre[j]=u;
                q.push({d[j],j});
            }
        }
    }
    return d[n];
}
map<pii,int> mp;
int fun(){
    int cnt=0;
    for(int i=n;i;i=pre[i]) cnt+=mp[{pre[i],i}];
    return cnt;
}
void solve(){
    cin>>n>>m; 
    for(int i=1;i<=m;i++){
        int u,v,w; cin>>u>>v>>w;
        g[u].push_back({v,w,0});
        g[v].push_back({u,w,1});
        mp[{u,v}]=0;
        mp[{v,u}]=w;
    }
    int L=1;
    while(L<=1e5){
        int l=L,r=1e5; 
        int dis=dijkstra(l),sum=fun();
        while(l<r){
            int mid=(l+r+1)>>1;
            if(dijkstra(mid)==dis+(mid-L)*sum) l=mid;
            else r=mid-1;
        }
        for(int i=L;i<=l;i++) ans[i]=dis+(i-L)*sum;
        L=l+1;
    }
    int q; cin>>q;
    while(q--){
        int W; cin>>W;
        cout<<ans[W]<<endl;
    }
}
signed main(){
    IOS;
    int _=1;
    //cin>>_;
    while(_--){
        solve();
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1301122.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【计算机网络基础1】网络层次划分和OSI七层网络模型

1、网络层次划分 为了使不同计算机厂家生产的计算机能够相互通信&#xff0c;以便在更大的范围内建立计算机网络&#xff0c;国际标准化组织&#xff08;ISO&#xff09;在1978年提出了"开放系统互联参考模型"&#xff0c;即著名的OSI/RM模型&#xff08;Open Syste…

WPS宏批量修改图片尺寸

致谢 感谢网络各位大佬的分享&#xff0c;可以让我快速的学习这块内容。 JS宏代码

佳明(Garmin) fēnix 7X 增加小睡检测功能

文章目录 &#xff08;一&#xff09;零星小睡&#xff08;二&#xff09;小睡检测&#xff08;三&#xff09;吐槽佳明&#xff08;3.1&#xff09;心率检测&#xff08;3.2&#xff09;光线感应器&#xff08;3.3&#xff09;手表重量&#xff08;3.4&#xff09;手表续航 &a…

Nodejs后端+express框架

前言 基于vue3Node后台管理项目&#xff0c;补充nodejs和express相关知识。 文章目录 一&#xff0c;express 1.官网 Express - 基于 Node.js 平台的 web 应用开发框架 - Express中文文档 | Express中文网 2.安装 npm install express --save 二、MongoDB 特点 非关…

关于图像清晰度、通透度的描述

1、问题背景 在图像评测过程中&#xff0c;从主观上一般怎么去评判一副图像的优劣呢&#xff1f; 比较显而易见的就是图像的清晰度和通透度&#xff0c;他们决定了评判者对画质的第一印象。 那怎么去理解图像的清晰度和通透度呢&#xff1f;这是本文要描述的内容。 2、问题分…

reinforce 跑 CartPole-v1

gym版本是0.26.1 CartPole-v1的详细信息&#xff0c;点链接里看就行了。 修改了下动手深度强化学习对应的代码。 然后这里 J ( θ ) J(\theta) J(θ)梯度上升更新的公式是用的不严谨的&#xff0c;这个和王树森书里讲的严谨公式有点区别。 代码 import gym import torch from …

二十一章网络通信

计算机网络实现了堕胎计算机间的互联&#xff0c;使得它们彼此之间能够进行数据交流。网络应用程序就是再已连接的不同计算机上运行的程序&#xff0c;这些程序借助于网络协议&#xff0c;相互之间可以交换数据&#xff0c;编写网络应用程序前&#xff0c;首先必须明确网络协议…

用23种设计模式打造一个cocos creator的游戏框架----(八)适配器模式

1、模式标准 模式名称&#xff1a;适配器模式 模式分类&#xff1a;结构型 模式意图&#xff1a;适配器模式的意图是将一个类的接口转换成客户端期望的另一个接口。适配器模式使原本接口不兼容的类可以一起工作。 结构图&#xff1a; 适用于&#xff1a; 系统需要使用现有的…

力扣题:数字与字符串间转换-12.11

力扣题-12.11 [力扣刷题攻略] Re&#xff1a;从零开始的力扣刷题生活 力扣题1&#xff1a;506. 相对名次 解题思想&#xff1a;进行排序即可 class Solution(object):def findRelativeRanks(self, score):""":type score: List[int]:rtype: List[str]"&…

Java学习笔记——instanceof关键字

instanceof关键字&#xff1a; 作用&#xff1a;保证对象向下转型的安全性在对象向下转型前判断某一对象实例是否属于某个类 判断时&#xff0c;如果对象是null&#xff0c;则 instanceof 判断结果为 false

搜狗输入法v模式 | 爱莉希雅皮肤

搜狗输入法v模式 | 爱莉希雅皮肤 前言爱莉希雅皮肤v模式 前言 搜狗输入法有v模式&#xff0c;v模式是一个转换和计算的功能组合。拥有数字转换、日期转换、算式计算、函数计算等功能。本文介绍如何使用v模式&#xff0c;并附赠一个爱莉希雅的皮肤&#xff0c;可通过百度网盘下…

订单系统的设计与海量数据处理实战

概述 订单系统可以说是整个电商系统中最重要的一个子系统&#xff0c;因此订单数据可以算作电商企业最重要的数据资产。订单系统从代码上来说可分为两部分&#xff1a;订单程序和历史订单处理程序。数据存储进行分库分表。 订单系统业务分析 对于一个合格的订单系统&#xf…

人力资源服务大赛活动方案

为加快人力资源服务业发展&#xff0c;进一步提升人力资源服务从业人员的专业化、职业化水平&#xff0c;推动云南省人力资源服务产业创新发展&#xff0c;促进行业服务规范&#xff0c;为云南省经济社会发展提供人力服务保障。云南省人力资源和社会保障厅计划组织开展“云南省…

vite脚手架,配置动态生成路由,添加不同的layout以及meta配置

实现效果&#xff0c;配置了layout和对应的路由的meta 我想每个模块添加对应的layout&#xff0c;下边演示一层layout及对应的路由 约束规则&#xff1a; 每个模块下&#xff0c;添加对应的 layout.vue 文件 每个文件夹下的 index.vue 是要渲染的页面路由 每个渲染的页面路由对…

关于python一些惯用写法、语法

关于python一些惯用代码处理 程序入口&#xff08;python从脚本第一行开始运行&#xff0c;没有统一的入口)if __name__ __main__: filename.split("/")[-1][:-4][split("/")\[-1\] 和 split("/",-1)的区别](https://blog.csdn.net/jialibang/a…

分层网络模型(OSI、TCP/IP)及对应的网络协议

OSI七层网络模型 OSI&#xff08;Open System Interconnect&#xff09;&#xff0c;即开放式系统互连参考模型&#xff0c; 一般都叫OSI参考模型&#xff0c;是ISO组织于1985年研究的网络互连模型。OSI是分层的体系结构&#xff0c;每一层是一个模块&#xff0c;用于完成某种功…

TailwindCSS 如何处理RTL布局模式

背景 TikTok作为目前全世界最受欢迎的APP&#xff0c;需要考虑兼容全世界各个地区的本地化语言和阅读习惯。其中对于阿拉伯语、波斯语等语言的阅读书写习惯是从右向左的&#xff0c;在前端有一个专有名字RTL模式&#xff0c;即Right-to-Left。 其中以阿拉伯语作为第一语言的人…

Oracle(2-14)User-Managed Incomplete Recovery

文章目录 一、基础知识1、Incomplete Recovery Overview 不完全恢复概述2、Situations Requiring IR 需要不完全恢复的情况3、Types of IR 不完全恢复的类型4、IR Guidelines 不完全恢复指南5、User-Managed Procedures 用户管理程序6、RECOVER Command Overview 恢复命令概述7…

深度学习:自注意力机制(Self-Attention)

1 自注意力概述 1.1 定义 自注意力机制&#xff08;Self-Attention&#xff09;&#xff0c;有时也称为内部注意力机制&#xff0c;是一种在深度学习模型中应用的机制&#xff0c;尤其在处理序列数据时显得非常有效。它允许输入序列的每个元素都与序列中的其他元素进行比较&a…

应用开发平台文件处理设计与实现系列之1——文件处理需求、方案、整体设计

需求 对于应用系统而言&#xff0c;数据主要分为两大类&#xff0c;结构化数据和非结构化数据。 结构化数据通常是指可以明确定义其数据结构及属性的对象&#xff0c;如组织机构、用户、合同、订单等&#xff0c;通常都会使用关系型数据库来存储&#xff0c;通过SQL来读写。 非…