题目链接:传送门

来源:牛客网

题目描述
牛牛所在的W市是一个不太大的城市,城市有n个路口以及m条公路,这些双向连通的公路长度均为1,保证你可以从一个城市直接或者间接移动到所有的城市。牛牛在玩宝可梦Go,众所周知呢,这个游戏需要到城市的各个地方去抓宝可梦,假设现在牛牛知道了接下来将会刷出k只宝可梦,他还知道每只宝可梦的刷新时刻、地点以及该宝可梦的战斗力,如果在宝可梦刷新时,牛牛恰好在那个路口,他就一定能够抓住那只宝可梦。

由于游戏公司不想让有选择恐惧症的玩家为难,所以他们设计不存在任何一个时刻同时刷出两只及以上的宝可梦。

假设不存在任何一个时刻会同时刷出两只宝可梦,牛牛一开始在城市的1号路口,最开始的时刻为0时刻,牛牛可以在每个时刻之前移动到相邻他所在位置的路口,当然他也可以保持原地不动,他现在想知道他能够捕获的宝可梦战斗力之和最大为多少?

输入描述:
第一行输入两个正整数n,m,(1 \leq n \leq 200,0 \leq m \leq 10000)(1≤n≤200,0≤m≤10000)表示城市的路口数目以及公路数目。

接下来m行每行两个正整数u,v(1 \leq u,v \leq n)(1≤u,v≤n)表示一条长度为1链接两个路的公路。

接下来一行输入一个正整数k(1 \leq k \leq 10^5)(1≤k≤10
5
)表示宝可梦的数目。

接下来输入k行,每行三个正整数t_i,p_i,val_i(1 \leq p_i \leq n,1 \leq t_i,val_i \leq 10^9)t
i

,p
i

,val
i

(1≤p
i

≤n,1≤t
i

,val
i

≤10
9
),分别表示宝可梦刷新的时间、地点、以及战斗力,输入数据保证不会出现在同一时刻刷出多只宝可梦。

输出描述:
输出一个整数表示牛牛能捉到的宝可梦战斗力之和最大是多少。

示例1
输入
3 2
1 2
2 3
3
1 1 5
2 3 10
3 2 1
输出
11

示例2
输入
1 0
3
1 1 100
100 1 10000
10000 1 1
输出
10101

思路:floyd+01背包,要到宝可梦所在的地点,只能从最多200个点转移过来,也就是说,如果两个宝可梦的时间差距超过200,能从任意点转移过来,那么对于每一个宝可梦向下枚举200个就可以了。(我做的时候前面没问题,dp的时候出现了问题,,)

代码

#include<iostream>
#include<cstring>
#include<cstdio>
#include<map>
#include<vector>
#include<queue>
#include<algorithm>
using namespace std;
const int N = 205,M=1e5+10,mod=1e9+7;
typedef long long ll;
#define inf 0x3f3f3f3f
int mp[N][N];
int n,m;
struct node
{int t,pos,v;
}a[M],b[M];
ll dp[M];
void Floyd()
{for(int k=1;k<=n;k++){for(int i=1;i<=n;i++)for(int j=1;j<=n;j++)mp[i][j]=min(mp[i][j],mp[i][k]+mp[k][j]);}
}
bool cmp(node x,node y)
{if(x.t==y.t)return x.v>y.v;return x.t<y.t;
}
int main()
{int k;cin>>n>>m;memset(mp,inf,sizeof mp);for(int i=1;i<=n;i++) mp[i][i]=0;for(int i=0;i<m;i++){int a,b;scanf("%d%d",&a,&b);mp[a][b]=mp[b][a]=1;}Floyd();cin>>k;for(int i=1;i<=k;i++){int t,pos,v;scanf("%d%d%d",&t,&pos,&v);a[i]={t,pos,v};}a[0]={0,1,0};ll ans=0,nowmax=0;sort(a+1,a+k+1,cmp);for(int i=1;i<=k;i++){dp[i]=-inf;for(int j=1;j<=200&&i-j>=0;j++){if(a[i].t-a[i-j].t>=mp[a[i].pos][a[i-j].pos])dp[i]=max(dp[i],dp[i-j]+a[i].v);}ans=max(ans,dp[i]);}cout<<ans<<endl;return 0;
}

