CodeForces 486C Palindrome Transformation 贪心+抽象问题本质

  题目:戳我

  题意:给定长度为n的字符串,给定初始光标位置p,支持4种操作,left,right移动光标指向,up,down,改变当前光标指向的字符,输出最少的操作使得字符串为回文。

  分析:只关注字符串n/2长度,up,down操作是固定不变的,也就是不能优化了,剩下就是left,down的操作数,细想下中间不用管,只关注从左到中间第一个要改变的位置和最后一个要改变的位置即可,具体看代码。

 

#include <iostream>
#include <cstdio>
#include <cstring> 
#include <algorithm> 
using namespace std;
const int M = 1e5+5;int n, p;
char str[M];
int main()  {while( ~scanf("%d %d", &n, &p ) )  {getchar();gets( str+1 );int sumchg = 0;     //up,down的操作总数int first = 0;      //第一个要改变的位置bool firstjd = true;int last = 0;       //最后一个要改变的位置for( int i=1; i<=n/2; i++ )  {int d = abs( str[i]-str[n+1-i] );if( d ) {if( firstjd )   {first = i;firstjd = false;}last = i;sumchg += min( d, 26-d );   //选择up或者down的最小操作数
            }}if( p > n/2 )       //由于回文左右对称,所以p在中间右边时也可将p当左边对称位置计算p = n+1-p;int ret = 0;if( sumchg == 0 )   {   //不需要改变输出0printf("%d\n", ret);continue;}if( first >= p )    //如果p在第一个要改变的左边,p只能向右走,即执行right操作ret += sumchg + last - p; else if( last <= p )    //如果p在最后一个要改变的右边,p只能向左走,即执行left操作ret += sumchg + p - first;elseret += min( 2*(p-first)+last-p, 2*(last-p)+p-first ) + sumchg;  //p在中间,取求向左向右走的最小值printf("%d\n", ret);}return 0;
}

 

 

 

 

 

转载于:https://www.cnblogs.com/TaoTaoCome/p/4700216.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/296719.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

出差一定要给孩子带特产

1 这就是热恋期管不住自己的情侣▼2 热恋期过了...▼3 这该夸你腰细呢&#xff1f;还是脸大呢&#xff1f;▼4 听起来...不是挺好的吗▼5 由于新冠病毒&#xff0c;美国GCW选手都保持着一定距离改用原力来进行比赛▼6 她们太菜了你跟她们好以后肯定疯狂掉分▼7 出差一定…

comment desc显示表结构_MySQL 查看表结构简单命令

一、简单描述表结构&#xff0c;字段类型desc tabl_name;显示表结构&#xff0c;字段类型&#xff0c;主键&#xff0c;是否为空等属性&#xff0c;但不显示外键。例如&#xff1a;desc table_name二、查询表中列的注释信息select * from information_schema.columnswhere tabl…

Android培训翻译_允许其他应用程序启动你的Activity

This lesson teaches you to Add an Intent Filter 添加一个意图过滤器 Handle the Intent in Your Activity 在你的Activity中处理Intent Return a Result 返回结果 You should also read Sharing Content 共享内容 The previous two lessons focused on one side of the stor…

话里话外:浅谈国企绩效考核问题(二)

企业在进行绩效考核的过程中&#xff0c;很容易忽略一些问题&#xff1a; 一、对绩效考核认识不足&#xff1b;绩效考核是企业管理的重头戏&#xff0c;它可以使企业的活动更加高效&#xff0c;提升员工的积极性。但与此同时&#xff0c;绩效考核也是一把双刃剑&#xff0c;绩效…

计算机用户名密码策略,设置域用户帐户密码策略

从安全和易用考虑&#xff0c;普通域用户的帐户策略必须满足一下要求&#xff1a;u 密码长度至少3位u 最长使用期限60天u 密码必须符合复杂性要求u 密码最短使用0天u 帐户锁定阀值7次u 帐户锁定时间30分钟u 复位帐户锁定计数器30分钟任务:u 使用默认域策略设置域用户帐户策略u …

NGINX轻松管理10万长连接

一 前言当管理大量连接时&#xff0c;特别是只有少量活跃连接&#xff0c;NGINX有比较好的CPU和RAM利用率&#xff0c;如今是多终端保持在线的时代&#xff0c;更能让NGINX发挥这个优点。本文做一个简单测试&#xff0c;NGINX在一个普通PC虚拟机上维护100k的HTTP长连接&#xf…

从 MVC 到使用 ASP.NET Core 6.0 的Minimal API

从 MVC 到使用 ASP.NET Core 6.0 的Minimal APIhttps://benfoster.io/blog/mvc-to-minimal-apis-aspnet-6/2007 年&#xff0c;随着 ASP.NET MVC 引入了其他语言中变得司空见惯的模型-视图-控制器模式[1]&#xff0c;并为其提供原生支持&#xff0c;.NET Web 应用程序开发有了极…

优秀的硕博士们,他们的朋友圈都有什么特点?

