【链接】 我是链接,点我呀:)

【题意】

题意

【题解】

我们可以把这个行船的过程分解成两个过程
1.船经过时间t被风吹到了某个地方
2.船用这t时间尝试到达终点(x2,y2)

会发现如果时间t能最终能到达(x2,y2)的话

对于任意的时间t1>t,t1也能到达。

因为对于t后面的时间,比如t+1,那么风最多把船往偏离终点x,y的方向吹了一下,这一下总是能让多出来的时间(1单位时间)补回来的。

那么t-(船被吹了之后的位置与(x2,y2)的曼哈顿距离)肯定会随着t的增大而不下降。所以总是能到达的

所以它总是有一个下界的时间t1的。

我们只要二分这个时间t1就好

按照上面的思路,二分,然后判断船被吹了以后,能否到达(x2,y2),如果不能到就增加时间

【代码】

#include <bits/stdc++.h>
#define rep1(i,a,b) for (int i = a;i <= b;i++)
#define rep2(i,a,b) for (int i = a;i>= b;i--)
#define ll long long
using namespace std; const int N = 1e5; ll x1,y1,x2,y2,n;
ll pre[N+10][2];
string s; ll get_mhd(ll x1,ll y1,ll x2,ll y2){
return abs(x1-x2)+abs(y1-y2);
} bool ok(ll t){
ll xx = t/n*pre[n][0] + pre[(long long)t%n][0];
ll yy = t/n*pre[n][1] + pre[(long long)t%n][1];
ll tx = x1 + xx,ty = y1 + yy;
ll temp = get_mhd(tx,ty,x2,y2);
if (temp<=t) return true;
return false;
} int main(){
ios::sync_with_stdio(0),cin.tie(0);
cin >> x1 >> y1 >> x2 >> y2;
cin >> n;
cin >> s;
rep1(i,0,(int)s.size()-1){
rep1(j,0,1) pre[i+1][j] = pre[i][j];
if (s[i]=='U'){
pre[i+1][1]++;
}
if (s[i]=='D'){
pre[i+1][1]--;
}
if (s[i]=='L'){
pre[i+1][0]--;
}
if (s[i]=='R'){
pre[i+1][0]++;
}
}
ll l = 1,r = 2e14,temp = -1;
while (l<=r){
ll mid = (l+r)>>1;
if (ok(mid)){
temp = mid;
r = mid - 1;
}else l = mid + 1;
}
cout<<temp<<endl;
return 0;
}

最新文章

  1. Java学习笔记(一)
  2. SQL添加维护 计划失败
  3. android---shape.xml属性
  4. Finders Keepers
  5. JAVA实现Excel的读写--poi
  6. 第一次scrum meeting 报告
  7. Markov Random Fields
  8. javascript typeof 和 constructor比较
  9. LearnMVC5-GettingStarted
  10. visual studio 2015 Opencv 3.4.0配置
  11. 自动化运维(1)之二进制部署MySQL5.7
  12. ASP.NET MVC布局
  13. windows单机环境下配置tomcat集群
  14. Linux中环境变量文件
  15. nodejs 模板引擎jade的使用
  16. 如何配置官方peerDroid,使其运行起来
  17. TCP/IP, UDP, ICMP, ARP协议族简介--纯图慎点
  18. 思辨“从外至内的认识和表达”——By Me at 20140928
  19. Unit06: Spring对JDBC的 整合支持 、 Spring+JDBC Template、Spring异常处理
  20. “全栈2019”Java第四十八章:重写方法Override

热门文章

  1. SpringMVC Model,ModelMap ModelAndView
  2. 《Windows核心编程系列》十四谈谈默认堆和自定义堆
  3. javascript 截取url参数
  4. bnu oj 13288 Bi-shoe and Phi-shoe
  5. 第二个Struts2程序 应用动态Action
  6. oracle (DBaaS) 服务介绍
  7. Android 使用Bitmap将自身保存为文件,BitmapFactory从File中解析图片并防止OOM
  8. 在WIndowsPhone8 上制作的简单的计算器
  9. 详解Android Activity启动模式
  10. oracle DBA笔试题