当前位置: 首页 > news >正文

AcWing算法提高课-3.1.3香甜的黄油

宣传一下算法提高课整理 <—

CSDN个人主页:更好的阅读体验 <—

csdn

题目传送门点这里

题目描述

农夫John发现了做出全威斯康辛州最甜的黄油的方法:糖。

把糖放在一片牧场上,他知道 N 只奶牛会过来舔它,这样就能做出能卖好价钱的超甜黄油。

当然,他将付出额外的费用在奶牛上。

农夫John很狡猾,就像以前的巴甫洛夫,他知道他可以训练这些奶牛,让它们在听到铃声时去一个特定的牧场。

他打算将糖放在那里然后下午发出铃声,以至他可以在晚上挤奶。

农夫John知道每只奶牛都在各自喜欢的牧场(一个牧场不一定只有一头牛)。

给出各头牛在的牧场和牧场间的路线,找出使所有牛到达的路程和最短的牧场(他将把糖放在那)。

数据保证至少存在一个牧场和所有牛所在的牧场连通。

输入格式

第一行: 三个数:奶牛数 N,牧场数 P,牧场间道路数 C。

第二行到第 N+1 行: 1 到 N 头奶牛所在的牧场号。

第 N+2 行到第 N+C+1 行:每行有三个数:相连的牧场A、B,两牧场间距 D,当然,连接是双向的。

输出格式

共一行,输出奶牛必须行走的最小的距离和。

数据范围

1≤N≤500,1≤N≤500,1N500,
2≤P≤800,2≤P≤800,2P800,
1≤C≤1450,1≤C≤1450,1C1450,
1≤D≤2551≤D≤2551D255

样例输入

3 4 5
2
3
4
1 2 1
1 3 5
2 3 7
2 4 3
3 4 5

样例输出

8

思路

本题可以先枚举黄油的位置,再用 spfa 求出每个牧场到当前位置的最短路。

  • 这道题不是每个牧场一个奶牛,一个牧场可能有好几个奶牛

  • 于是,我们用 cntcntcnt 数组来存第 iii 个仓库有几个奶牛

  • iii 个牧场的奶牛路程就是 di×cntid_i×cnt_idi×cnti

····························································································

  • 题目中说:数据保证至少存在一个牧场和所有牛所在的牧场连通

  • 但是,没有奶牛的牧场虽然有可能贡献答案,也有可能不与有奶牛的牧场连通

  • 所以枚举起点时要注意牧场之间的连通性

算法时间复杂度

复杂度为 O(nm)O(nm)O(nm),可以过

本题使用STL中的queue时间上会慢一点,不过不影响AC

这里贴上提交记录:
a
可以看到,queue即使加了O2,效率也比不上手写队列。

所以考试能手写就别用STL,除非你的时间限制很充裕。

AC Code

C++C++C++

#include <iostream>
#include <cstring>using namespace std;typedef pair<int, int> PII;const int N = 810, M = 3010;
const int INF = 0x3f3f3f3f;int n, m, p;
int id[N];
int h[N], e[M], w[M], ne[M], idx;
int q[N], dist[N];
bool st[N];void add(int a, int b, int c)
{e[idx] = b, w[idx] = c, ne[idx] = h[a], h[a] = idx ++ ;
}int spfa(int S)
{memset(dist, 0x3f, sizeof(dist));dist[S] = 0;int hh = 0, tt = 1;q[0] = S, st[S] = 1;while (hh != tt){int t = q[hh ++ ];if (hh == N) hh = 0;st[t] = 0;for (int i = h[t]; i != -1; i = ne[i]){int j = e[i];if (dist[j] > dist[t] + w[i]){dist[j] = dist[t] + w[i];if (!st[j]){q[tt ++ ] = j;if (tt == N) tt = 0;st[j] = 1;}}}}int res = 0;for (int i = 0; i < n; i ++ ){int j = id[i];if (dist[j] == INF) return INF;res += dist[j];}return res;
}int main()
{memset(h, -1, sizeof h);scanf("%d%d%d", &n, &p, &m);for (int i = 0; i < n; i ++ )scanf("%d", &id[i]);for (int i = 0; i < m; i ++ ){int a, b, c;scanf("%d%d%d", &a, &b, &c);add(a, b, c), add(b, a, c);}int res = INF;for (int i = 1; i <= p; i ++ )res = min(res, spfa(i));printf("%d\n", res);return 0;
}