牛牛的宝可梦Go(dp+floyd)相关推荐

  1. 2020牛客寒假算法基础集训营3——J.牛牛的宝可梦Go【最短路 DP(01背包) 复杂度优化】(附优化分析)

    题目传送门 题目描述 牛牛所在的W市是一个不太大的城市,城市有n个路口以及m条公路,这些双向连通的公路长度均为1,保证你可以从一个城市直接或者间接移动到所有的城市.牛牛在玩宝可梦Go,众所周知呢,这个 ...

  2. 2022.04精灵宝可梦国内在线观看渠道整理

    目前只整理TV版 精灵宝可梦无印(EP) 271话 哔哩哔哩 精灵宝可梦超世代(AG) 188话 哔哩哔哩 精灵宝可梦钻石与珍珠(DP) 185话 哔哩哔哩 精灵宝可梦超级愿望(BW) 144话 哔哩 ...

  3. python10-宝可梦数据分析-平民最强宝可梦系列(从0-1数据分析实战)

    宝可梦数据分析-平民最强宝可梦选择方案 快来和我一起选择属于你最强的宝可梦吧 数据时代的到来刷新了人们探索未知的方式,从基础能源建设到航天航空工程.在关都地区真新镇大木研究所一直孜孜不倦对精灵宝可梦进 ...

  4. 把宝可梦搬到终端后,摸鱼也不会被老板发现了,收集对战玩法一应俱全|开源...

    鱼羊 发自 凹非寺 量子位 | 公众号 QbitAI 在电脑终端里当上宝可梦大师,是一种怎样的体验? 别说,还真有玩家不满足于在老任家捕捉小精灵,动手把宝可梦游戏搬到了终端里. 玩法那也是像模像样. ...

  5. 给终端装上宝可梦主题!小姐姐路过都爱上了!

    大家好,我是TJ 一个励志推荐10000款开源项目与工具的程序员 就算不怎么玩游戏看动漫的小伙伴,多多少少也应该知道宠物小精灵,按现在的叫法,就是精灵宝可梦,知道那只黄色的会放电的看着毛茸茸超可爱的只 ...

  6. pokemon 下载 android,宝可梦pokemon home

    宝可梦pokemon home是一款非常好玩的卡通画风的模拟经营游戏,游戏名为宝可梦pokemon home,这款游戏的背景就是大家相当熟悉的宝可梦,宝可梦pokemon home这款游戏的操作难度不 ...

  7. 宝可梦维护服务器,宝可梦大师卡在登录界面进不去,宝可梦大师为啥玩不了

    游戏介绍:<宝可梦大师>是一款由The Pokemon Company发行的手机游戏. 游戏中玩家将扮演训练家,带领宝可梦和队员们以"世界宝可梦大师赛"的冠军为目标开始 ...

  8. 用python画皮卡丘源代码-实现童年宝可梦,教你用Python画一只属于自己的皮卡丘...

    原标题:实现童年宝可梦,教你用Python画一只属于自己的皮卡丘 大数据文摘出品 作者:李雷.蒋宝尚 还记得小时候疯狂收集和交换神奇宝贝卡片的经历吗? 还记得和小伙伴拿着精灵球,一起召唤小精灵的中二模 ...

  9. python简单代码画皮卡丘-实现童年宝可梦,教你用Python画一只属于自己的皮卡丘...

    原标题:实现童年宝可梦,教你用Python画一只属于自己的皮卡丘 大数据文摘出品 作者:李雷.蒋宝尚 还记得小时候疯狂收集和交换神奇宝贝卡片的经历吗? 还记得和小伙伴拿着精灵球,一起召唤小精灵的中二模 ...

最新文章

  1. 保障高并发:企业必须从传统性能测试转向云压测
  2. 例题6-4 破损的键盘(又名:悲剧文本)(Broken Keyboard(a.k.a. Beiju Text), UVa 11988)
  3. wsdd文件是怎么生成的_Axis WSDD文件参考文档
  4. 开源在线机器学习Online Learning/Incremental Learning库-creme介绍
  5. layui 刷新页面_layuimini简洁、清爽、易用的layui后台框架模板
  6. mysql数据库且字 语句是什么,MySQL(数据库)基本操作
  7. ElasticSearch6.3脚本更新
  8. java.util.ArrayList
  9. 台大李宏毅Machine Learning 2017Fall学习笔记 (11)Convolutional Neural Network
  10. C语言字符型数据scanf,scanf()函数如何输入字符型数据?
  11. 190412每日一句
  12. 浅谈下对volatile的理解
  13. linux网络通讯架构实战篇【02、nginx整体结构、进程模型】
  14. 阳历和农历互相转换的js代码
  15. 日常 --- watch的使用
  16. mysql临时表索引_数据库查询优化——给临时表建索引
  17. [Unity3D]Unity3D 游戏开发之碰撞检测
  18. kindeditor图片上传配置水印
  19. 在linux mint 14(cinnamon)制作U盘系统引导
  20. Virtual Box安装Linux

热门文章

  1. 计算机软考初级网络管理员——计算机科学基础笔记
  2. 优优自走棋2.1.1
  3. 第六章 网络学习相关技巧1(最优路径梯度)
  4. 小说作者推荐:银发死鱼眼合集
  5. 动态规划——爬楼梯问题(爬楼梯+最省力爬楼梯)
  6. 从两句偈语开始写的一首诗《看花》,以及创造思路、过程
  7. 再见华为!一位嵌入式大佬的8年励志总结
  8. 计算机 我们一起学猫叫歌词,猫叫是什么歌 抖音我们一起学猫叫完整版歌词
  9. 《MLB棒球创造营》:走近棒球运动·亚利桑那响尾蛇队
  10. JavaWeb-简析MVC三层架构