全世界只有3.14 % 的人关注了爆炸吧知识很多同学都会有这种感觉&#xff0c;读了硕士博士后&#xff0c;兴趣会突然间发生很大变化&#xff0c;发朋友圈也会不一样了。例如&#xff0c;合格的学术研究者&#xff0c;要快速、全面的获取各种最新文献和学界动态&#xff1b;还要持…

Android学习笔记(1)

Activity就是展示的界面 创建Activity的要点&#xff1a; 1、一个Activity就是一个类&#xff0c;并且要继承Activity 2、需要复写onCreate方法 3、每一个Activity都需要注册在AndroidManifest.xml文件中注册 4、为Activity添加必要控件 Intent作用是传输数据转载于:https://ww…

linux__ftp

构建基于虚拟用户的vsftpd服务器并使数据加密传输一、首先配置你的yum源&#xff0c;确保路径正确。vim /etc/yum.repos.d/server.repo(如果你的已经配置了&#xff0c;可以忽略此项)关闭你的selinux避免出现不必要的错误Setenforce 0二、安装vsftpdyum install vsftpdservice …

未来教育计算机二级Excel解析,Excel操作小技巧,助你学好计算机二级office!

原标题&#xff1a;Excel操作小技巧&#xff0c;助你学好计算机二级office&#xff01;Office考试中最难的是什么&#xff1f;当然是Excel函数啊&#xff01;小编辛苦整理了excel10大懒人技巧&#xff0c;让你考试速提分&#xff01;还不赶紧收藏起来一、填充合并单元格在工作表…

当你女朋友向你索吻的时候。。

1 当你女朋友向你索吻的时候。。2 可把我厉害坏了&#xff0c;叉会腰&#xff01;3 这脸大的&#xff0c;超想捏4 网友制作的饭团&#xff0c;拍个照都怕打扰他的美梦5 有些话我嘴上不说&#xff0c;但希望你心里有数&#xff01;6 这是一道很神奇的计算题。。你点的每个赞&…

C#后台,执行前台js 脚本

ClientScript.RegisterStartupScript(this.GetType(), "mb", "alert(\"提交成功\");window.location.href\"datadict.aspx\";", true); 转载于:https://www.cnblogs.com/xmyy/articles/2145635.html

heartbeat 日志分析

May 05 15:06:43 ckl-bd2 heartbeat:[21548]: info: Link ckl-bd2:eth0 up. #eth0为upMay 05 15:08:44 ckl-bd2 heartbeat:[21548]: WARN: node ckl-bd1: is dead #节点ckl-bd1为deadMay 05 15:08:44 ckl-bd2 heartbeat:[21548]: info: Comm_now_up(): updating status to ac…

python根据地址查看变量名_tensorflow创建变量以及根据名称查找变量

环境&#xff1a;Ubuntu14.04&#xff0c;tensorflow1.4(bazel源码安装)&#xff0c;Anaconda python3.6声明变量主要有两种方法&#xff1a;tf.Variable和 tf.get_variable&#xff0c;二者的最大区别是&#xff1a;(1) tf.Variable是一个类&#xff0c;自带很多属性函数&…

要来吗,不错的WPF技术交流群!(大批干货今日自取)

欢迎加入我的编程技术交流群今日分享&#xff1a;1 《WPF-微软官方文档》2 《WPF客户端应用系统开发实战》全集3 《2021秋招WPF高频面试题-附答案》欢迎加入我的编程技术交流群MVP答疑解惑超多技术干货免费获取优质岗位和技术兼职内推和数百.NET/WPF 开发者一起进阶众多资料今…

用计算机配置打印机IP,网络打印机怎么设置ip(手把手教你设置打印机IP地址)...

如何设置打印机IP地址&#xff0c;是一个长期以来困好多小伙伴的一个问题&#xff0c;那今天我们就以 HP Laserjet Pro 100 MFP M128系列打印机为例&#xff0c;为大家介绍一下打印机IP地址的设置方法~步骤一&#xff1a;打印配置报告查看有效IP地址M128fp&#xff0c;M128fna …

河流为什么是弯曲的?

全世界只有3.14 % 的人关注了爆炸吧知识我们看到的河流&#xff0c;特别是在平原上的河流&#xff0c;总是弯弯曲曲&#xff0c;很少有笔直的河道。这是为什么呢&#xff1f;这得从力学上做一点解释。图1 弯弯曲曲的河流首先我们来关注一个流体力学中的二次流现象。取一口宽底的…

poj--2019 Cornfields 2维RMQ

题目大意&#xff1a; 给定一个 N*N 的数组 求以&#xff08;x1&#xff0c; y1&#xff09; 为左上角 &#xff08;x1 b -1 &#xff0c;y1 b -1)为右下角 这个b*b的范围内最大值减最小值 看到最大值最小值当然想到RMQ啦 View Code //Accepted 27392K 594MS C …

NET问答: 如何检查一个 string 是否为有效的 url 格式?

咨询区 kenchilada&#xff1a;我发现 framework 里有两个验证url有效性的方法&#xff1a;Uri.IsWellFormedUriString 和 Uri.TryCreate &#xff0c;我试了一下这两个方法在验证 文件路径 时都返回 true。请问我有什么有效的方法可以验证某个 string 是否为有效的 HTTP URL 格…