Educational Codeforces Round 53 (Rated for Div. 2) C. Vasya and Robot
题意:给出一段操作序列 和目的地 问修改(只可以更改 不可以删除或添加)该序列使得最后到达终点时 所进行的修改代价最小是多少
其中代价的定义是 终点序号-起点序号-1
思路:因为代价是终点序号减去起点序号 所以 在终点和起点之前 可以任意变换 则如果 x+y 和序列长度n的奇偶性相同 就一定可以到达
可以使用二分(二分好容易写炸啊!) 把(以1为起点) 【1,i】U[【i+len,n】最后到达的点记为x0,y0 而中间缺的就是可以修改的区间
这里不必要判断奇偶性 因为如果x0,y0是 和为奇的点,n总数为奇数 那目的地是奇点 则剩下的步数是偶点(因为x0,y0为奇点,走了奇数步)
奇数点到奇数点只需要偶数步数 所以奇偶性是一致的,不用判断 奇偶 其他情况同理 故只需要判断步数是否足够到达 也就是
abs(x-x0)+abs(y-y0)<=可修改区间长度 这就是剩余步数可以到达的充要条件
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int maxn=200000+10;
char s[maxn];
int dx[maxn],dy[maxn];
int main(){
int n,x,y;
cin>>n>>s>>x>>y;
if(n<abs(x)+abs(y)||(n&1)!=((abs(x+y))&1)){
cout<<-1;return 0;
}
for(int i=0;i<n;i++){//预处理以计算x0,y0
dx[i+1]=dx[i];
dy[i+1]=dy[i];
if(s[i]=='U'){
dy[i+1]++;
}
if(s[i]=='D'){
dy[i+1]--;
}
if(s[i]=='L'){
dx[i+1]--;
}
if(s[i]=='R'){
dx[i+1]++;
}
}
int ans=INT_MAX;
for(int i=0;i<=n;i++){//枚举开始修改的起点
int start=i+1,end=n+2;
while(start!=end){
int mid=(start+end)/2;
int tempx=dx[i]+(dx[n]-dx[mid-1]),tempy=dy[i]+(dy[n]-dy[mid-1]);//计算到达的x0,y0
if(abs(tempx-x)+abs(tempy-y)<=mid-i-1)
end=mid;
else start=mid+1;
}
if(start!=n+2){
ans=min(ans,start-i-1);
}
}
cout<<ans<<endl; }
Educational Codeforces Round 53 (Rated for Div. 2) C. Vasya and Robot的更多相关文章
- Educational Codeforces Round 53 (Rated for Div. 2) C. Vasya and Robot 【二分 + 尺取】
任意门:http://codeforces.com/contest/1073/problem/C C. Vasya and Robot time limit per test 1 second mem ...
- Educational Codeforces Round 53 (Rated for Div. 2) C. Vasya and Robot(二分或者尺取)
题目哦 题意:给出一个序列,序列有四个字母组成,U:y+1,D:y-1 , L:x-1 , R:x+1; 这是规则 . 给出(x,y) 问可不可以经过最小的变化这个序列可以由(0,0) 变到(x, ...
- Educational Codeforces Round 53 (Rated for Div. 2) C Vasya and Robot 二分
题目:题目链接 思路:对于x方向距离与y方向距离之和大于n的情况是肯定不能到达的,另外,如果n比abs(x) + abs(y)大,那么我们总可以用UD或者LR来抵消多余的大小,所以只要abs(x) + ...
- Educational Codeforces Round 53 (Rated for Div. 2) (前五题题解)
这场比赛没有打,后来补了一下,第五题数位dp好不容易才搞出来(我太菜啊). 比赛传送门:http://codeforces.com/contest/1073 A. Diverse Substring ...
- Educational Codeforces Round 53 (Rated for Div. 2)
http://codeforces.com/contest/1073 A. Diverse Substring #include <bits/stdc++.h> using namespa ...
- Educational Codeforces Round 53 (Rated for Div. 2) E. Segment Sum (数位dp求和)
题目链接:https://codeforces.com/contest/1073/problem/E 题目大意:给定一个区间[l,r],需要求出区间[l,r]内符合数位上的不同数字个数不超过k个的数的 ...
- [codeforces][Educational Codeforces Round 53 (Rated for Div. 2)D. Berland Fair]
http://codeforces.com/problemset/problem/1073/D 题目大意:有n个物品(n<2e5)围成一个圈,你有t(t<1e18)元,每次经过物品i,如果 ...
- Educational Codeforces Round 53 (Rated for Div. 2) E. Segment Sum
https://codeforces.com/contest/1073/problem/E 题意 求出l到r之间的符合要求的数之和,结果取模998244353 要求:组成数的数位所用的数字种类不超过k ...
- Educational Codeforces Round 53 (Rated for Div. 2)G. Yet Another LCP Problem
题意:给串s,每次询问k个数a,l个数b,问a和b作为后缀的lcp的综合 题解:和bzoj3879类似,反向sam日神仙...lcp就是fail树上的lca.把点抠出来建虚树,然后在上面dp即可.(感 ...
随机推荐
- 豆瓣读书爬虫(requests + re)
前面整理了一些爬虫的内容,今天写一个小小的栗子,内容不深,大佬请忽略.内容包括对豆瓣读书网站中的书籍的基本信息进行爬取,并整理,便于我们快速了解每本书的中心. 一.爬取信息 每当爬取某个网页的信息时, ...
- Microsoft Tech Summit 2018 课程简述:利用 Windows 新特性开发出更好的手绘视频应用
概述 Microsoft Tech Summit 2018 微软技术暨生态大会将于10月24日至27日在上海世博中心举行,这也会是国内举办的最后一届 Tech Summit,2019 年开始会以 Mi ...
- 实现可调整宽高的DIV(左右拖动和上下拖动)
前言 本例是在React中实现,不过改一改通过原生js也很好实现,另外兼容性也做到了IE9.(IE8讲道理也是可以的). 首先看一下需要实现的需求: 要拖动图中的白色横条调整绿色和蓝色区域的高度,要拖 ...
- (深度好文)重构CMDB,避免运维之耻
(深度好文)重构CMDB,避免运维之耻 CMDB,几乎是每个运维人都绕不过去的字眼,但又是很多运维人的痛,因为CMDB很少有成功的,因此我也把它称之为运维人的耻辱. 那么到底错在哪儿了?该如何去重构它 ...
- vue项目打包问题
使用vue-cli脚手架构建vue项目 vue init webpack project npm run build 打包时出现 Tip: built files are meant to be se ...
- 小P的字符串
题目描述 小P最近在研究字符编码,给出一串由0.1组成的字符串,从中任意进行截取,如果截取的字符串对应一个英文字母的ASCII值,小P就把这个0.1串叫字母子串,问给定的字符串最多能截取出多少个字母子 ...
- struts2的基本使用
struts2在web中当作前端控制器,接收来自页面的请求,使用过滤器拦截模式对请求进行拦截并交给相应配置的action类处理. 所以在web中使用最重要的是struts2的核心过滤器StrutsPr ...
- Mergeable Stack(链表实现栈)
C - Mergeable Stack ZOJ - 4016 一开始用stl中内置的栈来写,其中第三个操作,我先复制到一个数组,再将其倒给另一个栈 这个方法有两个错误的地方: 1.栈在内存很大需要扩容 ...
- Largest Rectangle in a Histogram HDU - 1506 (单调栈)
A histogram is a polygon composed of a sequence of rectangles aligned at a common base line. The rec ...
- jabRef里引用的相邻同名作者变横线
用jabRef引用同名作者的文章时,出现了第二个文章的作者变成了横线,在搜了相关资料后,发现作如下修改可避免: 1.在.bib文件中加入开关,并修改默认配置: @IEEEtranBSTCTL{IEEE ...