//===============================================//
// poj:1062 昂贵的聘礼
// dijkstra + 枚举 AC
// 最短路径问题
//==============================================//
#include <stdio.h>
#include <string.h>
const int NUM = 105; //题目要求的的节点范围是100
const int MAX_INT = 0x3f3f3f; //用于标识无法连接的点即一个无穷大值
int map[NUM][NUM], value[NUM], lev[NUM]; //图矩阵, 物品价值, 等级数组
int lim[NUM]; //用于每次枚举一个范围的等级标识数组,此题由等级将图划分为若干子图
int M, N; //等级限制,物品个数
int Dijkstra();
int main()
{
int i, j;
int t;
int ans; //最后结果
int re; //通过一次dijikstra计算后得到的一个结果
while (scanf("%d %d", &M, &N) != EOF)
{
memset(map, MAX_INT, sizeof(map));
//所有物品到自己的权值为0
for (i=0; i<=N; i++)
{
map[i][i] = 0;
}
//构图
for (i=1; i<=N; i++)
{
scanf("%d %d %d", &value[i], &lev[i], &t);
for (j=0; j<t; j++)
{
int m, n;
scanf("%d %d", &m, &n);
map[i][m] = n;
}
}
ans = value[1]; //在没有任何交换时,结果为酋长要求的聘金
//枚举等级范围,以酋长为等级中心则枚举 酋长等级-等级限制-->酋长等级+等级限制
//这个范围内的所有区间这样做可以避免在一个等级内出现超出等级限制的情况
//同时将问题分割为多个子问题一次进行dijikstra计算
for (i=0; i<M+1; i++)
{
memset(lim, 0, sizeof(lim));
for (j=1; j<=N; j++)
{
if (lev[j] >= lev[1] - M + i && lev[j] <= lev[1] + i)
{
lim[j] = 1;
}
}
//根据返回值选出最小的值
re = Dijkstra();
if (ans > re)
{
ans = re;
}
}
printf("%d/n", ans);
}
return 0;
}
int Dijkstra()
{
int visited[NUM] = {0};
int dist[NUM];
int i, j, k;
int pos = 1;
int res = MAX_INT;
memset(dist, MAX_INT, sizeof(dist));
for (i=1; i<=N; i++)
{
if (lim[i])
{
dist[i] = map[pos][i];
}
}
for (i=1; i<=N; i++)
{
int min = MAX_INT;
for (j=1; j<=N; j++)
{
if (!visited[j] && lim[j] && min > dist[j])
{
min = dist[j];
pos = j;
}
}
if (min == MAX_INT)
break;
visited[pos] = 1;
for (k=1; k<=N; k++)
{
if (!visited[k] && lim[k] && dist[k] > dist[pos] + map[pos][k])
{
dist[k] = dist[pos] + map[pos][k];
}
}
}
for (i=1; i<=N; i++)
{
dist[i] += value[i];
if (res > dist[i])
{
res = dist[i];
}
}
return res;
}
相关推荐
基于 MATLAB 的综合能源系统建模:全面解析与案例应用
本文详细介绍了基于 MATLAB 的综合能源系统建模相关知识,包括 MATLAB 在综合能源建模中的优势、综合能源系统各组件和网络的建模方法,并通过园区综合能源系统的案例展示了从建模到优化调度求解以及结果分析的全过程。在当今全球能源格局深刻变革的背景下,综合能源系统(Integrated Energy System,IES)作为一种创新的能源供应体系,整合了多种能源形式,如电力、热力、燃气等,以实现能源的高效生产、传输、分配和利用。需要考虑燃气的压力、流量特性以及管道的阻力特性等。
最长不互质序列————代码与详解
最长不互质序列————代码与详解 【题目】 题目描述 现在有一个长度为n的序列,你需要从中选出一些数来,保持这些数在原来序列的相对位置组成一个新的序列,使得相邻的两个元素不互质。输出新序列的最长长度。 两个数不互质,满足它们的最大公约数大于1。 输入 第一行,一个整数n,表示原序列的长度。 第二行,n个数,表示序列中的元素。 输出 输出新序列的最长长度,数据保证答案至少为2。
数据仓库的复用性:设计和构建一个高复用性的数仓
数据仓库的复用性是指在数据仓库的设计和使用过程中,能够实现数据、模型、流程、工具等多个层面的重复利用,减少重复开发,提高开发效率,降低维护成本,并增强灵活性和可扩展性。
POJ 1062 题解
没什么卵用的题解题目地址AC代码题解和题目思路 题目地址 这是地址 AC代码 #include <iostream> #include <cmath> #include <cstring> using namespace std; long long int mini = pow(2,60); void calculate(long long int *l...
JSBSim开发手册:飞机仿真模型开发指南
JSBSim是一款开源的飞行动力学模型仿真引擎,支持多种飞行器的仿真,包括固定翼飞机、直升机、无人机等。JSBSim的设计目标是提供一个灵活、高效、精确的飞行动力学仿真环境。飞行动力学仿真:实现飞行器的动力学仿真,包括空气动力学、发动机、质量和惯性等模型。控制系统仿真:实现飞行器的控制系统仿真,包括自动驾驶仪、飞控系统等。环境仿真:模拟飞行环境,包括大气模型、风力模型等。本文详细介绍了如何使用C++进行JSBSim开发,包括系统设计、模型实现、代码优化和性能调优等方面的内容。
【异常】出现“‘git‘ 不是内部或外部命令,也不是可运行的程序”的错误
出现“‘git’ 不是内部或外部命令,也不是可运行的程序”的错误通常意味着 Git 没有被正确安装在你的系统上,或者其可执行文件的路径没有被添加到系统的环境变量中。
POJ 1062 昂贵的聘礼(最短路)题解
题意:中文题意不解释... 思路:交换物品使得费用最小,很明显的最短路,边的权值就是优惠的价格,可以直接用Dijkstra解决。但是题目中要求最短路路径中任意两个等级不能超过m,我们不能在连最短路的时候直接判断,但是我们可以通过预处理+遍历解决。因为一条路径肯定有一个最小level的人,我们假设他为x,那么我们假设x从1一直枚举到n,然后判断哪些点可以在这条路径中,然后把这些点拿去跑最短路,这样...
Python爬虫实战:爬取Bilibili和YouTube视频、弹幕和评论
随着视频内容平台的爆发式增长,视频网站成为了人们获取信息、娱乐和知识的重要渠道。在这些平台上,视频、弹幕和评论数据可以为我们提供重要的信息,帮助我们了解用户的行为、视频的受欢迎程度以及内容的互动情况。本篇文章将带你实现一个Python爬虫,用来爬取Bilibili和YouTube上的视频、弹幕、评论等数据。我们将详细介绍爬虫的实现过程,使用最新的Python技术,并且会提供完整的代码。Bilibili网站提供了多种方式来获取视频数据,最直接的方式是通过其开放的API接口来获取视频、弹幕和评论等数据。
poj1062解题报告(Dijskstra)
题目大意:中文题,不多解释。。。。 解题思路:dijkstra,结点就是物品的编号,边权就是优惠之后的价格。 但需要注意的是还有个等级限制,我用的大牛的思路,即枚举等级区间,假如这个酋长的等级为5,而交易等级限制为2,则需要枚举的区间为(3,4,5) (4,5,6)(5,6,7)分别再找出整个图中符合区间段的子图,在子图中使用dijkstra #include #include #inclu
Android 15.0 添加自定义服务,并生成jar给第三方app调用
在15.0系统ROM产品定制化开发中,由于需要新增加自定义的功能,所以要增加自定义服务,而app上层通过调用自定义服务,来调用相应的功能,所以系统需要先生成jar,然后生成jar 给上层app调用,接下来就来分析实现的步骤,然后来实现相关的功能 从而来实现所需要的功能
ESP32开发板使用Arduino实现变成蓝牙鼠标教程
通过这个教程,你可以轻松将ESP32开发板变成蓝牙鼠标。如果你在使用过程中遇到任何问题,或者库没有正常工作,不妨下载我上传的修复版本,再试试看。希望你们能根据这个基础做出更多有趣的蓝牙控制项目!
Factors acm why is WA?
今天下午做了一道不算难的题目吧~~但是一直WA,我已经测得崩溃了~希望哪位acm大牛能帮忙看看哪里错了 BHOJ 1034 Factors 题目大概意思就是,首先定义了f(x) = k, 表示比x因数多的有k个数, 现在给定区间[a,b]和k, 需要我们内找到那些符合f(x) = k 的 x, 如果没有输出None 下面是我的代码:#include #incl
TC397 EB MCAL开发从0开始系列 之 [17.1] ETH配置实战 - ping/发送
TC397 MCAL 从0开始之 ETH ping测试
NYOJ-236-心急的C小加【LIS+Dilworth定理】LIS段数(划分数)问题
心急的C小加时间限制:1000 ms | 内存限制:65535 KB 难度:4描述C小加有一些木棒,它们的长度和质量都已经知道,需要一个机器处理这些木棒,机器开启的时候需要耗费一个单位的时间,如果第i+1个木棒的重量和长度都大于等于第i个处理的木棒,那么将不会耗费时间,否则需要消耗一个单位的时间。因为急着去约会,C小加想在最短的时间内把木棒处理完,你能告诉他应该怎样做吗?输入第一行是一个整数
Probability and Statistics - 4th edition
Probability and Statistics - 4th edition
数学建模模型总结
这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!
POJ - 1062 昂贵的聘礼 解题报告
昂贵的聘礼 POJ - 1062 终于有一到中文的题了,好激动。哈哈哈。。。 题目大意: ez要去搞对象,酋长的女儿。那不就是寒冰嘛。。。。 大概就是个Bellford-Ford算法。开始理解的很乱,然后根据测试实例画了个图。
精雕软件(JDpaint) 5.5 绿色版
精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版
POJ 1062题解 Dijkstra
http://poj.org/problem?id=1062 题解: 以b[1].l-m——b[1].l为下界,进行枚举x,每次等级在x——x+m范围之内的才能走通(范围必须卡在m之间)。 求出从1到各个节点的最短路径,那么b[i]+dis[i]就是直接买i物品,通过一些列的换取,得到了1物品。 采用枚举即:假设酋长等级为5,等级限制为2,那么需要枚举等级从3~5,4~6,5~7 从
IEM模型,地表粗糙度模拟
利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟
poj 1458 Common Subsequence (最长公共子序列)
http://poj.org/problem?id=1458 Common Subsequence Description A subsequence of a given sequence is the given sequence with some elements (possible none) left out. Given a sequence X = anot
TopCoder SRM DIV2 Level 3: RelativelyPrimeSubset
题目: http://community.topcoder.com/stat?c=problem_statement&pm=12074&rd=14739 题目大意: 给定n个正整数,从其中选取k个数使得集合中所有数互素。 求k的最大值。 例子: {2,3,7,11,4}, 最大互素集合为{2,3,7,11} 和 {3,7,11,4},所以集合个数为4。 范围: 1 求解:第一反应这是个
POJ 1062 解题报告
这道题实际上是单源最短路径问题,每条边(从一个物品到替换它的物品之间)都有一个权值,即cost。问题是求从第一个物品到其他所有物品的最低开销,这个开销除了路径总cost外还得包含这个物品的价值(因为这个物品是最终替代第一个物品的物品)。 明白了上述这些后,自然而然的想法就是应用最短路径算法,比如Dijkstra,SPFA或是Bellman-Ford。 这个问题的有意思的地方在于它还对可选的物品
poj 1001 浮点数高精度求幂
//===================================// // // poj:1001 浮点数求幂 // 完成时间:2001.09.07 // //==================================// #include #include #include const int MAX_LEN = 150; using namespace std; int StringConvert(const string &str, int &t
HDU 1496 哈希表实现
HDU:1496这题太恶心,被后面的初始化害惨,由于是2000000的数据如果疏忽便会导致超时#include #include int hash[2000001];int main(void){ int a, b, c, d, x, y; while (scanf("%d %d %d %d", &a, &b, &c, &d) != EOF) { if ((a > 0 && b > 0 && c > 0 && d > 0) || (a { printf("0/n"); continue; }
ZOJ 1110 Dick and Jane 胡乱枚举实现。
<br />今天上ZOJ挑了道别人说比较简单的题目做了下:<br />一开始连题目都没看懂,然后参考了下别人的代码(惭愧),然后用暴力枚举收缩了下范围实现了。<br />代码如下:<br />#include "stdio.h"<br /><br /> int main(void)<br /> {<br /> int ans1;<br /> int ans2 ;<br /> int ans3;<br /> int s, p, y, j;<br /> in
基础SPFA算法模板
<br />void SPFA(int s) <br /> {<br /> for(int i=1; i<=n; i++)<br /> {<br /> d[i] = MAX; //对所有到原点的权值初始赋最大值即无限;MAX为常量<br /> }<br /> <br /> d[s] = 0; //原点权值初始为0<br /> //此处N为一个常量<br /> int queue[N
HDU1238 有详细注释
<br />#include <iostream><br /> using namespace std;<br /><br /> void sort(char (*data)[110], int count);<br /><br /> int main()<br /> {<br /> int n;<br /><br /> cin >> n;<br /><br /> while (n--)<br /> {<br /> int count;<br
这是spfa 邻接表实现的版本
//邻接表定义 typedef struct _node { int v; int w; _node *next; }edge; edge map[150]; void SPFA(int s) { for(int i=1; i { d[i] = MAX; //对所有到原点的权值初始赋最大值即无限;MAX为常量 } d[s] = 0; //原点权值初始为0 //此
zoj 1716 又是一道简单题。直接暴力枚举实现!
<br />////////////////////////////////////////////////////////////<br /> // ZOJ:1716<br /> // 本题使用枚举法实现效率可能不高,不过问题比较小时可以采用<br /> // 优点:算法会比较简单 <br /> ///////////////////////////////////////////////////////////<br /> #include "stdio.h"<br /><b
1336



被折叠的 条评论
为什么被折叠?



