多校联合比赛部分题目
2012-07-27 21:42
239 查看
题目:http://acm.hdu.edu.cn/showproblem.php?pid=4308
题意:王子找公主。在一个图里面,如果是 * 则表示可以走,而且没走一个 * 需要的话费是 c 元,如果是 # 则不能通过,如果是 P 则可以跳到其他任意一个 P 所在的点,王子是 Y 表示,公主是 C 表示,问王子找到公主的最小花费。
思路:bfs,跟普通的bfs一样,但是由于题目里面说 P 与 P 是可以任意到达的(而且不需要任何花费),所以要特殊处理,用一个队保存可行点,从当前点开始搜索,如果遇到 * 则进队继续搜索,如果遇到 P 则要把图里面所有的 P 都搜出来进队,然后继续搜索。因为题目说 r * c <= 5000 ,怕超内存,这里我把二维的数组改成了一维的,下标进行了转换。不过貌似看网上有人也用的二维的
View Code
题意:王子找公主。在一个图里面,如果是 * 则表示可以走,而且没走一个 * 需要的话费是 c 元,如果是 # 则不能通过,如果是 P 则可以跳到其他任意一个 P 所在的点,王子是 Y 表示,公主是 C 表示,问王子找到公主的最小花费。
思路:bfs,跟普通的bfs一样,但是由于题目里面说 P 与 P 是可以任意到达的(而且不需要任何花费),所以要特殊处理,用一个队保存可行点,从当前点开始搜索,如果遇到 * 则进队继续搜索,如果遇到 P 则要把图里面所有的 P 都搜出来进队,然后继续搜索。因为题目说 r * c <= 5000 ,怕超内存,这里我把二维的数组改成了一维的,下标进行了转换。不过貌似看网上有人也用的二维的
View Code
#include <stdio.h> #include <string.h> #include <iostream> #include <algorithm> #include <queue> #include <math.h> #include <stdlib.h> #define N 50010 #define inf 1000000 #define _clr(a,val) (memset(a,val,sizeof(a))) using namespace std; struct node { int from; int to; double wei; int next; }eage[N * 50]; bool v ; int head ; double dis ; int s,e,val; int num,n,m; void add(int f,int t,double w) { eage[num].from = f; eage[num].to = t; eage[num].wei = w; eage[num].next = head[f]; head[f] = num++; } void spfa() { queue<int>qu; for(int i = 1; i <= n; i++) { v[i] = false; dis[i] = inf; } v[s] = true, dis[s] = 0; qu.push(s); while(!qu.empty()) { int tem = qu.front(); qu.pop(); v[tem] = false; for(int i = head[tem]; i != -1; i = eage[i].next) { int tt = eage[i].to; double temp = dis[tem] + eage[i].wei; if(dis[tt] > temp) { dis[tt] = temp; if(!v[tt]) { v[tt] = true; qu.push(tt); } } } } } int main() { int i; int f,t; int k; //freopen("data.txt","r",stdin); while(scanf("%d",&n) != EOF) { num = 0; _clr(head,-1); for(i = 1; i <= n; i++) { scanf("%d",&k); while(k--) { scanf("%d%d",&f,&t); add(i,f, -log((1.0 - (double)(t) / 100.0))); } } scanf("%d%d%d",&s,&e,&val); spfa(); if(dis[e] == inf) printf("IMPOSSIBLE\n"); else printf("%.2lf\n",val * (1.0 - exp(-dis[e]))); } return 0; }
相关文章推荐
- 暑期多校联合比赛 8-24 K次方
- HDU 5867 Water problem(模拟题目)【HDU多校联合8.18】
- 2018年全国多校算法寒假训练营练习比赛(第四场) 比赛题目题解
- 2012 多校联合比赛第二场
- 暑期多校联合比赛F题 8_24 杨辉三角的打印
- 多校联合比赛总结(2012-7-31)
- 2013多校联合1部分题解(更新中)
- 多校联合比赛总结(四)
- 2018年全国多校算法寒假训练营练习比赛(第五场)比赛题目题解
- 2012暑假集训多校联合比赛安排说明(新)欢迎各位提出宝贵意见
- 暑期多校联合第一场 H题 俄罗斯方块 (整理暑期题目系列)
- 2011多校联合五部分解题报告
- HDU 5288 OO’s Sequence(2015多校联合)
- 【job】2013年5-5阿里巴巴暑期实习招聘笔试题目及部分答案
- 中兴笔试题目总结(三)操作系统与网络部分
- USACO历年比赛题目列表,测试数据和解题报告下载
- HDU 5323 Solve this interesting problem(2015多校联合)
- hdu 5338 ZZX and Permutations 2015多校联合训练赛,贪心,线段树,树状数组
- [模拟] 多校联合第四场 HDU5327 Olympad
- 2018年全国多校算法寒假训练营练习比赛(第一场)