AtCoder Beginner Contest 395 E

news2025/3/5 10:10:29

点我写题 

题意:给个有向图,从1出发,每次可以走一条有向边,花费为1,也可以选择把全部有向边翻转,花费x,问到n的最小花费

思路:最短路+dp,定义dis[i][0/1]表示走到i为止,用了翻转操作(0/1)次的最少代价(为啥总是取值0/1呢,因为翻转了偶数次就相当于翻回去了),如果当前状态是走到当前点翻转了奇数次,那么我当前点就只能走相邻的编号为1的边(当然这个编号是我自己定义的,0表示原边,1表示反边,也就是建了一个无向图,然后用编号区分),转移的话就是对+1操作取min(可以看下面代码),特殊的是对自己这个点来说,我能在原地用翻转操作,这样就是对+x取min,然后状态要取反。

os:我个人觉得这个实现还是比较优美的,不用建奇奇怪怪的分层图,这题有点像第十四届蓝桥杯java b组的最后一题,所以思路比较快能想到。

import java.util.*;
import java.io.*;
public class Main{
    public static BufferedReader rd=new BufferedReader(new InputStreamReader(System.in));
    public static BufferedWriter wd=new BufferedWriter(new OutputStreamWriter(System.out));
    public static int n,m,x;
    public static long dis[][];
    public static boolean has[][];
    public static ArrayList<pair>sk[];
    public static class pair implements Comparable<pair>{
        int fi,se;
        pair(int fi,int se){
            this.fi=fi;this.se=se;
        }
        public int compareTo(pair b){
            return Long.compare(dis[fi][se],dis[b.fi][b.se]);
        }
    }
    public static void dijkstra(){
        for(int i=1;i<=n;i++) Arrays.fill(dis[i],(long)1e18);
        dis[1][0]=0;dis[1][1]=x;
        PriorityQueue<pair>dl=new PriorityQueue<>();
        dl.add(new pair(1,0));dl.add(new pair(1,1));
        while(dl.isEmpty()==false){
            pair nw=dl.poll();
            int u=nw.fi,st=nw.se;
            if(has[u][st]) continue;
            has[u][st]=true;
            if(dis[u][st^1]>dis[u][st]+x){
                dis[u][st^1]=dis[u][st]+x;
                dl.add(new pair(u,st^1));
            }
            for(pair v:sk[u]){
                if(v.se!=st) continue;
                if(dis[v.fi][st]>dis[u][st]+1){
                    dis[v.fi][st]=dis[u][st]+1;
                    dl.add(new pair(v.fi,st));
                }
            }
        }
    }
    public static void main(String args[])throws Exception{
        String dr[]=rd.readLine().split(" ");
        n=Integer.parseInt(dr[0]);m=Integer.parseInt(dr[1]);x=Integer.parseInt(dr[2]);
        dis=new long [n+10][3];
        sk=new ArrayList [n+10];
        has=new boolean [n+10][3];
        for(int i=1;i<=n;i++) sk[i]=new ArrayList<>();
        for(int i=1;i<=m;i++){
            dr=rd.readLine().split(" ");
            int u=Integer.parseInt(dr[0]),v=Integer.parseInt(dr[1]);
            sk[u].add(new pair(v,0));sk[v].add(new pair(u,1));
        }
        dijkstra();
      //  for(int i=1;i<=n;i++) wd.write(i+" "+dis[i][0]+" "+dis[i][1]+"\n");
        wd.write(Math.min(dis[n][0],dis[n][1])+"");
        wd.flush();
    }
}

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

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

相关文章

张驰咨询:用六西格玛重构动力电池行业的BOM成本逻辑

在动力电池行业&#xff0c;BOM&#xff08;物料清单&#xff09;成本每降低1%&#xff0c;都可能改写企业的利润曲线。某头部企业的三元锂电池BOM成本曾较行业标杆高出11%&#xff0c;单电芯利润率被压缩至3%的生死线。然而&#xff0c;通过张驰咨询的六西格玛方法论&#xff…

