北大poj-1062
| Time Limit: 1000MS | Memory Limit: 10000K | |
| Total Submissions: 43523 | Accepted: 12760 |
Description
为了方便起见,我们把所有的物品从1开始进行编号,酋长的允诺也看作一个物品,并且编号总是1。每个物品都有对应的价格P,主人的地位等级L,以
及一系列的替代品Ti和该替代品所对应的"优惠"Vi。如果两人地位等级差距超过了M,就不能"间接交易"。你必须根据这些数据来计算出探险家最少需要多
少金币才能娶到酋长的女儿。
Input
整数M,N(1 <= N <=
100),依次表示地位等级差距限制和物品的总数。接下来按照编号从小到大依次给出了N个物品的描述。每个物品的描述开头是三个非负整数P、L、X(X
< N),依次表示该物品的价格、主人的地位等级和替代品总数。接下来X行每行包括两个整数T和V,分别表示替代品的编号和"优惠价格"。
Output
Sample Input
1 4
10000 3 2
2 8000
3 5000
1000 2 1
4 200
3000 2 1
4 200
50 2 0
Sample Output
5250 分析:
需要注意几点:
人物等级限制;
存在内环,如果没有用剪枝(一旦当前金额大于存储值,则剪枝)的话,需要判断;
记得设定初始值为酋长的price;
存在只换东西,不需要加钱的情况;
结论:邻接矩阵+递归df。
待解决问题:真的是筋疲力竭了,所有discuss里的测试数据全部通过,奈何.....还是WA啊,为毛....
#include <stdio.h>
#include <string.h> #define MAXNUM 105
#define MAX 65535 int gwLevelgap;
int gwMax;
int gwTotal = MAX;
int gawRouteMap[MAXNUM][MAXNUM];
int gawLevel[MAXNUM];
int gawPrice[MAXNUM];
int gawRecord[MAXNUM]; void GetInput()
{
int i = ;
int j = ;
int wPrice = ;
int wLevel = ;
int wExcNum = ;
int wNo = ;
int wRoutePrice = ;
scanf("%d %d", &gwLevelgap, &gwMax);
for(i=; i<gwMax; i++)
{
scanf("%d %d %d", &wPrice, &wLevel, &wExcNum);
gawLevel[i] = wLevel;
gawPrice[i] = wPrice;
for(j=; j<wExcNum; j++)
{
scanf("%d %d", &wNo, &wRoutePrice);
gawRouteMap[i][wNo-] = wRoutePrice;
}
}
} int CalcPrice(int j, int sum, int maxlevel, int minlevel)
{
int i = ;
int all0flag = ;
if(j > gwMax-)
return ;
if(gawRecord[j] == )
{
return ;
}
gawRecord[j] = ;
if(gawLevel[j] > maxlevel)
maxlevel = gawLevel[j];
if(gawLevel[j] < minlevel)
minlevel = gawLevel[j];
if(maxlevel - minlevel > gwLevelgap)
{
return ;
}
for(i=; i<gwMax; i++)
{
if(gawRouteMap[j][i] != -)
{
if( == CalcPrice(i, sum+gawRouteMap[j][i], maxlevel, minlevel))
if(sum + gawPrice[j] < gwTotal)
gwTotal = sum + gawPrice[j];
if(j == )
{
memset(gawRecord, , MAXNUM*sizeof(int));
gawRecord[j] = ;
}
all0flag = ;
}
}
if(all0flag == )
{
sum += gawPrice[j];
if(sum < gwTotal)
gwTotal = sum;
}
return ;
} int main(void)
{
memset(gawRouteMap, -, MAXNUM*MAXNUM*sizeof(int));
GetInput();
gwTotal = gawPrice[];
CalcPrice(, , gawLevel[], gawLevel[]);
printf("%d\n", gwTotal); return ;
}
测试数据:
1 3
10000 3 1
2 200
1000 2 2
1 100
3 400
50 2 0 650 1 5
10000 3 2
2 5000
3 5000
3000 4 1
4 400
3000 2 1
4 500
1000 3 1
5 100
100 2 0 5700 1 5
10000 3 2
2 5000
3 5000
3000 4 1
4 400
3000 2 1
4 500
1000 3 1
5 100
100 2 0 5700 1 5
10000 3 2
2 5000
3 5000
3000 2 1
4 500
3000 4 1
4 400
1000 3 1
5 100
100 2 0 5700 1 5
10000 3 1
2 1000
1000 2 2
3 400
4 500
1000 1 1
5 50
1000 2 1
5 100
50 2 0 1650 1 9
100 1 8
2 80
3 80
4 80
5 80
6 80
7 80
8 80
9 80
100 1 8
1 80
3 80
4 80
5 80
6 80
7 80
8 80
9 80
100 1 8
1 80
2 80
4 80
5 80
6 80
7 80
8 80
9 80
100 1 8
1 80
2 80
3 80
5 80
6 80
7 80
8 80
9 80
100 1 8
1 80
2 80
3 80
4 80
6 80
7 80
8 80
9 80
100 1 8
1 80
2 80
3 80
4 80
5 80
7 80
8 80
9 80
100 1 8
1 80
2 80
3 80
4 80
5 80
6 80
8 80
9 80
100 1 8
1 80
2 80
3 80
4 80
5 80
6 80
7 80
9 80
100 1 8
1 80
2 80
3 80
4 80
5 80
6 80
7 80
8 80 100
4 5
800 3 2
2 1
3 2
20 1 1
4 1
30 5 1
4 2
100 4 1
5 0
5 7 0 9
北大poj-1062的更多相关文章
- 北大POJ题库使用指南
原文地址:北大POJ题库使用指南 北大ACM题分类主流算法: 1.搜索 //回溯 2.DP(动态规划)//记忆化搜索 3.贪心 4.图论 //最短路径.最小生成树.网络流 5.数论 //组合数学(排列 ...
- POJ 1062 昂贵的聘礼
C - 昂贵的聘礼 Time Limit:1000MS Memory Limit:10000KB 64bit IO Format:%I64d & %I64u Submit St ...
- 最短路(Dijkstra) POJ 1062 昂贵的聘礼
题目传送门 /* 最短路:Dijkstra算法,首先依照等级差距枚举“删除”某些点,即used,然后分别从该点出发生成最短路 更新每个点的最短路的最小值 注意:国王的等级不一定是最高的:) */ #i ...
- POJ 1062 昂贵的聘礼(图论,最短路径)
POJ 1062 昂贵的聘礼(图论,最短路径) Description 年轻的探险家来到了一个印第安部落里.在那里他和酋长的女儿相爱了,于是便向酋长去求亲.酋长要他用10000个金币作为聘礼才答应把女 ...
- 最短路POJ 1062 昂贵的聘礼
C - 昂贵的聘礼 Time Limit:1000MS Memory Limit:10000KB 64bit IO Format:%I64d & %I64u Submit St ...
- POJ 1062 ( dijkstra )
http://poj.org/problem?id=1062 一个中文题,一个多月之前我做过,当时我是用搜索写的,不过苦于卡在无法确定等级关系,所以就错了. 看了别人的博客后,我还是不是很理解所谓的枚 ...
- POJ 1062 昂贵的聘礼 最短路 难度:0
http://poj.org/problem?id=1062 #include <iostream> #include <cstring> #include <queue ...
- poj 1062(有限制的最短路)
题目链接:http://poj.org/problem?id=1062 思路:要求对于最短路上的点,不能出现等级之差大于m,于是我们可以枚举,假设酋长的等级为level,于是这个区间范围[level- ...
- poj 1062 昂贵的聘礼(最短路 dijk+枚举)
终于A 了,这题做着真麻烦 题目:http://poj.org/problem?id=1062 dijk 一般用于正权有向图 此题的关键在于等级限制的处理,最好的办法是采用枚举,即假设酋长等级为5,等 ...
- (最短路 dijkstra)昂贵的聘礼 -- poj -- 1062
链接: http://poj.org/problem?id=1062 昂贵的聘礼 Time Limit: 1000MS Memory Limit: 10000K Total Submissions ...
随机推荐
- NodeJS的安装
1. 进入官网下载对应版本的nodejs(我选择的是32位的window7版本x86) 2. 默认路径可修改 3. install就可以安装在cmd中输入path查看路径(我的是E:\compan ...
- 图论$\cdot$2-SAT问题
2-SAT问题是这样的:有$n$个布尔变量$x_i$,另有$m$个需要满足的条件,每个条件的形式都是“$x_i$为真/假或者$x_j$为真/假”.比如:"$x_1$为真或者$x_3$为假“. ...
- zabbix通过API创建交换机模板,ifAdminStatus;ifOperStatus;ifInUcastPkts;ifAlias
最终效果: 目的: 通过zabbix的Latest data查看主机就可以看到其监控结果. 监控项: # 管理状态 IF-MIB::ifAdminSt ...
- react native get started run 模拟机报错解决
参照 http://reactnative.cn/docs/0.30/getting-started.html#content 1)当执行 react-native run-android 这个环节的 ...
- js根据当前时间获取当前季度,月份,和第几周
function jidu() { var getMonthWeek = function (a, b, c) { var date = new Date(a, parseInt(b) - ...
- Error: listen EADDRINUSE
有可能是已经作用了18001端口 netstat -antp|grep 18001 kill 然后重启程序. events.js:72 throw er; // Unhandled 'error' e ...
- linux笔记:用户和用户组管理-用户配置文件
用户信息文件(/etc/passwd): 影子文件(/etc/shadow) 组信息文件(/etc/group)和组密码文件(/etc/gshadow):
- C学习笔记(八)字符输入输出和输入确认
缓冲区 缓冲区分为两类:完全缓冲(fully buffered)I/O和行缓冲(line-buffered)I/O.完全缓冲在缓冲区满时被清空(内容被发送至目的地).这种类型常出现在文件输入中.缓冲区 ...
- td元素
一.设置td的宽和高,不设置table的宽和高 1. 当td的值为具体数值时 a. td显示的宽按设置的数值变动,但宽度不会大于父元素:若强行将宽设置的大于父元素的宽,会被系统无视,即最大宽度为父元素 ...
- qt5.4.0在windows,32位下的编译, vs2010平台
假设源代码入在D:\3DFrame\qt-everywhere-opensource-src-5.4.0\qt-everywhere-opensource-src-5.4.0 1:首先从官方网站下载源 ...