题意:有一个狭窄的山路,两辆车不能同时相向而行,并且同向的车的间隔不能小于10秒,给定一些车的起始时间,求最后一辆车离开的最短时间。

思路:递推,dp(i,j,k)表示A端过了i辆车,B端过了j辆车,下辆车从k端走的情况,对于A端下一个车枚举i+1的车情况更新,B端则枚举第j+1辆车来更新。

code:

#include <iostream>
#include <cstdio>
#include <cmath>
#include <algorithm>
#include <cstring>
#include <sstream>
#include <string>
#include <vector>
#include <list>
#include <queue>
#include <stack>
#include <map>
#include <set>
#include <bitset>using namespace std;typedef long long ll;
typedef unsigned long long ull;
typedef long double ld;const int INF=9999999;//0x3fffffff;
const int inf=-INF;
const int N=1000000;
const int M=2005;
const int mod=1000000007;
const double pi=acos(-1.0);#define cls(x,c) memset(x,c,sizeof(x))
#define cpy(x,a) memcpy(x,a,sizeof(a))
#define ft(i,s,n) for (int i=s;i<=n;i++)
#define frt(i,s,n) for (int i=s;i>=n;i--)
#define lson l,m,rt<<1
#define rson m+1,r,rt<<1|1
#define lrt  rt<<1
#define rrt  rt<<1|1
#define middle int m=(r+l)>>1
#define lowbit(x) (x&-x)
#define pii pair<int,int>
#define mk make_pair
#define IN freopen("in.txt","r",stdin);
#define OUT freopen("out.txt","w",stdout);int len1,len2;
int n,dp[M][M][2];
struct node{int s,t;
}g[2][M];int main()
{int T;scanf("%d",&T);while (T--){scanf("%d",&n);char c;int s,t;len1=len2=0;ft(i,1,n){getchar();//scanf("%c",&c);//printf("%c\n",c);scanf("%c%d%d",&c,&s,&t);if (c=='A'){len1++;g[0][len1].s=s;g[0][len1].t=t;} else{len2++;g[1][len2].s=s;g[1][len2].t=t;}}int ts,td;cls(dp,INF);dp[0][0][0]=dp[0][0][1]=0;ft(i,0,len1){ft(j,0,len2){ts=dp[i][j][1],td=0;ft(k,i+1,len1){ts=max(ts,g[0][k].s);td=max(td,ts+g[0][k].t);dp[k][j][0]=min(dp[k][j][0],td);ts+=10;td+=10;}ts=dp[i][j][0],td=0;ft(k,j+1,len2){ts=max(ts,g[1][k].s);td=max(td,ts+g[1][k].t);dp[i][k][1]=min(dp[i][k][1],td);ts+=10;td+=10;}}}printf("%d\n",min(dp[len1][len2][0],dp[len1][len2][1]));}
}

uva 12222——Mountain Road相关推荐

  1. POJ - 3846 Mountain Road 动归

    POJ - 3846 Mountain Road 题意:n个人要过桥,有的人从左边来,有的人从右边来,给你他们到达桥一端的时间和过桥所需要的时间,要求相向而行的只能有一人,对于每一个点,不能在10s内 ...

  2. 紫书《算法竞赛入门经典》

    紫书<算法竞赛入门经典>题目一览 第3章 数组和字符串(例题) UVA 272 TEX Quotes UVA 10082 WERTYU UVA 401 Palindromes UVA 34 ...

  3. 《题目与解读》红书 训练笔记目录《ACM国际大学生程序设计竞赛题目与解读》

    虽然2012年出版的老书了,但是是由三次世界冠军的上海交大ACM队出版的书籍,选择的题目是ACM经典中的经典,书中有非常详细的题解,可以学到很多东西,值得一刷. 目录 第一部分 第一章 数学 1.1 ...

  4. 《算法竞赛入门经典——训练指南》第一章相关内容

    #<算法竞赛入门经典--训练指南>第一章相关内容 希望各位大牛能指导! 红色为已经做了的...黄色背景是还有不懂地方,希望在年前能刷完第一章啊.... 更新版.google上貌似又加了ex ...

  5. go grpc 深入笔记

    为什么80%的码农都做不了架构师?>>>    grpc 深入 生命周期 grpc 的生命周期由4种请求的方式不同而不同:(详细查看router示例) 普通rpc: 客户端发送请求, ...

  6. python plt pyplot matplotlib绘图时形状异常

    问题 如图,绘制的饼图和条形图叠加了,但是又不彻底. 原因 绘制过程中我前面绘制了很多图,添加了很多参数,共同作用下导致此问题的出现. 解决 使用plt.close()关掉绘图重新绘制即可. prin ...

  7. A Game of Thrones(46)

    28.CATELYN(0) My lady, you ought cover your head," Ser Rodrik told her as their horses plodded ...

  8. LDA的使用记录--TREC,测试

    我觉得做东西最苦恼的是没有思路的瞎忙,做LDA感觉一直限于一种知识点太多,吃不透,苦恼,不想去看的恶性循环中,每当沮丧的时候,内心的程序猿鼓励师就会出现,跟我说,加油,挺住,你可以赢·~今天跟一个做过 ...

  9. 英语单词笔记(沪江-新概念英语第三册篇)

    文章目录 前言 新概念 1-2 3-4 5-6 7-9 10-11 12-13 14-15 16-17 18-19 20-21 22-23 24-25 26-27 28-29 30-31 32-33 ...

最新文章

  1. docker部署nacos单机版
  2. 英国激进新冠试验曝光:招募健康志愿者,故意感染病毒,每人补偿3万5
  3. 好大一盘棋:谷歌光纤再下一城
  4. linux fedora升级操作
  5. Reporting Area and Available Characteristics
  6. finally块不被执行的情况总结
  7. 办公室中有一台计算机连接打印机,办公室就一个打印机,怎么让多个电脑一起用...
  8. [python] 之 函数简介
  9. JavaScript重难点解析4(作用域与作用域链、闭包详解)
  10. php 读写excel 网络错误,谁用过PHPExcel,导出的文件报“无法读取的内容”错误
  11. 优秀的软件测试简历是什么样的?
  12. c语言产生不同随机数,怎样用c语言产生不同的随机数
  13. SQL——数据各项操作代码实现
  14. CSS详解(1.什么是css)
  15. c语言:求一个5×5方阵主对角线元素的和以及副对角线元素的积
  16. 检测电池电量和充电状态
  17. 見到老板的老婆。。。
  18. 转载一份大佬的面试指南,命中率很高
  19. 电源系列1:LDO 基本 原理(一)
  20. 基于区块链的防护物资捐赠监管系统(三):功能设计

热门文章

  1. 【RTOS】基于V7开发板的uCOS-III,uCOS-II,RTX4,RTX5,FreeRTOS原版和带CMSIS-RTOS V2封装层版全部集齐...
  2. oracle在group by时某列有多个值的拼接
  3. Generator执行步骤浅析
  4. mockJs文档(一)
  5. iframe 高度根据子页面来确定
  6. html笔记(四)弹性盒+响应式
  7. 最大连续子序列----DP动态规划
  8. 读书印记 - 《沟通的艺术:一本手把手教你社交沟通的书》
  9. mysql数据库(3)-查询
  10. 微信小程序开发工具最新版本已更新下载(1.02.1804120)