Codeforces 586D Phillip and Trains(DP)
题目链接 Phillip and Trains
考虑相对位移。
每一轮人向右移动一格,再在竖直方向上移动0~1格,列车再向左移动两格。
这个过程相当于每一轮人向右移动一格,再在竖直方向上移动0~1格,然后人再向右移动两格。
然后就可以进行状态转移了。
f[i][j]表示能否走到i行j列的位置。最后在终点处查找是否存在f[i][ed]为1即可。
#include <bits/stdc++.h> using namespace std; #define rep(i,a,b) for(int i(a); i <= (b); ++i) int f[][];
char st[][];
int T, n, k, ed;
bool flag; int main(){ scanf("%d", &T);
for (; T--;){
scanf("%d%d", &n, &k);
memset(f, , sizeof f);
rep(i, , ) scanf("%s", st[i] + );
rep(i, , ) rep(j, n + , n + ) st[i][j] = '.';
rep(i, , ) st[i][n + ] = '\0';
for (ed = ; ed < n + ; ) ed += ;
rep(i, , ) if (st[i][] == 's') f[i][] = , st[i][] = '.'; for (int j = ; j <= ed; j += ){
rep(i, , ){
if (st[i][j] != '.') continue;
if (st[i][j - ] != '.') continue;
if (st[i][j - ] != '.') continue;
rep(k, i - , i + ){
if (k < || k > ) continue;
if (st[k][j - ] != '.') continue;
if (st[k][j - ] != '.') continue;
f[i][j] |= f[k][j - ];
}
}
} flag = false;
rep(i, , ) rep(j, n, ed)
if (f[i][j]){ flag = true; break;} puts(flag ? "YES" : "NO"); } return ; }
Codeforces 586D Phillip and Trains(DP)的更多相关文章
- Codeforces 586D. Phillip and Trains 搜索
D. Phillip and Trains time limit per test: 1 second memory limit per test :256 megabytes input: stan ...
- CodeForces - 710E Generate a String (dp)
题意:构造一个由a组成的串,如果插入或删除一个a,花费时间x,如果使当前串长度加倍,花费时间y,问要构造一个长度为n的串,最少花费多长时间. 分析:dp[i]---构造长度为i的串需要花费的最短时间. ...
- Educational Codeforces Round 51 D. Bicolorings(dp)
https://codeforces.com/contest/1051/problem/D 题意 一个2*n的矩阵,你可以用黑白格子去填充他,求联通块数目等于k的方案数,答案%998244353. 思 ...
- Codeforces 536D - Tavas in Kansas(dp)
Codeforces 题目传送门 & 洛谷题目传送门 其实这题本该 2019 年 12 月就 AC 的(详情请见 ycx 发此题题解的时间),然鹅鸽到了现在-- 首先以 \(s,t\) 分别为 ...
- CodeForces - 586D Phillip and Trains 搜索。vis 剪枝。
http://codeforces.com/problemset/problem/586/D 题意:有一个3*n(n<100)的隧道.一个人在最左边,要走到最右边,每次他先向右移动一格,再上下移 ...
- Codeforces 295D - Greg and Caves(dp)
题意: 给出一个 \(n \times m\) 的矩阵,需对其进行黑白染色,使得以下条件成立: 存在区间 \([l,r]\)(\(1\leq l\leq r\leq n\)),使得第 \(l,l+1, ...
- Codeforces 467C George and Job(DP)
题目 Source http://codeforces.com/contest/467/problem/C Description The new ITone 6 has been released ...
- 【 Gym - 101138K 】 The World of Trains (DP)
BUPT2017 wintertraining(15) #4E Gym - 101138K 题意 N节车厢的火车,每节车厢容量是1~K,那么有\(K^N\)种火车. 求选择D个连续的且容量相同的车厢的 ...
- Codeforces A ACM (ACronym Maker) (dp)
http://codeforces.com/gym/100650 概要:给出一个缩写,和一些单词,从单词中按顺序选一些字母作为缩写,问方案数. 限制:某些单词要忽略,每个单词至少要选一个字母. dp[ ...
随机推荐
- (WPF&Silverlight)silverlight自定义控件
2个半小时弄懂了自定义控件是怎么回事儿. 在silverlight中创建一个UserControl,把上面sliderbar的外观和功能都封装在里面. 以自定义控件mapslider控件为例: 1.首 ...
- Python之print函数详解
输出的 print 函数总结: 1. 字符串和数值类型可以直接输出 >>> print(1) 1 >>> print("Hello World" ...
- 1 django
1.MVC 大部分开发语言中都有MVC框架 MVC框架的核心思想是:解耦 降低各功能模块之间的耦合性,方便变更,更容易重构代码,最大程度上实现代码的重用 m表示model,主要用于对数据库层的封装 v ...
- data相关应用
文案参考:HTML5中的data-*属性和jQuery中的.data()方法使用 data属性选择器 $("li[data-id='1']")//选择li元素中data-id属性等 ...
- 使用数组的splice方法以及循环嵌套来实现数组去重
javascript代码如下 <script type="text/javascript"> var arr = [1,2,3,4,5,6,5,4,3,7,8,9, ...
- linux下编译运行TIGL Viewer步骤
linux下编译运行TIGL Viewer步骤(仅为了正确编译安装的话直接跳到步骤3) 1. linux发行版选择:由于linux发行版众多,不同版本包含的库版本可能存在差别,因此需要选择正确的版本. ...
- IOS开发---菜鸟学习之路--(九)-利用PullingRefreshTableView实现下拉刷新
本章主要讲解如何利用PullingRefreshTableView实现下拉(上拉)刷新的操作 PullingRefreshTableView 实现上下拉刷新的例子百度有很多,大家可以自己搜索下,先看下 ...
- 我对于js注入的理解
资料:http://blog.csdn.net/gisredevelopment/article/details/41778671 js注入就是在前端利用使用js的地方 在这其中注入你写的js代码 使 ...
- LeetCode with Python -> Dynamic Programming
198. House Robber You are a professional robber planning to rob houses along a street. Each house ha ...
- POJ3648 Wedding 【2-sat】
题目 Up to thirty couples will attend a wedding feast, at which they will be seated on either side of ...