a

最后,如果觉得对您有帮助的话,点个赞再走吧!

相关文章:

AcWing算法提高课-3.1.3香甜的黄油

宣传一下算法提高课整理 <— CSDN个人主页&#xff1a;更好的阅读体验 <— 题目传送门点这里 题目描述 农夫John发现了做出全威斯康辛州最甜的黄油的方法&#xff1a;糖。 把糖放在一片牧场上&#xff0c;他知道 N 只奶牛会过来舔它&#xff0c;这样就能做出能卖好价…...

私库搭建1:Nexus 安装 Docker 版

本文内容以语雀为准 文档 https://hub.docker.com/r/sonatype/nexus3Docker 安装&#xff1a;https://www.yuque.com/xuxiaowei-com-cn/gitlab-k8s/docker-install 安装 创建文件夹 由于 Nexus 的数据可能会很大&#xff0c;比如&#xff1a;作为 Docker、Maven 私库时&…...

LeetCode-面试题 05.02. 二进制数转字符串【数学,字符串,位运算】

LeetCode-面试题 05.02. 二进制数转字符串【数学&#xff0c;字符串&#xff0c;位运算】题目描述&#xff1a;解题思路一&#xff1a;简单暴力。小数点后面的二进制&#xff0c;now首先从0.5开始之和每次除以2。然后依次判断当前数是否大于now&#xff0c;是则答案加1。若等于…...

pandas: 三种算法实现递归分析Excel中各列相关性

目录 前言 目的 思路 代码实现 1. 循环遍历整个SDGs列&#xff0c;两两拿到数据 2. 调用pandas库函数直接进行分析 完整源码 运行效果 总结 前言 博主之前刚刚被学弟邀请参与了2023美赛&#xff0c;这也是第一次正式接触数学建模竞赛&#xff0c;现在已经提交等待结果…...

【Python百日进阶-Web开发-Vue3】Day543 - Vue3 商城后台 03:登录页面初建

文章目录 一、创建登录页面 login.vue二、登录页面响应式处理,以适应不同大小的屏幕2.1 element-plus 的layout布局中关于响应式的说明2.2 修改login.vue文件2.2.1 :lg=16 大于1200px 横排 2:12.2.2 :md=12 大于992小于1200px 横排 1:12.2.3 小于992 竖排三、引入Element-plus…...

python画直方图,刻画数据分布

先展示效果 准备一维数据 n 个数据元素计算最大值&#xff0c;最小值、均值、标准差、以及直方图分组 import numpy as np data list() for i in range(640):data.append(np.random.normal(1)) print(data)z np.histogram(data, bins64) print(list(z[0])) ### 对应 x 轴数据…...

几何学小课堂:非欧几何(广义相对论采用黎曼几何作为数学工具)【学数学关键是要学会在什么情况下,知道使用什么工具。】

文章目录 引言I 非欧几何1.1 黎曼几何1.2 共形几何1.3 罗氏几何II 黎曼几何的应用2.1 广义相对论2.2 超弦III 理解不同的几何体系的共存3.1 更扎实的欧氏几何3.2 殊途同归引言 公理有错会得到两种情况: 如果某一条自己设定的新公理和现有的公理相矛盾,那么相应的知识体系就建…...

Ubuntu配置静态IP的方法

Ubuntu配置静态IP的方法前言一、查看虚机分配的网卡IP二、查看网卡的网关IP三、配置静态IP1.配置IPv4地址2.执行netplan apply使改动生效3.配置的网卡未生效&#xff0c;修改50-cloud-init.yaml文件解决4.测试vlan网络通信总结前言 Ubuntu18.04 欧拉环境 vlan网络支持ipv6场景…...

90%的人都不算会爬虫,这才是真正的技术,从0到高手的进阶

很多人以为学会了urlib模块和xpath等几个解析库&#xff0c;学了Selenium就会算精通爬虫了&#xff0c;但到外面想靠爬虫技术接点私活&#xff0c;才发现寸步难行。 龙叔我做了近20年的程序员&#xff0c;今天就告诉你&#xff0c;真正的爬虫高手应该学哪些东西&#xff0c;就…...

排序之损失函数List-wise loss(系列3)

