洛谷 题解 P1828 【香甜的黄油 Sweet Butter】
潇洒の开始
第一步:食用头文件和定义变量,
变量干什么用的说的很清楚
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int n,p,c,i,j,x,y,t,min1,head,tail,tot,u;
int a[][],b[],dis[],num[],w[][],team[];//team为队列,dis为距离,num为邻接点个数,a存相邻点
bool exist[];//exist是存在的意思,确定某个元素是否存在
int main()
第二步:正常的输入
cin>>n>>p>>c;//奶牛数,牧场数,牧场间的道路数
for(i=; i<=p; i++)
{
b[i]=;
num[i]=;
for(j=; j<=p; j++)
w[i][j]=0x7fffffff/;//第i到第j个牧场的路程初始化为无穷
}
将两点之间的距离变为超大超大的数,酱紫好比较的啦
第三步:正常的输入加存储
for(i=; i<=n; i++)
cin>>b[i];//输入奶牛所在的牧场号
for(i=; i<=c; i++) //邻接矩阵存储,采用循环队列能够降低队列大小,队列长度只需开到2*n+5即可。
{
cin>>x>>y>>t;//相连牧场AB和两牧场间的距离
w[x][y]=t;//保存x到y间的距离
a[x][++num[x]]=y;//存相邻点,在num原有的基础上加一,并将y点存入
a[y][++num[y]]=x;//存相邻点,在num原有的基础上加一,并将x点存入
w[y][x]=w[x][y];//因为是双向连通的,所以两牧场间的距离相等
}
详细解释代码里面说的很清楚了,在啰嗦一下,双向的很重要
用地接斯科拉的哥们们注意了。
第四步:初始化minn
min1=0x7fffffff/3;//初始化min
最后一步:gao chao 预警
for(i=; i<=p; i++)
{
for(j=; j<=p; j++) dis[j]=0x7fffffff/;
//memset(team,0,sizeof(team)); //队列数组初始化
//memset(exist,false,sizeof(exist)); //exist标志初始化
dis[i]=;
team[]=i;
head=;
tail=;
exist[i]=true; //起始点入队
while(head!=tail)
{
head++;
head=((head-)%)+; //循环队列处理
u=team[head];
exist[u]=false;
for(j=; j<=num[u]; j++) //num数组储存的为当前点所相邻的点的个数
if (dis[a[u][j]]>dis[u]+w[u][a[u][j]])
{
dis[a[u][j]]=dis[u]+w[u][a[u][j]];
if (!exist[a[u][j]])//如果该点没有被拿出,就进行处理
{
tail++;
tail=((tail-)%)+;
team[tail]=a[u][j];
exist[a[u][j]]=true;//拿出该数
}
}
}
tot=;
for(j=; j<=n; j++)
tot+=dis[b[j]];//累加路程并计算
if (tot<min1) min1=tot;//找最小
}
cout<<min1;
return ;
初始化我是去掉了,因为定义在int main()外面是不需要再次清零的
然后就是类似手打的队列,挨个比较找到小的就马上替换,重要的是没有被用过就处理
再就是挨个比较找最小值就好了
完整代码:
完美の结束
(这是我之前做的题,现在才拿出来写题解忘得差不多了,写的不好请多多谅解QWQ) (看的这么累,不点个赞再走)
洛谷 题解 P1828 【香甜的黄油 Sweet Butter】的更多相关文章
- 洛谷P1828 香甜的黄油 Sweet Butter
P1828 香甜的黄油 Sweet Butter 241通过 724提交 题目提供者JOHNKRAM 标签USACO 难度普及+/提高 提交 讨论 题解 最新讨论 我的SPFA为什么TLE.. 为 ...
- P1828 香甜的黄油 Sweet Butter 最短路 寻找一个点使得所有点到它的距离之和最小
P1828 香甜的黄油 Sweet Butter 闲来无事 写了三种最短路(那个Floyed是不过的) 题目描述 农夫John发现做出全威斯康辛州最甜的黄油的方法:糖.把糖放在一片牧场上,他知道N(1 ...
- P1828 香甜的黄油 Sweet Butter
对于这道洛谷ac而我整了一下午的codevs的题,我也是很绝望啊. 原因是队列数组开小了我勒个去???我说STL怎么能过 题目描述 农夫John发现做出全威斯康辛州最甜的黄油的方法:糖.把糖放在一片牧 ...
- [最短路]P1828 香甜的黄油 Sweet Butter
题目描述 农夫John发现做出全威斯康辛州最甜的黄油的方法:糖.把糖放在一片牧场上,他知道N(1<=N<=500)只奶牛会过来舔它,这样就能做出能卖好价钱的超甜黄油.当然,他将付出额外的费 ...
- [LUOGU] P1828 香甜的黄油 Sweet Butter
题目描述 农夫John发现做出全威斯康辛州最甜的黄油的方法:糖.把糖放在一片牧场上,他知道N(1<=N<=500)只奶牛会过来舔它,这样就能做出能卖好价钱的超甜黄油.当然,他将付出额外的费 ...
- P1828 香甜的黄油 Sweet Butter (spfa)
题目描述 农夫John发现做出全威斯康辛州最甜的黄油的方法:糖.把糖放在一片牧场上,他知道N(1<=N<=500)只奶牛会过来舔它,这样就能做出能卖好价钱的超甜黄油.当然,他将付出额外的费 ...
- 【香甜的黄油 Sweet Butter】
[香甜的黄油 Sweet Butter] 洛谷P1828 https://www.luogu.org/problemnew/show/P1828 JDOJ 1803 https://neooj.com ...
- 洛谷 P1828 【香甜的黄油 Sweet Butter】
这道题应该就是模板题了吧qwq. 统计每一个牧场的放糖的情况,选择最优的即可 有亿点水的绿题. #include <bits/stdc++.h> using namespace std; ...
- P1828 [USACO3.2]香甜的黄油 Sweet Butter
题目描述 农夫$John$发现做出全威斯康辛州最甜的黄油的方法:糖.把糖放在一片牧场上,他知道$N(1\leqslant N\leqslant 500)$只奶牛会过来舔它,这样就能做出能卖好价钱的超甜 ...
随机推荐
- 【leetcode-135,62,63 动态规划】分发糖果 ,不同路径
分发糖果 老师想给孩子们分发糖果,有 N 个孩子站成了一条直线,老师会根据每个孩子的表现,预先给他们评分. 你需要按照以下要求,帮助老师给这些孩子分发糖果: 每个孩子至少分配到 1 个糖果. 相邻的孩 ...
- C#开启和关闭UAC功能
在制作软件安装包的时候,可以使用这个功能,关闭用户电脑UAC. 实现比较简单, 找到注册表 计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Curr ...
- 1005 继续(3n+1)猜想(C#)
一.题目内容: 卡拉兹(Callatz)猜想已经在1001中给出了描述.在这个题目里,情况稍微有些复杂. 当我们验证卡拉兹猜想的时候,为了避免重复计算,可以记录下递推过程中遇到的每一个数.例如对 n= ...
- 把项目通过maven生产源码包和文档包并发布到自己的私服上
<!-- 把项目通过maven生产源码包和文档包并发布到自己的私服上 执行maven命令,mvn clean package,执行完成后 命令:mvn deploy 就可以发布到你自己的私服上了 ...
- 1.java小作业-计算1到100的整合-指定输入多少行输出就打印多少行-打印24小时60分钟每一分钟-重载基础练习-面向java编程初学者
可能有和我一样刚开始学习java的小伙伴们, 可以或多或少了解一点别的语言知识,我就是中途转过来的, 明白一点,关键不在语言本身····· 所以面对初学者来说,基础要学好, 下面列举几个没什么难度的小 ...
- RHEL6搭建网络yum源软件仓库
RHEL的更新包只对注册用户生效,所以需要自己手动改成Centos的更新包 一.查看rhel本身的yum安装包 rpm -qa | grep yum 二.卸载这些软件包 rpm -qa | grep ...
- Vue学习之Babel配置(十六)
一.Babel: (官网:https://www.babeljs.cn/docs/) 1.Babel 是一个 JavaScript 编译器: 2.Babel 是一个工具链,主要用于将 ECMAScr ...
- INTERVAL 用法 mysql
原文:https://blog.csdn.net/sqlquan/article/details/82699237 做个例子描述吧,也许更易于理解. 准备: 1.建表 create table INT ...
- Java 单文件、多文件上传 / 实现上传进度条
博客地址:https://ainyi.com/76 日常,工作 在这里总结一下上传吧(是以前做过的练习,就汇总到个人博客吧) java ssm 框架实现文件上传 实现:单文件上传.多文件上传(单选和多 ...
- filter-mutate过滤插件
之前的nginx日志使用grok匹配,但是后来发现nginx的日志中每个值之间都使用了分隔符"|",这下就可以使用mutate来分隔出每个字段的含义,同时还减少了运算. 描述 mu ...