【动态规划】[UVA1025]A Spy in the Metro 城市里的间谍
参考:https://blog.csdn.net/NOIAu/article/details/71517440
https://blog.csdn.net/c20180630/article/details/75245665
https://blog.csdn.net/rechard_chen/article/details/41357173
https://blog.csdn.net/acvay/article/details/43565183
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
const int N=;
const int M=;
const int INF=1e8;
int n,t,l,r,kcase;//n车站数,t时间,l向右车辆数,kcase样例数
int station_time[N];//车站之间的时间
int have_train[M][N][],dp[M][N];
void test()
{
cout<<'n'<<n<<'t'<<t<<endl;
for (int i=;i<n;i++)
{
cout<<station_time[i]<<' ';
}
cout<<endl;
for (int i=;i<=t;i++)
{
for (int j=;j<=n;j++)
{
printf("[%9d]",dp[i][j]);
}
printf("\n");
}
getchar();
}
void init()
{
cin>>t;
memset(station_time,,sizeof(station_time));
for (int i=;i<n-;i++)
{
cin>>station_time[i];
}
cin>>r;
memset(have_train,,sizeof(have_train));
while (r--)
{
int d;
cin>>d;
for (int j=;j<n;j++)
{
if (d<=t)
{
have_train[d][j][]=;
}
d+=station_time[j-];
}
}
cin>>l;
while (l--)
{
int d;
cin>>d;
for (int j=n;j>;j--)
{
if (d<=t)
{
have_train[d][j][]=;
}
d+=station_time[j-];
}
}
}
void dpp()
{
memset(dp,,sizeof(dp));
for (int j=;j<=n;j++)
{
dp[t][j]=INF;
}
dp[t][n]=;
for (int i=t-;i>=;i--)//注意i>=0!
{
for (int j=;j<=n;j++)
{
dp[i][j]=dp[i+][j]+;
if (j<n&&have_train[i][j][]&&i+station_time[j-]<=t)
{
dp[i][j]=min(dp[i][j],dp[i+station_time[j-]][j+]);
}
if (j>&&have_train[i][j][]&&i+station_time[j-]<=t)//注意判断条件不要写错!
{
dp[i][j]=min(dp[i][j],dp[i+station_time[j-]][j-]);
}
} }
// test();
cout<<"Case Number "<<kcase++<<": ";
if (dp[][]>=INF)
{
cout<<"impossible"<<endl;
}
else
{
cout<<dp[][]<<endl;
}
}
int main()
{
kcase=;
// freopen("btext.txt","r",stdin);
while (cin>>n&&n)
{
init();
dpp();
} return ;
}
【动态规划】[UVA1025]A Spy in the Metro 城市里的间谍的更多相关文章
- UVa-1025城市里的间谍 A Spy in the Metro
原题 城市里的间谍 分析 动态规划,dp[i][j]表示你在时刻i,车站j,最少还要等待的时间. 边界条件d[T][n]=0 已经到达,其他d[T][i]=inf不可达. 在一个站点时,有以下三种决策 ...
- 城市里的间谍B901
城市里的间谍 城市里的间谍 难度级别:C: 运行时间限制:1000ms: 运行空间限制:51200KB: 代码长度限制:2000000B 试题描述 某城市的地铁是线性的,有 n(2 <= n ...
- 9-1 A Spy in the Metro uva1025 城市里的间谍 (DP)
非常有价值的dp题目 也是我做的第一题dp 真的效率好高 题意:某城市的地铁是线性的 有n个车站 从左到右编号为1-n 有m1辆列车从第一站开始往右开 还有m2辆列车从第n站开始往左开 在 ...
- 【Uva1025 A Spy in the Metro】动态规划
题目描述 某城市地铁是线性的,有n(2≤n≤50)个车站,从左到右编号1~n.有M1辆列车从第1站开始往右开,还有M2辆列车从第n站开始往左开.列车在相邻站台间所需的运行时间是固定的,因为所有列车的运 ...
- UVA1025 A Spy in the Metro —— DP
题目链接: https://vjudge.net/problem/UVA-1025 题解: 详情请看紫书P267. 与其说是DP题,我觉得更像是模拟题,特别是用记忆化搜索写. 递推: #include ...
- Uva1025 A Spy in the Metro
#include <iostream> #include <cstring> #include <cstdio> using namespace std; ]; ] ...
- 题解:UVa1025 A Spy in the Metro
原题链接 pdf 题目大意 给出一张无向图图,求该图的最小瓶颈生成树. 无向图的瓶颈生成树:无向图\(G\)的一颗瓶颈生成树是这样的一颗生成树:它最大的边权值在\(G\)的所有生成树中是最小的.瓶颈生 ...
- UVA1025 城市里的间谍
#include<iostream> #include<cstdio> #include<memory.h> using namespace std; #defin ...
- UVa 1025 城市里的间谍
https://vjudge.net/problem/UVA-1025 题意:一个间谍要从第一个车站到第n个车站去会见另一个,在是期间有n个车站,有来回的车站,让你在时间T内时到达n,并且等车时间最短 ...
随机推荐
- 在浏览器里使用SAPGUI里的SE80
效果如图:点击Fiori launchpad的SE80对应的tile: 即可在浏览器里打开SE80 具体步骤 (1). 在后台找到Fiori catalog page ID: SAP_FIORI_EX ...
- python入门4 python查看数据类型及类型转换
查看数据类型:type() 类型转换:int(),float(),char(),ord(),str(),bool() #coding:utf-8 #/usr/bin/python "&quo ...
- 【洛谷2290】[HNOI2004] 树的计数(Python+利用prufer序列结论求解)
点此看题面 大致题意: 给定每个点的度数,让你求有多少种符合条件的无根树. \(prufer\)序列 这显然是一道利用\(prufer\)序列求解的裸题. 考虑到由\(prufer\)序列得到的结论: ...
- Android学习笔记_29_样式和主题
一.简单样式定义和使用: android中的样式和CSS样式作用相似,都是用于为界面元素定义显示风格,它是一个包含一个或者多个view控件属性的集合.如:需要定义字体的颜色和大小. 在Android中 ...
- 【题解】UVA1218 Perfect Service
UVA1218:https://www.luogu.org/problemnew/show/UVA1218 刷紫书DP题ing 思路 参考lrj紫书 不喜勿喷 d(u,0):u是服务器,孩子是不是服务 ...
- Oracle数据库对象,同义词、序列、视图、索引
数据库对象简介 Oracle 数据库对象又称模式对象 数据库对象是逻辑结构的集合,最基本的数据库对象是表 其他数据库对象包括: 同义词是现有对象的一个别名. 简化SQL语句 隐藏对象的名称和所有者 提 ...
- JavaScript:直接写入 HTML 输出流
<!DOCTYPE html><html><head><meta http-equiv="Content-Type" content=&q ...
- linux网络相关配制及命令
1.虚拟机配制 查看ip: ip addr 配制网卡(读者可以忽略): 编辑虚拟网络编辑器,修改子网IP 查看ip,输入ip addr 开启网络:ifup eth0 关闭网络:ifdown eth0 ...
- Struts2 第四讲 -- Struts2的基本配置
5.struts2的基本配置 5.1 struts2的访问连接url 在struts1中,通过<action path=“/primer/helloWorldAction.action”> ...
- 【SQL】Oracle的交集、并集、差集
假设有表tableA.tableB,他们都有字段id和name 交集:INTERSECT (适用于两个结果集) select a.id, a.name from tableA a INTERSECT ...