NYOJ 203 三国志(Dijkstra+贪心)
三国志
- 描写叙述
-
《三国志》是一款非常经典的经营策略类游戏。我们的小白同学是这款游戏的忠实玩家。如今他把游戏简化一下,地图上仅仅有他一方势力,如今他仅仅有一个城池,而他周边有一些无人占的空城,可是这些空城中有非常多不同数量的同种財宝。
我们的小白同学虎视眈眈的看着这些城池中的財宝。
依照游戏的规则。他仅仅要指派一名武将攻占这座城池,里面的財宝就归他全部了。只是一量攻占这座城池,我们的武将就要留守。不能撤回。由于我们的小白手下有无数的武将,所以他不在乎这些。
从小白的城池派出的武将,每走一公理的距离就要消耗一石的粮食,而他手上的粮食是有限的。如今小白统计出了地图上城池间的道路,这些道路都是双向的。他想请你帮忙计算出他能得到 的最多的財宝数量。我们用城池的编号代表城池,规定小白所在的城池为0号城池。其它的城池从1号開始计数。
- 输入
- 本题包括多组数据:
首先,是一个整数T(1<=T<=20),代表数据的组数
然后,以下是T组測试数据。对于每组数据包括三行:
第一行:三个数字S,N,M
(1<=S<=1000000,1<=N<=100,1<=M<=10000)
S代表他手中的粮食(石),N代表城池个数。M代表道路条数。第二行:包括M个三元组行 Ai,Bi,Ci(1<=A,B<=N,1<=C<=100)。
代表Ai,Bi两城池间的道路长度为Ci(公里)。
第三行:包括N个元素,Vi代表第i个城池中的財宝数量。
(1<=V<=100)
- 输出
- 每组输出各占一行。输出仅一个整数,表示小白能得到的最大財富值。
- 例子输入
-
2
10 1 1
0 1 3
2
5 2 3
0 1 2 0 2 4 1 2 1
2 3 - 例子输出
-
2
5 -
Dijkstra+贪心算法!
-
AC码:
-
#include<stdio.h>
#include<string.h>
#define INF 99999999
int G[105][105],visit[105],num[105];
int dist[105],dp[1000005];
int max(int a,int b)
{
return a>b? a:b;
}
int main()
{
int T,s,n,m,a,b,c,min,i,j,k;
scanf("%d",&T);
while(T--)
{
scanf("%d%d%d",&s,&n,&m);
for(i=0;i<=n;i++)
{
for(j=0;j<=n;j++)
G[i][j]=INF;
}
for(i=0;i<m;i++)
{
scanf("%d%d%d",&a,&b,&c);
if(G[a][b]>c) // WA了非常多次,不知道为什么要加这个推断条件
G[a][b]=G[b][a]=c; // 创建邻接矩阵
}
for(i=1;i<=n;i++)
scanf("%d",&num[i]); // 每一个城市的財富值 // Dijkstra算法求随意两点间的最短路径
memset(visit,0,sizeof(visit));
for(i=0;i<=n;i++)
dist[i]=G[0][i];
dist[0]=0;
visit[0]=1;
for(i=1;i<=n;i++)
{
min=INF;
k=0;
for(j=0;j<=n;j++)
{
if(!visit[j]&&min>dist[j])
{
min=dist[j];
k=j;
}
}
visit[k]=1;
for(j=0;j<=n;j++)
{
if(!visit[j]&&dist[j]>dist[k]+G[k][j])
dist[j]=dist[k]+G[k][j];
}
}// 最短路径求解完成 // 贪心算法求得最大財富值
memset(dp,0,sizeof(dp));
for(i=1;i<=n;i++)
{
for(j=s;j>=dist[i];j--)
{
dp[j]=max(dp[j],dp[j-dist[i]]+num[i]);
}
}
printf("%d\n",dp[s]);
}
return 0;
}
NYOJ 203 三国志(Dijkstra+贪心)的更多相关文章
- nyoj 203 三国志 dijkstra+01背包
题目链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=203 思路:先求点0到每个点的最短距离,dijkstra算法,然后就是01背包了 我奇怪的 ...
- nyoj 203 三国志(最短路加01背包)
三国志 时间限制:3000 ms | 内存限制:65535 KB 难度:5 描述 <三国志>是一款很经典的经营策略类游戏.我们的小白同学是这款游戏的忠实玩家.现在他把游戏简化一下, ...
- NYOJ 203 三国志
三国志 时间限制:3000 ms | 内存限制:65535 KB 难度:5 描述 <三国志>是一款很经典的经营策略类游戏.我们的小白同学是这款游戏的忠实玩家.现在他把游戏简化一下, ...
- Nyoj 三国志(dijkstra+01背包)
描述 <三国志>是一款很经典的经营策略类游戏.我们的小白同学是这款游戏的忠实玩家.现在他把游戏简化一下,地图上只有他一方势力,现在他只有一个城池,而他周边有一些无人占的空城,但是这些空城中 ...
- [nyoj]会场安排问题-贪心
会场安排问题 时间限制:3000 ms | 内存限制:65535 KB 难度:4 描述 学校的小礼堂每天都会有许多活动,有时间这些活动的计划时间会发生冲突,需要选择出一些活动进行举办.小刘的工 ...
- nyoj 16-矩形嵌套(贪心 + 动态规划DP)
16-矩形嵌套 内存限制:64MB 时间限制:3000ms Special Judge: No accepted:13 submit:28 题目描述: 有n个矩形,每个矩形可以用a,b来描述,表示长和 ...
- BZOJ 4152: [AMPPZ2014]The Captain Dijkstra+贪心
Code: #include <queue> #include <cstdio> #include <cstring> #include <algorithm ...
- CCF-交通规划-dijkstra+贪心
交通规划 问题描述 G国国王来中国参观后,被中国的高速铁路深深的震撼,决定为自己的国家也建设一个高速铁路系统. 建设高速铁路投入非常大,为了节约建设成本,G国国王决定不新建铁路,而是将已有的铁路改造成 ...
- nyoj 106背包问题(贪心专题)
背包问题 时间限制:3000 ms | 内存限制:65535 KB 难度:3 描述 现在有很多物品(它们是可以分割的),我们知道它们每个物品的单位重量的价值v和重量w(1<=v,w< ...
随机推荐
- SQL Server单表已700w+将普通表转换成分区表
最近项目中,某个表数据量爆发时增长,单表已700w+,读写性能急剧下降,所以考虑加入分区表以解燃眉之急,后续还是要分表分库,当然这是后话.下面简要说一下将普通表转为分区表的步骤. 一.创建文件组 ...
- 青蛙的约会 poj 1061
青蛙的约会 Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 86640 Accepted: 15232 Descripti ...
- Dictionaries and tuples
Dictionaries have a method called items that returns a list of tuples, where each tuple is a key-val ...
- PostgreSQL Replication之第九章 与pgpool一起工作(1)
在前面的章节中,我们已经能够深入地理解了pgbouncer,同时也学会了如何使用它来尽可能地优化复制设置.在本章我们将了解一个经常被称作与pgbouncer相对应的工具.尽管pgpool的思想与pgb ...
- SPOJ 7258 SUBLEX 后缀数组 + 二分答案 + 前缀和
Code: #include <cstdio> #include <algorithm> #include <cstring> #define setIO(s) f ...
- S-Nim POJ - 2960 Nim + SG函数
Code: #include<cstdio> #include<algorithm> #include<string> #include<cstring> ...
- vue动态绑定img标签的src地址
问题代码: <li v-for="(item,index) in images" :key="index"> <img :src=" ...
- WebService通讯技术的CXF框架问题
WebService通讯技术的CXF框架问题 严重: Servlet /cxf_rs_spring threw load() exception java.lang.ClassCastExceptio ...
- ECNUOJ 2855 贪吃蛇
贪吃蛇 Time Limit:1000MS Memory Limit:65536KBTotal Submit:480 Accepted:109 Description 相信很多人都玩过这个游戏,当然 ...
- 【转】 java RSA加密解密实现
[转] java RSA加密解密实现 该工具类中用到了BASE64,需要借助第三方类库:javabase64-1.3.1.jar 下载地址:http://download.csdn.net/detai ...