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即可.(感 ...
随机推荐
- 【C#复习总结】析构函数
上篇提到析构函数,就顺便复习一下. 一 C# 析构函数 1.1 析构函数的定义 析构函数用于释放被占用的系统资源. 析构函数的名字由符号“-”加类名组成. 1.2 析构函数注意的问题 使用析构函数时, ...
- Java类的加载及实例的创建
java中class.forName()和classLoader都可用来对类进行加载.class.forName()前者除了将类的.class文件加载到jvm中之外,还会对类进行解释,执行类中的sta ...
- 渗透测试_利用Burp爆破用户名与密码
burp 全称 Burp Suite, 是用于攻击web 应用程序的集成平台.它包含了许多工具,可以抓包可以爆破也可以扫描漏洞. 主要组件如下: Proxy——是一个拦截HTTP/S的代理服务器,作为 ...
- vue2.0之axios使用详解
axios 基于 Promise 的 HTTP 请求客户端,可同时在浏览器和 node.js 中使用 功能特性 在浏览器中发送 XMLHttpRequests 请求 在 node.js 中发送 htt ...
- Python_面向对象基础
概念 类 一类抽象的事物,是描述了一类事物有哪些属性或者行为,但不是具体——模子. 实例 一个依托于类的规范存在的,被赋予了具体属性值的实际存在的物体. 对象 就是实例,实例的另外一个名称,相当于别名 ...
- Linux之磁盘挂载
1.查看磁盘分区情况: fdisk -l 可以看到,红框中的硬盘没有分区. 2.开始分区: fdisk /dev/vdb 3.格式化分区: mkfs.xfs 分区名 4.挂载磁盘 挂载方式1: 手动挂 ...
- No enclosing instance of type is accessible. Must qualify the allocation with an enclosing instance of type LeadRestControllerTest (e.g. x.new A() where x is an instance of ).
java - No enclosing instance is accessible. Must qualify the allocation with an enclosing instance o ...
- 1px实现方案
JS处理 首先,可以通过 window.devicePixelRatio 拿到设备的像素比,然后给 html 标签加上的相应的样式. function retina () { // 高分辨率屏幕处理 ...
- mysql5.7以上安装
下载:https://dev.mysql.com/downloads/mysql/ 1.在解压的mysql下(bin目录统计),创建my.ini 文件,内容日下(路径根据自己的目录修改) [mysql ...
- Angular 自定义指令传参
<!DOCTYPE html><html ng-app="myApp"><head lang="en"> <meta ...