【洛谷】P1073 [NOIP2009 提高组] 最优贸易(dp+搜索)

news2024/11/25 12:55:49

接下来讲具体解法。

第一、输入。存邻接表

第二、我们需要做深搜。可以用递归来做,同时做动规:

函数如下(贴了注释).

void dfs(int x,int minx,int pre) {                           //x表示当前访问的节点编号,minx表示目前为止的最小的商品价格,pre表示上一个节点的编号
    int flag=1;                                          //用于判断是否已被访问过,需要终止
    minx=min(c[x],minx);                                 //判断本次的商品价格是否是最小值
    if (mi[x]>minx) mi[x]=minx,flag=0;                   //判断mi数组(记录了每次的最小值)并更新,在更新的同时把flag设为0(不用退出了)
    做动态规划;                                         //别着急flag还会继续更新的
    if (flag) return;                                    //退出,千万不能露,不然程序就会放飞自我,堆栈溢出->完美MLE只有10分。
    for (int i=0;i<g[x].size();i++) dfs(g[x][i],minx,x); //继续进行递归调用,访问目前节点能访问到的节点。
}

 

#include<bits/stdc++.h>
using namespace std;
#define int long long
#define inf 0x7f7f7f7f
const int N=1e5+10;
vector<int>v[N];
int n,m,f[N],mi[N],c[N];
void init(){
	for(int i=1;i<=n;i++)mi[i]=inf;
}
void dfs(int x,int minx,int pre){
	int flag=1;
	minx=min(c[x],minx);
	if(mi[x]>minx){
		mi[x]=minx;
		flag=0;
	}
	int mmax=max(f[pre],c[x]-minx);
	if(f[x]<mmax){
		f[x]=mmax;
		flag=0;
	}
	if(flag)return;
   for(auto i:v[x]){
   	dfs(i,minx,x);
   } 
}
void solve() {
   cin>>n>>m;
   init();
   for(int i=1;i<=n;i++) cin>>c[i];
   for(int i=1;i<=m;i++){
   	int x,y,z;
   	cin>>x>>y>>z;
   	v[x].push_back(y);
   	if(z==2) v[y].push_back(x);
   }
   dfs(1,inf,0);
   cout<<f[n]<<"\n";
   
}
signed main() {

	ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);
	int tt=1;
	//cin>>tt;
	while(tt--) {
		solve();
	}
	return 0;
}

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

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

相关文章

添加白名单 gcc/g++【Linux系统编程】

目录 一、添加白名单 二、gcc和g的使用 1、背景知识 一、添加白名单 如何让普通用户可以执行sudo&#xff08;以root的身份&#xff09;指令&#xff1f; 添加白名单 用root身份在/etc/sudoers目录添加 vim /etc/sudoers二、gcc和g的使用 1、背景知识 &#xff08;1&#…

【FFmpeg实战】ffplay整体框架

原文地址&#xff1a;https://segmentfault.com/a/1190000042611796 本文使用的ffplay.c的版本是搭配ffmpeg5.0的版本。 ffplay代码大致架构 关于fplay的架构很难三言两语说得清楚&#xff0c;而且本人对它的理解也不是很深&#xff0c;加上行笔比较啰嗦&#xff0c;可能就更…

springboot配置多个mongo数据源

yaml配置文件&#xff1a; spring:data:mongodb:uri: mongodb://admin:密码ip:27017/paasoo?authSourceadminother:uri: mongodb://admin:密码ip:27017/conversation?authSourceadmin java config文件&#xff1a; package com.paasoo.quartz.config.mongo;import org.spr…

VR数字乡村激活乡土文化生命力,助力乡村振兴

民俗节庆、传统技艺等蕴含着中华五千年以来的传统文化&#xff0c;乡村文化建设在为文化留住血脉的同时&#xff0c;也为高质量发展创造更多可能。找准乡村文化与产业的结合点&#xff0c;有利于激发产业发展的潜力&#xff0c;激活乡土文化的生命力&#xff0c;为乡村振兴注入…

baichuan-7B模型

文章目录 baichuan-7B介绍baichuan-7B 推理baichuan-7B 微调 baichuan-7B介绍 2023年6月15日&#xff0c;搜狗创始人王小川创立的百川智能公司&#xff0c;发布了70 亿参数量的中英文预训练大模型——baichuan-7B。 baichuan-7B 基于 Transformer 结构&#xff0c;在大约 1.2…

【Ubuntu学习MySQL——安装MySQL】

首先得su&#xff0c;然后输入密码&#xff0c;进入到root模式下&#xff0c;以下命令均在root用户模式下进行 1.在这里我们使用RPM包来安装Mysql&#xff0c;所以首先安装RPM包 apt install rpm2.安装完RPM包之后&#xff0c;检测系统是否自带安装MySQL&#xff0c;如果没有…

最小年龄仅5岁!盘点全球最“天才”少年黑客 TOP 10

你还能想起自己8岁的时候&#xff0c;每天都在玩什么吗&#xff1f;可能是在楼下和小朋友一起捉迷藏&#xff1f;在家追一本连载的漫画书&#xff1f;又或者在电脑上玩种菜偷菜的小游戏&#xff1f; 当同龄人还在沉迷于这些比较“基础”的小游戏时&#xff0c;有这样一批和互联…