排序系列篇&#xff1a; 排序之指标集锦(系列1)原创 排序之损失函数pair-wise loss(系列2)排序之损失函数List-wise loss(系列3) 最早的关于list-wise的文章发表在Learning to Rank: From Pairwise Approach to Listwise Approach中&#xff0c;后面陆陆续续出了各种变形&#…...

js对象和原型、原型链的关系

JS的原型、原型链一直是比较难理解的内容&#xff0c;不少初学者甚至有一定经验的老鸟都不一定能完全说清楚&#xff0c;更多的"很可能"是一知半解&#xff0c;而这部分内容又是JS的核心内容&#xff0c;想要技术进阶的话肯定不能对这个概念一知半解&#xff0c;碰到…...

【SpringBoot高级篇】SpringBoot集成Sharding-JDBC分库分表

【SpringBoot高级篇】SpringBoot集成Sharding-JDBC分库分表Apache ShardingSphere分库分表分库分表的方式垂直切分垂直分表垂直分库水平切分水平分库水平分表分库分表带来的问题分库分表中间件Sharding-JDBCsharding-jdbc实现水平分表sharding-jdbc实现水平分库sharding-jdbc实…...

Shell特殊字符

shell语言&#xff0c;一些字符是有特殊意义的。 根据作用分为几种特殊符号 一、空白 shell调用函数&#xff0c;不像c语言那样用把参数放到括号里&#xff0c;用逗号分隔。而是用空格作为参数之间&#xff0c;参数与函数名之间的分隔符。 换行符也是特殊字符。换行符用作一条命…...

【计算机二级python】综合题目

计算机二级python真题 文章目录计算机二级python真题一、德国工业战略规划二、德国工业战略规划 第一问三、德国工业战略规划 第二问一、德国工业战略规划 描述:在右侧答题模板中修改代码&#xff0c;删除代码中的横线&#xff0c;填写代码&#xff0c;完成考试答案。‪‬‪‬…...

字节直播leader面

设计评论系统&#xff08;缓存怎么做&#xff09; mysql是否有主从延迟&#xff0c;如何解决 mysql有主从延迟 主从延迟主要因为mysql主从同步的机制&#xff0c;mysql有三种同步机制 同步复制&#xff1a;事务线程等待所有从库复制成功响应异步复制&#xff1a;事务不等待…...

PIC 单片机的时钟

注意&#xff1a;本文的内容无法保证绝对精确&#xff0c;后续可能会做改动&#xff0c;只是自己的笔记。这里的资料均源自数据手册本身。PIC18系列单片机的参考时钟可以选择三个基础时钟源&#xff1a;Primary Clock, OSC1 or OSC2,Secondary Clock,Inner clock.时钟源分为两个…...

【数据结构】关于二叉树你所应该知道的数学秘密

目录 1.什么是二叉树&#xff08;可以跳过 目录跳转&#xff09; 2.特殊的二叉树&#xff08;满二叉树/完全二叉树&#xff09; 2.1 基础知识 2.2 满二叉树 2.3 完全二叉树 3.二叉树的数学奥秘&#xff08;主体&#xff09; 3.1 高度与节点个数 3.2* 度 4.运用二叉树的…...

哈希表题目:猜数字游戏

文章目录题目标题和出处难度题目描述要求示例数据范围解法一思路和算法代码复杂度分析解法二思路和算法代码复杂度分析题目 标题和出处 标题&#xff1a;猜数字游戏 出处&#xff1a;299. 猜数字游戏 难度 4 级 题目描述 要求 你在和朋友一起玩猜数字&#xff08;Bulls…...

项目请求地址自动加上了本地ip的解决方式

一般情况下来说都是一些粗心大意的问题导致的 场景一&#xff1a;少加了/ 场景二&#xff1a;前后多加了空格 场景三&#xff1a;拼接地址错误![...

Vue3 企业级项目实战:项目须知与课程约定

本节内容很重要&#xff0c;希望大家能够耐心看完。 Vue3 企业级项目实战 - 程序员十三 - 掘金小册Vue3 Element Plus Spring Boot 企业级项目开发&#xff0c;升职加薪&#xff0c;快人一步。。「Vue3 企业级项目实战」由程序员十三撰写&#xff0c;2744人购买https://s.ju…...

2026最权威的六大AI写作工具推荐