pyside6学习专栏(九):在PySide6中使用PySide6.QtCharts绘制6种不同的图表的示例代码

PySide6的QtCharts类支持绘制各种型状的图表&#xff0c;如面积区域图、饼状图、折线图、直方图、线条曲线图、离散点图等&#xff0c;下面的代码是采用示例数据绘制这6种图表的示例代码,并可实现动画显示效果&#xff0c;实际使用时参照代码中示例数据的格式将实际数据替换即可…

《深度学习实战》第10集:联邦学习与隐私保护

第10集&#xff1a;联邦学习与隐私保护 2025年3月4日更新了代码&#xff0c;补充了实例程序运行截图 和 如何提高模型准确率的方法 系统梳理 集集精彩 代码验证 保证实战 随着数据隐私问题日益受到关注&#xff0c;联邦学习&#xff08;Federated Learning&#xff09; 作为一…

【数据结构】二叉树总结篇

遍历 递归 递归三部曲&#xff1a; 1.参数和返回值 2.终止条件 3.单层逻辑&#xff08;遍历顺序&#xff09; var preorderTraversal function(root) { // 第一种let res[];const dfsfunction(root){if(rootnull)return ;//先序遍历所以从父节点开始res.push(root.val);//递归…

软考-数据库开发工程师-3.1-数据结构-线性结构

第3章内容比较多&#xff0c;内容考试分数占比较大&#xff0c;6分左右 线性表 1、线性表的定义 一个线性表是n个元素的有限序列(n≥0)&#xff0c;通常表示为(a1&#xff0c;a2, a3,…an). 2、线性表的顺序存储(顺序表) 是指用一组地址连续的存储单元依次存储线性表中的数据元…

【五.LangChain技术与应用】【2.LangChain虚拟环境搭建(下):环境优化与调试】

一、Docker化部署:别让你的环境成为薛定谔的猫 经历过"在我机器上能跑"惨案的老铁都懂,传统虚拟环境就像个黑盒子。去年我帮客户部署LangChain应用,因为glibc版本差了0.1,整个服务直接崩成烟花。从那天起,我所有项目都强制上Docker! Dockerfile生存指南: #…

deepseek+mermaid【自动生成流程图】

成果&#xff1a; 第一步打开deepseek官网(或百度版&#xff08;更快一点&#xff09;)&#xff1a; 百度AI搜索 - 办公学习一站解决 第二步&#xff0c;生成对应的Mermaid流程图&#xff1a; 丢给deepseek代码&#xff0c;或题目要求 生成mermaid代码 第三步将代码复制到me…

在 Element Plus 的 <el-select> 组件中,如果需要将 <el-option> 的默认值设置为 null。 用于枚举传值

文章目录 引言轻松实现 `<el-option>` 的默认值为 `null`I 实现方式监听清空事件 【推荐】使用 v-model 绑定 null添加一个值为 null 的选项处理 null 值的显示引言 背景:接口签名规则要求空串参与,空对象不参与签名计算 // 空字符串“” 参与签名组串,null不参与签…

解码未来!安徽艾德未来智能科技有限公司荣获“GAS消费电子科创奖-产品创新奖”!

在2025年“GAS消费电子科创奖”评选中&#xff0c;安徽艾德未来智能科技有限公司提交的“讯飞AI会议耳机iFLYBUDS Pro 2”&#xff0c;在技术创新性、设计创新性、工艺创新性、智能化创新性及原创性五大维度均获得评委的高度认可&#xff0c;荣获“产品创新奖”。 这一殊荣不仅…

力扣hot100刷题——栈

文章目录 69.有效的括号题目描述思路&#xff1a;栈code 70.最小栈题目描述思路&#xff1a;双栈法code优化&#xff1a;单栈法code 71.字符串解码题目描述思路&#xff1a;栈code 73.每日温度题目描述思路&#xff1a;单调栈code 74.柱状图中最大的矩形题目描述思路&#xff1…

TMS320F28P550SJ9学习笔记2:Sysconfig 配置与点亮LED

