C. Magic Ship
time limit per test

2 seconds

memory limit per test

256 megabytes

input

standard input

output

standard output

You a captain of a ship. Initially you are standing in a point (x1,y1)(x1,y1) (obviously, all positions in the sea can be described by cartesian plane) and you want to travel to a point (x2,y2)(x2,y2) .

You know the weather forecast — the string ss of length nn , consisting only of letters U, D, L and R. The letter corresponds to a direction of wind. Moreover, the forecast is periodic, e.g. the first day wind blows to the side s1s1 , the second day — s2s2 , the nn -th day — snsn and (n+1)(n+1) -th day — s1s1 again and so on.

Ship coordinates change the following way:

  • if wind blows the direction U, then the ship moves from (x,y)(x,y) to (x,y+1)(x,y+1) ;
  • if wind blows the direction D, then the ship moves from (x,y)(x,y) to (x,y−1)(x,y−1) ;
  • if wind blows the direction L, then the ship moves from (x,y)(x,y) to (x−1,y)(x−1,y) ;
  • if wind blows the direction R, then the ship moves from (x,y)(x,y) to (x+1,y)(x+1,y) .

The ship can also either go one of the four directions or stay in place each day. If it goes then it's exactly 1 unit of distance. Transpositions of the ship and the wind add up. If the ship stays in place, then only the direction of wind counts. For example, if wind blows the direction U and the ship moves the direction L, then from point (x,y)(x,y) it will move to the point (x−1,y+1)(x−1,y+1) , and if it goes the direction U, then it will move to the point (x,y+2)(x,y+2) .

You task is to determine the minimal number of days required for the ship to reach the point (x2,y2)(x2,y2) .

Input

The first line contains two integers x1,y1x1,y1 (0≤x1,y1≤1090≤x1,y1≤109 ) — the initial coordinates of the ship.

The second line contains two integers x2,y2x2,y2 (0≤x2,y2≤1090≤x2,y2≤109 ) — the coordinates of the destination point.

It is guaranteed that the initial coordinates and destination point coordinates are different.

The third line contains a single integer nn (1≤n≤1051≤n≤105 ) — the length of the string ss .

The fourth line contains the string ss itself, consisting only of letters U, D, L and R.

Output

The only line should contain the minimal number of days required for the ship to reach the point (x2,y2)(x2,y2) .

If it's impossible then print "-1".

Examples
Input

Copy
0 0
4 6
3
UUU
Output

Copy
5
Input

Copy
0 3
0 0
3
UDD
Output

Copy
3
Input

Copy
0 0
0 1
1
L
Output

Copy
-1
Note

In the first example the ship should perform the following sequence of moves: "RRRRU". Then its coordinates will change accordingly: (0,0)(0,0) →→ (1,1)(1,1) →→ (2,2)(2,2) →→ (3,3)(3,3) →→ (4,4)(4,4) →→ (4,6)(4,6) .

In the second example the ship should perform the following sequence of moves: "DD" (the third day it should stay in place). Then its coordinates will change accordingly: (0,3)(0,3) →→ (0,3)(0,3) →→ (0,1)(0,1) →→ (0,0)(0,0) .

In the third example the ship can never reach the point (0,1)(0,1) .

思路:

先对前面n天进行计算用dx,dy数组来记录风让船走的距离。然后进行二分,对这一天设为x进行判断,在第x天船随着风走了一个新的位置,这个位置横纵坐标和终点进行绝对值求和为sum(这个sum可以直接理解为人工操作的步数,也就是天数)

如果sum<=x,说明x太大了,r=x-1;....

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <algorithm>
using namespace std;
typedef long long ll;
const int maxn=1e5+19;
char s[maxn];
ll sx,sy,gx,gy,n;
ll dx[maxn],dy[maxn]; int check(ll x)
{
ll ex=(x/n)*dx[n]+dx[x%n];
ll ey=(x/n)*dy[n]+dy[x%n]; if(abs(sx+ex-gx)+abs(sy+ey-gy)<=x) return 1;//船随着风走了这么久之后,如果接下来的路程步数小于x(即人走),那就说明天数过大。
return 0;
} int main()
{
scanf("%I64d%I64d",&sx,&sy);
scanf("%I64d%I64d",&gx,&gy);
scanf("%d%s",&n,s+1);
for(int i=1;i<=n;i++)
{
dx[i]=dx[i-1];
dy[i]=dy[i-1];
if(s[i]=='U') dy[i]++;
if(s[i]=='D') dy[i]--;
if(s[i]=='L') dx[i]--;
if(s[i]=='R') dx[i]++;
}
ll l=0,r=1e18,ans=-1;
while(r>=l)
{
ll mid=(l+r)/2;
if(check(mid))
{
r=mid-1;
ans=mid;
}
else l=mid+1;
}
printf("%I64d\n",ans);
return 0;
}

  

