昂贵的聘礼
Time Limit: 1000MS   Memory Limit: 10000K
Total Submissions: 43523   Accepted: 12760

Description

年 轻的探险家来到了一个印第安部落里。在那里他和酋长的女儿相爱了,于是便向酋长去求亲。酋长要他用10000个金币作为聘礼才答应把女儿嫁给他。探险家拿 不出这么多金币,便请求酋长降低要求。酋长说:"嗯,如果你能够替我弄到大祭司的皮袄,我可以只要8000金币。如果你能够弄来他的水晶球,那么只要 5000金币就行了。"探险家就跑到大祭司那里,向他要求皮袄或水晶球,大祭司要他用金币来换,或者替他弄来其他的东西,他可以降低价格。探险家于是又跑 到其他地方,其他人也提出了类似的要求,或者直接用金币换,或者找到其他东西就可以降低价格。不过探险家没必要用多样东西去换一样东西,因为不会得到更低 的价格。探险家现在很需要你的帮忙,让他用最少的金币娶到自己的心上人。另外他要告诉你的是,在这个部落里,等级观念十分森严。地位差距超过一定限制的两 个人之间不会进行任何形式的直接接触,包括交易。他是一个外来人,所以可以不受这些限制。但是如果他和某个地位较低的人进行了交易,地位较高的的人不会再 和他交易,他们认为这样等于是间接接触,反过来也一样。因此你需要在考虑所有的情况以后给他提供一个最好的方案。
为了方便起见,我们把所有的物品从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的更多相关文章

  1. 北大POJ题库使用指南

    原文地址:北大POJ题库使用指南 北大ACM题分类主流算法: 1.搜索 //回溯 2.DP(动态规划)//记忆化搜索 3.贪心 4.图论 //最短路径.最小生成树.网络流 5.数论 //组合数学(排列 ...

  2. POJ 1062 昂贵的聘礼

    C - 昂贵的聘礼 Time Limit:1000MS     Memory Limit:10000KB     64bit IO Format:%I64d & %I64u Submit St ...

  3. 最短路(Dijkstra) POJ 1062 昂贵的聘礼

    题目传送门 /* 最短路:Dijkstra算法,首先依照等级差距枚举“删除”某些点,即used,然后分别从该点出发生成最短路 更新每个点的最短路的最小值 注意:国王的等级不一定是最高的:) */ #i ...

  4. POJ 1062 昂贵的聘礼(图论,最短路径)

    POJ 1062 昂贵的聘礼(图论,最短路径) Description 年轻的探险家来到了一个印第安部落里.在那里他和酋长的女儿相爱了,于是便向酋长去求亲.酋长要他用10000个金币作为聘礼才答应把女 ...

  5. 最短路POJ 1062 昂贵的聘礼

    C - 昂贵的聘礼 Time Limit:1000MS     Memory Limit:10000KB     64bit IO Format:%I64d & %I64u Submit St ...

  6. POJ 1062 ( dijkstra )

    http://poj.org/problem?id=1062 一个中文题,一个多月之前我做过,当时我是用搜索写的,不过苦于卡在无法确定等级关系,所以就错了. 看了别人的博客后,我还是不是很理解所谓的枚 ...

  7. POJ 1062 昂贵的聘礼 最短路 难度:0

    http://poj.org/problem?id=1062 #include <iostream> #include <cstring> #include <queue ...

  8. poj 1062(有限制的最短路)

    题目链接:http://poj.org/problem?id=1062 思路:要求对于最短路上的点,不能出现等级之差大于m,于是我们可以枚举,假设酋长的等级为level,于是这个区间范围[level- ...

  9. poj 1062 昂贵的聘礼(最短路 dijk+枚举)

    终于A 了,这题做着真麻烦 题目:http://poj.org/problem?id=1062 dijk 一般用于正权有向图 此题的关键在于等级限制的处理,最好的办法是采用枚举,即假设酋长等级为5,等 ...

  10. (最短路 dijkstra)昂贵的聘礼 -- poj -- 1062

    链接: http://poj.org/problem?id=1062 昂贵的聘礼 Time Limit: 1000MS   Memory Limit: 10000K Total Submissions ...

随机推荐

  1. android界面横屏和竖屏的切换

    关于android横屏和竖屏的切换网上给了很多种.但是有些介绍的方法都是在android旧版本上. 我现在把握用到的情况写下来用于备忘: android 版本:4.0 - 4.4 要求:android ...

  2. easyui 获得父级tabs跳转

    /*                 * 跳转tabls                  */                function JumpPage(type,title,src){   ...

  3. 制作图片边框:《CSS3 Border-image》

    一个边框图片border-image

  4. 【Spring】Junit加载Spring容器作单元测试

    如果我们需要对我们的Service方法作单元测试,恰好又是用Spring作为IOC容器的,我们可以这么配置Junit加载Spring容器,方便做单元测试. > 基本的搭建 (1)引入所需的包 & ...

  5. int与string之间的类型转换--示例

    package demo; public class IntDemo { public static void main(String[] args) { // String-->int 类型转 ...

  6. 剑指offer一:二维数组中的查找

    题目: 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数. 思路: 这是一个顺序二维 ...

  7. jsoup: Java HTML Parser (类似jquery)

    jsoup is a Java library for working with real-world HTML. It provides a very convenient API for extr ...

  8. 纯css3圆角下拉菜单 都没敢用js

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  9. 01 Node.js简介, 安装&配置

    Node.js 简介 Node.js 是什么 Node.js 有着强大而灵活的包管理器(node package manager,npm) 目前, 已经有强大第三方工具模块, 例如数据库连接, 网站开 ...

  10. Pycharm 介绍

    Pycharm官方站点: http://www.jetbrains.com/pycharm/ Pycharm百科: Pycharm百度百科 Pycharm是由jetbrains开发的优秀的python ...