ARM_uart_发送接收字符 and 发送接收字符串

include/uart4.h #ifndef __UART4_H__ #define __UART4_H__#include "stm32mp1xx_gpio.h" #include "stm32mp1xx_rcc.h" #include "stm32mp1xx_uart.h"//初始化相关操作 void hal_uart4_init();//发送一个字符 void hal_put_char(const char st…

逆波兰表达式

思路 变量 String[] arr Stack 代码 public class Test1 {public static void main(String[] args) {String s "3 40 5 * 6 -";Stack numArr new Stack(10);int num1 0;int num2 0;int res 0;int index 0;String[] arr s.split(" ");for(String…

Flink 读写Kafka总结

前言 总结Flink读写Kafka Flink 版本 1.15.4 Table API 本文主要总结Table API的使用&#xff08;SQL&#xff09;&#xff0c;官方文档&#xff1a;https://nightlies.apache.org/flink/flink-docs-release-1.17/zh/docs/connectors/table/kafka/ kerberos认证相关配置 …

spring生命周期配置

初始化方法&#xff0c;可读化方法&#xff1a; 初始化方法定义在java接口文件&#xff1a; init-method&#xff1a;指定类中的初始化方法名称 destroy-method &#xff1a;指定类中销毁方法名称 这里要在配置文件中配置一份&#xff1a; 如果想要destroy文件关闭后还能运行&…

Spring源码整体脉络介绍及源码编译

需完成的任务 类------------------------------------------BeanFactory----------------------------------------->Bean【BeanFactory调用getBean()生产出来的】 BeanFactory Spring顶层核心接口&#xff0c;使用了简单工厂模式【根据名字&#xff0c;生产出不同的Bean…

【MR】搭建 Vision Pro App 开发环境

2023 年 6 月 21 日&#xff0c;Apple 发布 Xcode 15 Beta 2&#xff0c;包含了初代版本的 visionOS 1 beta&#xff0c;标志着苹果正式发布 Vsion Pro 的 SDK。 一、安装 Xcode 15 Beta 2 官网下载&#xff0c;需要 MacOS > 13.4 可以不选 visionOS 1 beta&#xff0c;直接…

ubuntu系统linux下安装指定版本的gcc方法

1:查看当前linux系统的gcc版本 gcc -v2&#xff1a;查看和cuda版本对应的gcc版本 3&#xff1a;安装和cuda对应版本的gcc MAX_GCC_VERSION8 sudo apt install gcc-$MAX_GCC_VERSION g-$MAX_GCC_VERSION4&#xff1a;建立gcc和cuda的软链接 sudo ln -s /usr/bin/gcc-$MAX_GC…

分布式监控系统zabbix应用

文章目录 一、zabbix简介1.1 什么是zabbix1.2 zabbix 监控原理&#xff1a;1.3 Zabbix 6.0 新特性&#xff1a;1.4 Zabbix 6.0 功能组件&#xff1a; 二、部署 zabbix 服务端1.3 部署数据库&#xff08;要求 MySQL 5.7 或 Mariadb 10.5 及以上版本&#xff09;1.4 编译安装 zab…

PHPExcel7.4数据导入很容易跳的坑

数据导入插入数据表很容易跳的坑 1&#xff1a;数据表有id并且是自增的&#xff0c;唯一的&#xff0c;这时候excel表格里面也有id&#xff0c;所以导致添加报错&#xff0c; 解决方法&#xff0c;把excel表格的字段名id换成名称_id&#xff0c;或者修改数据表 2.excel有年月…

飞书接入机器人NODE开发自动回复

一、创建飞书应用 1.登录飞书开放平台 进入开发者后台 创建自建应用 2.添加应用能力 选择机器人添加 3.添加事件订阅并根据权限开通权限 此处只添加获取消息事件 4.配置应用服务端地址&#xff08;当事件触发 会触发设置的地址 并发送事件数据&#xff09;开启Encrypt Key 实…

简要介绍 | 元学习:学会学习的新途径

注1&#xff1a;本文系“简要介绍”系列之一&#xff0c;仅从概念上对元学习&#xff08;Meta-Learning&#xff09;进行非常简要的介绍&#xff0c;不适合用于深入和详细的了解。 元学习&#xff1a;学会学习的新途径 BLOG | Samsung Research 1 背景介绍 元学习&#xff08;…

Linux基础工具|C/C++编译器:gcc/g++的使用

1.基础使用 gcc是专门用来编译C语言的编译器&#xff0c;而g是编译C的编译器&#xff08;也可以编译C语言&#xff0c;毕竟C语言兼容C&#xff09;。Linux下gcc默认使用8字节的指针。 下载安装&#xff1a;gcc的安装指令“sudo yum install gcc”&#xff08;在Linux里大部分…

【C++】详解set和map

目录 一、什么是关联式容器及树形结构的关联式容器二、键值对三、set1、什么是set2、set的使用1&#xff09;set的模版参数列表2&#xff09;set的构造3&#xff09;set的迭代器4&#xff09;set的容量5&#xff09;set的修改操作 3、multiset的介绍及使用 四、map1、什么是map…