C. Magic Ship cf 二分的更多相关文章

  1. Educational Codeforces Round 60 (Rated for Div. 2) - C. Magic Ship

    Problem   Educational Codeforces Round 60 (Rated for Div. 2) - C. Magic Ship Time Limit: 2000 mSec P ...

  2. CF1117C Magic Ship

    CF1117C Magic Ship 考虑到答案具单调性(若第 \(i\) 天能到达目的点,第 \(i+1\) 天只需向风向相反的方向航行),可以二分答案. 现在要考虑给出一个天数 \(m\) ,问 ...

  3. 题解-Magic Ship

    Magic Ship 你在 \((x_1,y_1)\),要到点 \((x_2,y_2)\).风向周期为 \(n\),一个字符串 \(s\{n\}\) 表示风向(每轮上下左右),每轮你都会被风向吹走一格 ...

  4. CodeForces 1117C Magic Ship (循环节+二分答案)

    <题目链接> 题目大意: 给定起点和终点,某艘船想从起点走到终点,但是海面上会周期性的刮风,船在任何时候都能够向四个方向走,或者选择不走,船的真正行走路线是船的行走和风的走向叠加的,求船从 ...

  5. C. Magic Ship (思维+二分)

    https://codeforces.com/contest/1117/problem/C 你是一个船长.最初你在点 (x1,y1) (显然,大海上的所有点都可以用平面直角坐标描述),你想去点 (x2 ...

  6. Codeforces 1117C Magic Ship (二分)

    题意: 船在一个坐标,目的地在一个坐标,每天会有一个风向将船刮一个单位,船也可以移动一个单位或不动,问最少几天可以到目的地 思路: 二分天数,对于第k天 可以分解成船先被吹了k天,到达坐标(x1+su ...

  7. codeforces 350 div2 D Magic Powder - 2 二分

    D2. Magic Powder - 2 time limit per test 1 second memory limit per test 256 megabytes input standard ...

  8. Codeforces Round #350 (Div. 2) D1. Magic Powder - 1 二分

    D1. Magic Powder - 1 题目连接: http://www.codeforces.com/contest/670/problem/D1 Description This problem ...

  9. Educational Codeforces Round 60 (Rated for Div. 2) 即Codeforces Round 1117 C题 Magic Ship

    time limit per test 2 second memory limit per test 256 megabytes input standard inputoutput standard ...

随机推荐

  1. SET NOCOUNT { ON | OFF }

    当 SET NOCOUNT 为 ON 时,不返回计数(表示受 Transact-SQL 语句影响的行数) SET NOCOUNT 为 ON 时,也更新 @@ROWCOUNT 函数. 当 SET NOC ...

  2. T-SQL:qualify和window 使用(十七)

    1.qualify 是一个潜在的额外筛选器 主要用于对开窗函数的数据筛选 SELECT orderid, orderdate, val, RANK() OVER(ORDER BY val DESC) ...

  3. [PHP] 算法-字符串的全排列的PHP实现

    输入一个字符串,按字典序打印出该字符串中字符的所有排列.例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba. 思路: 1.利用递归形成 ...

  4. mybatis_14二级缓存

    原理: 同一级缓存原理相似,在sqlsession3不执行增删改的情况下,sqlsession2的查询结果会直接调用sqlsession1的查询结果,具体细节如下: 使用: 开启二级缓存总开关   U ...

  5. No.3 数组中重复的数字 (P39)

    题目1:找出数组中重复的数字 [题目描述] 在一个长度为n的数组里的所有数字都在0到n-1的范围内. 数组中某些数字是重复的,但不知道有几个数字是重复的.也不知道每个数字重复几次.请找出数组中任意一个 ...

  6. GitHub:我们是这样弃用jQuery的

    摘要: 技术债清理流程指南. 原文:Removing jQuery from GitHub.com frontend 译文:GitHub:我们为什么会弃用jQuery? 作者:GitHub 前端工程团 ...

  7. JavaScript中Map和ForEach的区别

    译者按: 惯用Haskell的我更爱map. 原文: JavaScript — Map vs. ForEach - What’s the difference between Map and ForE ...

  8. TPshop各个目录模块介绍

    1.各个模块介绍 --- 史上最全 2. 3.

  9. #WEB安全基础 : HTML/CSS | 0x4HTML模块化

    想让你的网页变得整洁吗?找我就对了,当然你会认识几个新元素,和它们交朋友吧! 我帮你联系一下这几个新元素,这样交朋友就变得简单了 images里放着图片   以下是index.html的代码 < ...

  10. jQuery效果之jQuery Color animation 色彩动画扩展

    jQuery 的动画方法(animate)支持各种属性的过渡,但是默认并不支持色彩的过渡,该插件正是来补足这一点! PS: 该插件支持 RGBA 颜色的过渡,但是请注意,IE8以下的版本不支持 RGB ...