Ai论文网站排名&#xff08;开题报告、文献综述、降aigc率、降重综合对比&#xff09; TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 在学术研究链路里&#xff0c;DeepSeek能够为论文撰写给予全流程辅助支持&#xff0c;从梳理…...

靠谱的工程防火门公司推荐

在工程行业摸爬滚打十几年&#xff0c;我见过太多因防火门翻车的项目&#xff1a;验收反复返工、产品用了两三年就变形卡死、超大门洞找不到厂家定制…… 这些看似鸡毛蒜皮的小事&#xff0c;一旦卡到消防验收节点上&#xff0c;轻则赔钱延期&#xff0c;重则被责令停工整改。今…...

告别“对方已撤回“!PC版微信QQ防撤回补丁终极指南

告别"对方已撤回"&#xff01;PC版微信QQ防撤回补丁终极指南 【免费下载链接】RevokeMsgPatcher :trollface: A hex editor for WeChat/QQ/TIM - PC版微信/QQ/TIM防撤回补丁&#xff08;我已经看到了&#xff0c;撤回也没用了&#xff09; 项目地址: https://gitco…...

基于Python与MediaPipe的手势控制系统:从原理到实战

1. 项目概述&#xff1a;用摄像头读懂你的手&#xff0c;让手势成为新鼠标如果你厌倦了每天在键盘和鼠标之间来回切换&#xff0c;或者只是单纯想体验一下《少数派报告》里汤姆克鲁斯隔空操作电脑的酷炫感&#xff0c;那么这个基于Python的手势控制系统绝对值得你花时间折腾一下…...

Erupt 七年最有诚意升级:官网、文档、脚手架更新,迈向工业级开源生态!

一、写在前面&#xff1a;为什么这次更新值得你重新认识 Erupt&#xff1f;过去几年&#xff0c;Erupt 一直被打上“功能强但太朴素”的标签。注解驱动、AI 模块、多 UI 模板、Cloud 集群、AI Agent&#xff0c;内核卷到飞起&#xff0c;但官网、文档、脚手架这“门面三件套”始…...

5分钟快速上手JD-GUI:免费Java反编译工具的完整实战指南

5分钟快速上手JD-GUI&#xff1a;免费Java反编译工具的完整实战指南 【免费下载链接】jd-gui A standalone Java Decompiler GUI 项目地址: https://gitcode.com/gh_mirrors/jd/jd-gui 你是否曾面对一个只有.class文件的Java项目&#xff0c;却急于想了解它的内部实现&a…...

Midjourney生成伪3D到真3D渲染的临界点在哪?——基于1327组渲染样本的Z-depth一致性、法线贴图兼容性与Blender导入成功率实测报告

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;Midjourney生成伪3D到真3D渲染的临界点在哪&#xff1f; Midjourney 本身不生成可编辑的 3D 几何体&#xff0c;其输出始终是静态二维图像——即便使用 --style raw 或 --v 6.1 配合 3D render、octane…...

Axure中文汉化终极指南:3分钟搞定英文界面,让原型设计更顺手

Axure中文汉化终极指南&#xff1a;3分钟搞定英文界面&#xff0c;让原型设计更顺手 【免费下载链接】axure-cn Chinese language file for Axure RP. Axure RP 简体中文语言包。支持 Axure 11、10、9。不定期更新。 项目地址: https://gitcode.com/gh_mirrors/ax/axure-cn …...

收藏!AI时代程序员的“避坑指南“与“财富密码“,小白也能轻松逆袭大模型开发!

文章反驳了AI将取代程序员的论调&#xff0c;指出程序员面临的是结构性冲击&#xff0c;初级岗位收缩但中高端岗位爆发式增长。AI将替代重复劳动&#xff0c;促使程序员向上迁移至系统架构设计等高价值岗位。AI岗位薪资远超行业平均水平&#xff0c;程序员通过拥抱AI技术&#…...

基于python-telegram-bot的审批按钮系统设计与实现

1. 项目概述&#xff1a;一个为Telegram机器人设计的审批按钮系统如果你在团队协作、内容审核或者自动化流程中&#xff0c;经常需要通过Telegram机器人来处理“同意”或“拒绝”这类审批请求&#xff0c;那么你很可能遇到过这样的困扰&#xff1a;用户发来一条需要审核的消息&…...