洛谷P2583 地铁间谍
P2583 地铁间谍
题目描述
特工玛利亚被送到S市执行一个特别危险的任务。她需要利用地铁完成他的任务,S市的地铁只有一条线路运行,所以并不复杂。
玛利亚有一个任务,现在的时间为0,她要从第一个站出发,并在最后一站的间谍碰头。玛利亚知道有一个强大的组织正在追踪她,她知道如果一直呆在一个车站,她会有很大的被抓的风险,躲在运行的列车中是比较安全的。所以,她决定尽可能地呆在运行的列车中,她只能往前或往后坐车。
玛利亚为了能准时且安全的到达最后一个车站与对方碰头,需要知道在在车站最小等待时间总和的计划。你必须写一个程序,得到玛丽亚最短的等待时间。当然,到了终点站之后如果时间还没有到规定的时刻,她可以在车站里等着对方,只不过这个等待的时刻也是要算进去的。
这个城市有n个车站,编号是1-n,火车是这么移动的:从第一个车站开到最后一个车站。或者从最后一站发车然后开会来。火车在每特定两站之间行驶的时间是固定的,我们也可以忽略停车的时间,玛利亚的速度极快,所以他可以迅速上下车即使两辆车同时到站。
输入输出格式
输入格式:
输入文件包含多组数据,每组数据都由7行组成
第1行:一个正整数N(2<=N<=50)表示站的数量
第2行:一个正整数T(0<=T<=200)表示需要的碰头时间
第3行:1-(n-1)个正整数(0<ti<70)表示两站之间列车的通过时间
第4行:一个整数M1(1<=M1<=50)表示离开第一个车站的火车的数量
第5行:M1个正整数:d1,d2……dn,(0<=d<=250且di<di+1)表示每一列火车离开第一站的时间
第6行:一个正整数M2(1<=M2<=50)表示离开第N站的火车的数量
第7行:M2个正整数:e1,e2……eM2,(0<=e<=250且ei<ei+1)表示每一列火车离开第N站的时间
最后一行有一个整数0。
输出格式:
对于每个测试案例,打印一行“Case Number N: ”(N从1开始)和一个整数表示总等待的最短时间或者一个单词“impossible”如果玛丽亚不可能做到。按照样例的输出格式。
输入输出样例
- 4
- 55
- 5 10 15
- 4
- 0 5 10 20
- 4
- 0 5 10 15
- 4
- 18
- 1 2 3
- 5
- 0 3 6 10 12
- 6
- 0 3 5 7 12 15
- 2
- 30
- 20
- 1
- 20
- 7
- 1 3 5 7 11 13 17
- 0
- Case Number 1: 5
- Case Number 2: 0
- Case Number 3: impossible
说明
第一组样例说明,她0分钟时上车,在3号站下车,立刻坐上(0分始发)15分开的车回去,到2号车站,立刻坐上(20分始发)25开的车到终点,50分到,还需要等待5分钟。
- #include<iostream>
- #include<cstdio>
- using namespace std;
- int n,t,ti[],m1,a[][],m2,b[][],Case,cnta[],cntb[],ans;
- int a1[];
- void dfs(int now,int sum,int wait){
- if(sum>t)return;
- if(wait>=ans)return;
- if(now==n){ans=min(ans,wait+(t-sum));}
- if(now<n){//可以向右走
- for(int i=;i<=cnta[now];i++){
- if(a[now][i]<sum)continue;
- int sum_time=a[now][i]-sum+ti[now];
- dfs(now+,sum+sum_time,wait+a[now][i]-sum);
- }
- }
- if(now>){//可以向左走
- for(int i=;i<=cntb[now];i++){
- if(b[now][i]<sum)continue;
- int sum_time=b[now][i]-sum+ti[now-];
- dfs(now-,sum+sum_time,wait+b[now][i]-sum);
- }
- }
- }
- int main(){
- freopen("Cola.txt","r",stdin);
- while(){
- scanf("%d",&n);
- if(n==)return ;
- scanf("%d",&t);
- ans=0x7fffffff;
- Case++;
- printf("Case Number %d: ",Case);
- for(int i=;i<n;i++)scanf("%d",&ti[i]);
- scanf("%d",&m1);
- int mn=0x7fffffff;
- for(int i=;i<=m1;i++){
- int tim;
- scanf("%d",&tim);mn=min(mn,tim);
- a1[i]=tim;
- for(int j=;j<=n&&tim<=t;j++){
- a[j][++cnta[j]]=tim;
- tim+=ti[j];
- }
- }
- scanf("%d",&m2);
- for(int i=;i<=m2;i++){
- int tim;
- scanf("%d",&tim);
- for(int j=n;j>=&&tim<=t;j--){
- b[j][++cntb[j]]=tim;
- tim+=ti[j-];
- }
- }
- for(int i=;i<n;i++)mn+=ti[i];
- if(mn>t){
- printf("impossible\n");
- continue;
- }
- for(int i=;i<=m1;i++){
- dfs(,,a1[i]);
- }
- printf("%d\n",ans);
- }
- }
0分 只能过样例的暴力
- #include<iostream>
- #include<cstdio>
- #include<cstring>
- using namespace std;
- int n,p,t[],m1,t1[],m2,t2[];
- int f[][];//在i时,第j个车站等待的时间
- bool vis[][][];//在 i 时,第 j 个车站是否有车从 k 方向来
- void init(){
- memset(f,,sizeof(f));
- memset(vis,,sizeof(vis));
- memset(t,,sizeof(t));
- memset(t1,,sizeof(t1));
- memset(t2,,sizeof(t2));
- }
- void work(int num){
- int tmp;
- for(int i=;i<=m1;i++){
- tmp=t1[i];
- for(int j=;j<=n&&tmp<=p;j++){
- vis[tmp][j][]=;
- tmp+=t[j];
- }
- }
- for(int i=;i<=m2;i++){
- tmp=t2[i];
- for(int j=n;j>=&&tmp<=p;j--){
- vis[tmp][j][]=;
- tmp+=t[j-];
- }
- }
- f[][]=;
- for(int i=;i<=p;i++){
- for(int j=;j<=n;j++){
- f[i][j]=min(f[i][j],f[i-][j]+);
- if(vis[i][j][]==){
- f[i][j]=min(f[i][j],f[i-t[j-]][j-]);
- }
- if(vis[i][j][]==){
- f[i][j]=min(f[i][j],f[i-t[j]][j+]);
- }
- }
- }
- if(f[p][n]<=p)printf("Case Number %d: %d\n",num,f[p][n]);
- else printf("Case Number %d: impossible\n",num);
- }
- int main(){
- //freopen("Cola.txt","r",stdin);
- int num=;
- scanf("%d",&n);
- while(n!=){
- init();
- scanf("%d",&p);
- for(int i=;i<=n-;i++)scanf("%d",&t[i]);
- scanf("%d",&m1);
- for(int i=;i<=m1;i++)scanf("%d",&t1[i]);
- scanf("%d",&m2);
- for(int i=;i<=m2;i++)scanf("%d",&t2[i]);
- work(num++);
- scanf("%d",&n);
- }
- }
100分 dp
洛谷P2583 地铁间谍的更多相关文章
- uva A Spy in the Metro(洛谷 P2583 地铁间谍)
A Spy in the Metro Secret agent Maria was sent to Algorithms City to carry out an especially dangero ...
- 洛谷2583 地铁间谍 (UVa1025A Spy in the Metro)
洛谷2583 地铁间谍(UVa1025A Spy in the Metro) 本题地址:http://www.luogu.org/problem/show?pid=2583 题目描述 特工玛利亚被送到 ...
- 缩点【洛谷P1262】 间谍网络
[洛谷P1262] 间谍网络 题目描述 由于外国间谍的大量渗入,国家安全正处于高度的危机之中.如果A间谍手中掌握着关于B间谍的犯罪证据,则称A可以揭发B.有些间谍收受贿赂,只要给他们一定数量的美元,他 ...
- 洛谷P1710 地铁涨价
P1710 地铁涨价 51通过 339提交 题目提供者洛谷OnlineJudge 标签O2优化云端评测2 难度提高+/省选- 提交 讨论 题解 最新讨论 求教:为什么只有40分 数组大小一定要开够 ...
- 洛谷 P1262 【间谍网络】
题库 : 洛谷 题号 : 1262 题目 : 间谍网络 link : https://www.luogu.org/problemnew/show/P1262 思路 : 这题可以用缩点的思想来做.先用T ...
- 地铁间谍 洛谷 p2583
题目描述 特工玛利亚被送到S市执行一个特别危险的任务.她需要利用地铁完成他的任务,S市的地铁只有一条线路运行,所以并不复杂. 玛利亚有一个任务,现在的时间为0,她要从第一个站出发,并在最后一站的间谍碰 ...
- 洛谷 P1710 地铁涨价
题目背景 本题开O2优化,请注意常数 题目描述 博艾市除了有海底高铁连接中国大陆.台湾与日本,市区里也有很成熟的轨道交通系统.我们可以认为博艾地铁系统是一个无向连通图.博艾有N个地铁站,同时有M小段地 ...
- 洛谷P1710地铁涨价
题目背景 本题开O2优化,请注意常数 题目描述 博艾市除了有海底高铁连接中国大陆.台湾与日本,市区里也有很成熟的轨道交通系统.我们可以认为博艾地铁系统是一个无向连通图.博艾有N个地铁站,同时有M小段地 ...
- 「洛谷P1262」间谍网络 解题报告
P1262 间谍网络 题目描述 由于外国间谍的大量渗入,国家安全正处于高度的危机之中.如果A间谍手中掌握着关于B间谍的犯罪证据,则称A可以揭发B.有些间谍收受贿赂,只要给他们一定数量的美元,他们就愿意 ...
随机推荐
- JS性能优化——加载和执行
JavaScript 在浏览器中的性能,可以认为是开发者所面临得最严重的可用性问题.这个问题因JavaScript的阻塞特性变得复杂, 也就是说当浏览器在执行JavaScript代码时,不能同时做其他 ...
- API的理解和使用——全局命令
全局命令 命令 功能 set 创建键值对 keys 遍历查看所有键 exists 判断一个键是否存在,1存在,0不存在 dbsize 当前数据库中有多少个键 del 删除一个或多个键 expire 设 ...
- Java for LeetCode 106 Construct Binary Tree from Inorder and Postorder Traversal
Construct Binary Tree from Inorder and Postorder Traversal Total Accepted: 31041 Total Submissions: ...
- Java for LeetCode 086
Given a linked list and a value x, partition it such that all nodes less than x come before nodes gr ...
- git常用开发流程
我们在使用git进行项目管理时,远程仓库的分支情况一般是: master分支作为稳定版分支,用于直接发布产品,dev分支则用于日常开发 备注: 也可以只有一个master分支,这里只介绍第一种情况. ...
- Eclipse for PHP Developers使用笔记
1 修改字体样式:Window-->Preference-->General-->Appearance-->Basic-->text font-->edit
- bzoj5093: [Lydsy1711月赛]图的价值
不难想到考虑每个点的贡献,ans=n*sigema(1~n)i C(n-1,i)*(2^C(n-1,2))*i^k 直接套第二类斯特林拆柿子即可.提示:sigema(1~n)i C(n,i)*C(i, ...
- redis持久化【转】
Redis是一种高级key-value数据库.它跟memcached类似,不过数据可以持久化,而且支持的数据类型很丰富.有字符串,链表,集 合和有序集合.支持在服务器端计算集合的并,交和补集(diff ...
- 分享知识-快乐自己:SpringMvc中的单多文件上传及文件下载
摘要:SpringMvc中的单多文件上传及文件下载:(以下是核心代码(拿过去直接能用)不谢) <!--设置文件上传需要的jar--> <dependency> <grou ...
- Log4Net的使用之winform
当我们将asp程序部署到远程服务器上的时候,如果遇到程序错误,如何能快速的判断我们程序的错误呢.所以-->Log4Net作为记录日志的一大神器,不得不学会熟练使用啊!没有那么多的原理,照猫画虎的 ...