今日学习使用Sysconfig 对引脚进行配置&#xff0c;并点亮开发板上的LED4 与LED5 我的单片机开发板平台是 LAUNCHXL_F28P55x 我是在上文描述的驱动库C2000ware官方例程example的工程基础之上进行添加功能的 该例程路径如下&#xff1a;D:\C2000Ware_5_04_00_00\driverlib\f28p…

健康养生:开启活力人生的钥匙

在快节奏的现代生活中&#xff0c;健康养生已成为我们追求美好生活的关键。它不仅关乎身体的强健&#xff0c;更与心灵的宁静息息相关。 合理饮食是健康养生的基石。多吃蔬菜、水果&#xff0c;它们富含维生素与矿物质&#xff0c;为身体提供充足养分。全谷物食品也是不错的选…

HTTP 与 HTTPS 协议:从基础到安全强化

引言 互联网的消息是如何传递的&#xff1f; 是在路由器上不断进行跳转 IP的目的是在寻址 HTTP 协议&#xff1a;互联网的基石 定义 HTTP&#xff08;英文&#xff1a;HyperText Transfer Protocol&#xff0c;缩写&#xff1a;HTTP&#xff09;&#xff0c;即超文本传输协…

【Linux】冯诺依曼体系结构-操作系统

一.冯诺依曼体系结构 我们所使用的计算机&#xff0c;如笔记本等都是按照冯诺依曼来设计的&#xff1a; 截止目前&#xff0c;我们所知道的计算机都是由一个一个的硬件组装起来的&#xff0c;这些硬件又由于功能的不同被分为了输入设备&#xff0c;输出设备&#xff0c;存储器…

mapbox进阶,使用点类型geojson加载symbol符号图层,用于标注带图标的注记,且文字居中在图标内,图标大小自适应文字

&#x1f468;‍⚕️ 主页&#xff1a; gis分享者 &#x1f468;‍⚕️ 感谢各位大佬 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍⚕️ 收录于专栏&#xff1a;mapbox 从入门到精通 文章目录 一、&#x1f340;前言1.1 ☘️mapboxgl.Map 地图对象…

布隆过滤器(附带位图讲解)

提到位图&#xff0c;我们首先想到的应该是它的两面定义&#xff1a; 位图图像&#xff08;bitmap&#xff09;&#xff0c;亦称为点阵图或栅格图像&#xff0c;是由称作像素&#xff08;图片元素&#xff09;的单个点组成的。位图是指内存中连续的二进制位&#xff0c;用于对…

CC++的内存管理

目录 1、C/C内存划分 C语言的动态内存管理 malloc calloc realloc free C的动态内存管理 new和delete operator new函数和operator delete函数 new和delete的原理 new T[N]原理 delete[]的原理 1、C/C内存划分 1、栈&#xff1a;存有非静态局部变量、函数参数、返回…

【商城实战(2)】商城架构设计:从底层逻辑到技术实现

【商城实战】专栏重磅来袭&#xff01;这是一份专为开发者与电商从业者打造的超详细指南。从项目基础搭建&#xff0c;运用 uniapp、Element Plus、SpringBoot 搭建商城框架&#xff0c;到用户、商品、订单等核心模块开发&#xff0c;再到性能优化、安全加固、多端适配&#xf…

USB 模块 全面解析(一)

本文是我整理的一些 USB 的学习心得&#xff0c;希望能对大家有所帮助。 文章目录 前言&#x1f352; USB 基本概述&#x1f352; USB 结构框架&#x1f349;硬件框架&#x1f349; 软件框架 &#x1f352; USB 电气信号&#x1f349; USB 硬件线路&#x1f349; 信号电平&…

xr-frame 3D Marker识别,扬州古牌坊 3D识别技术稳定调研

目录 识别物体规范 3D Marker 识别目标文件 map 生成 生成任务状态解析 服务耗时&#xff1a; 对传入的视频有如下要求&#xff1a; 对传入的视频建议&#xff1a; 识别物体规范 为提高Marker质量&#xff0c;保证算法识别效果&#xff0c;可参考Marker规范文档 Marker规…