nyoj------203三国志
三国志
- 描述
-
《三国志》是一款很经典的经营策略类游戏。我们的小白同学是这款游戏的忠实玩家。现在他把游戏简化一下,地图上只有他一方势力,现在他只有一个城池,而他周边有一些无人占的空城,但是这些空城中有很多不同数量的同种财宝。我们的小白同学虎视眈眈的看着这些城池中的财宝。
按照游戏的规则,他只要指派一名武将攻占这座城池,里面的财宝就归他所有了。不过一量攻占这座城池,我们的武将就要留守,不能撤回。因为我们的小白手下有无数的武将,所以他不在乎这些。
从小白的城池派出的武将,每走一公理的距离就要消耗一石的粮食,而他手上的粮食是有限的。现在小白统计出了地图上城池间的道路,这些道路都是双向的,他想请你帮忙计算出他能得到 的最多的财宝数量。我们用城池的编号代表城池,规定小白所在的城池为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 - 来源
- 郑州大学校赛题目
- 上传者
- 张云聪
- 简单的 狄斯喹诺算法+0/1背包
- 代码:
-
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cstdlib>
using namespace std;
const int inf=0x3f3f3f3f ;
int cost[][],lowc[],path[];
bool vis[];
int dp[],value[]; //状态压缩以及路径压缩
void Dijkstra( int n , int st )
{
int i,j,minc;
memset(vis,,sizeof(vis));
vis[st]=;
for(i=;i<=n;i++)
{
lowc[i]=cost[st][i];
path[i]=st;
}
lowc[st]=;
path[st]=-; //root
int pre=st;
for(i=;i<=n;i++)
{
minc=inf;
for(j=;j<=n;j++)
{
if(==vis[j]&&lowc[pre]+cost[pre][j]<lowc[j])
{
lowc[j]=lowc[pre]+cost[pre][j];
path[j]=pre;
}
}
for(j=;j<=n;j++)
if(==vis[j]&&lowc[j]<minc)
{
minc=lowc[j];
pre=j;
}
vis[pre]=;
}
} int main()
{
int test,n,m,s,i,j;
int a,b,c;
//freopen("test.in","r",stdin);
scanf("%d",&test);
while(test--)
{
scanf("%d%d%d",&s,&n,&m);
for(i=;i<=n;i++)
{
for(j=;j<=n;j++)
{
cost[i][j]=inf;
}
}
for(i=;i<m;i++){
scanf("%d%d%d",&a,&b,&c);
cost[a][b]=cost[b][a]=c;
}
for(i=;i<=n;i++)
scanf("%d",&value[i]);
Dijkstra(n,);
//得到0到其他城市的最短路,然后进行0/1背包
memset(dp,,sizeof(int)*(s+));
for(i=;i<=n;i++)
{
for(j=s;j>=lowc[i];j--)
{
if(dp[j]<dp[j-lowc[i]]+value[i])
dp[j]=dp[j-lowc[i]]+value[i];
}
}
printf("%d\n",dp[s]);
}
return ;
}
nyoj------203三国志的更多相关文章
- 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 203 三国志(Dijkstra+贪心)
三国志 时间限制:3000 ms | 内存限制:65535 KB 难度:5 描写叙述 <三国志>是一款非常经典的经营策略类游戏.我们的小白同学是这款游戏的忠实玩家.如今他把游戏简化一下 ...
- Nyoj 三国志(dijkstra+01背包)
描述 <三国志>是一款很经典的经营策略类游戏.我们的小白同学是这款游戏的忠实玩家.现在他把游戏简化一下,地图上只有他一方势力,现在他只有一个城池,而他周边有一些无人占的空城,但是这些空城中 ...
- FC游戏 《三国志2-霸王的大陆》攻略
<三国志2-霸王的大陆>是日本南梦宫公司研发的一款历史战略模拟游戏,于1992年06月10日在红白机平台上发行. 在开始游戏选择君主时(一定要在君主未出现前的画面时进行第二步),按住1P的 ...
- NYOJ 1007
在博客NYOJ 998 中已经写过计算欧拉函数的三种方法,这里不再赘述. 本题也是对欧拉函数的应用的考查,不过考查了另外一个数论基本定理:如何用欧拉函数求小于n且与n互质所有的正整数的和. 记eule ...
- NYOJ 998
这道题是欧拉函数的使用,这里简要介绍下欧拉函数. 欧拉函数定义为:对于正整数n,欧拉函数是指不超过n且与n互质的正整数的个数. 欧拉函数的性质:1.设n = p1a1p2a2p3a3p4a4...pk ...
- NYOJ 333
http://www.cppblog.com/RyanWang/archive/2009/07/19/90512.aspx?opt=admin 欧拉函数 E(x)表示比x小的且与x互质的正整数的个数. ...
- Acadia Lab 203 + Lab 231
在做完 Lab 6 之后,惊觉选做实验缺口很大,于是遍历了一遍夏任务,找到了一条最省力的路线. 做完 Lab 6 的连线不用拆,可以接下来做以下两个实验: Lab 203 网络时钟 核心代码如下: v ...
随机推荐
- django 简单的邮件系统
django邮件系统 Django发送邮件官方中文文档 总结如下: 1.首先这份文档看三两遍是不行的,很多东西再看一遍就通顺了. 2.send_mail().send_mass_mail()都是对Em ...
- Spring整合Hibernate图文步骤
首先建立java Project工程 点击Finish完成 添加Hibernate和Spring所需要的jar包还有Mysql连接的jar包 创建Dao层,Dao层实现,Model层,Service层 ...
- 【原创】OPA857 TEST模式使用
opa857 test mode: 配置opa857工作与test模式,设置tsst_sd为高电平连接到+Vs,test_in脚需要输入DC偏置以正确配置test模式.所需要增加的直流偏置大小因供电电 ...
- Hibernate 配置
package com.shuyinghengxie.doudou; import static org.junit.Assert.*; import org.hibernate.SessionFac ...
- CUBRID学习笔记 41 sql语法之select
cubrid的中sql查询语法 SELECT [ ] [{TO | INTO} ][FROM ] [WHERE ][GROUP BY {col_name | expr} [ASC | DESC], . ...
- python_way.day7 模块(configparser,xml,shutil,subprocess)、面向对象(上)(创建类,类的构成,函数式编程与面向对象编程的选择,类的继承)
python_way.day7 1.模块 configparser,xml,shutil,subprocess 1.模块 a.configparser 用于处理特定格式的文件,其本职上使用open ...
- sqlserver前面加N解释
From : http://lzde360.blog.163.com/blog/static/6780720820111026112033917/ 加上 N 代表存入数据库时以 Unicode 格式存 ...
- HDU 1698 Just a Hook(线段树成段更新)
Just a Hook Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Tota ...
- XAF使用数据库访问层缓存的提升性能
很多时候,为了提升性能,我们可以给数据库访问层做缓存. 以下几步可以完成这个任务:1. 使用自定义的 XPObjectSpaceProvider1.1. 创建自定义的 XPObjectSpacePro ...
- 【T-SQL系列】FOR XML PATH 语句的应用
DECLARE @TempTable TABLE ( UserID INT , UserName ) ); INSERT INTO @TempTable ( UserID, UserName ) , ...