Codeforces936C. Lock Puzzle

给个串,只能用操作shift x表示把后面x个字符翻转后放到串的前面。问s串怎么操作能变t串。n<=2000,操作次数<=6100。

打VP时这转来转去的有点晕。。。

可以想一种逐步构造的方法,即从一个小的完成构造的部分通过一顿操作,在不影响这部分的前提下扩展。

好吧我看题解了,直接丢图,是从abc扩展成xabcy的方法,如果反了就把他最后再倒过来。

操作次数是$\frac{5}{2}n$的,复杂度$kn$,$k$指操作次数。

 1 //#include<iostream>
 2 #include<cstring>
 3 #include<cstdlib>
 4 #include<cstdio>
 5 //#include<map>
 6 #include<math.h>
 7 //#include<time.h>
 8 //#include<complex>
 9 #include<algorithm>
10 using namespace std;
11  
12 int n;
13 #define maxn 10011
14 char s[maxn],t[maxn];int cnts[30],cntt[30],ans[maxn],lans=0;
15 
16 char tmp[maxn];
17 void shift(int x)
18 {
19     if (x==0) {lans--; return;}
20     memcpy(tmp,s,sizeof(char)*(n+3));
21     int cnt=0; x=n-x+1;
22     for (int i=n;i>=x;i--) s[++cnt]=tmp[i];
23     for (int i=1;i<x;i++) s[++cnt]=tmp[i];
24 }
25 
26 int findpos(int p,int rr)
27 {
28     for (int i=rr;i;i--)
29         if (s[i]==t[p]) return i;
30     return maxn*2;
31 }
32 
33 int main()
34 {
35     scanf("%d",&n);
36     scanf("%s",s+1); scanf("%s",t+1);
37     for (int i=1;i<=n;i++) cnts[s[i]-'a']++,cntt[t[i]-'a']++;
38     for (int i=0;i<26;i++) if (cnts[i]!=cntt[i]) {puts("-1"); return 0;}
39     
40     int p1=(1+n)>>1,p2=p1;
41     int p=findpos(p1,n); p1--; p2++;
42     if (p!=n) {ans[++lans]=n-p; shift(n-p);}
43     bool rev=0;
44     for (int now=1,p;p1;p1--,p2++,now+=2,rev^=1)
45     {
46         if (rev==0) p=findpos(p1,n-now); else p=findpos(p2,n-now);
47         shift(ans[++lans]=n-p);
48         shift(ans[++lans]=n);
49         shift(ans[++lans]=now);
50         if (rev==0) p=findpos(p2,n); else p=findpos(p1,n);
51         shift(ans[++lans]=n-p+1);
52         shift(ans[++lans]=p-now-2);
53     }
54     if (n&1) {if (rev) shift(ans[++lans]=n);}
55     else
56     {
57         if (rev) shift(ans[++lans]=n-1);
58         else
59         {
60             shift(ans[++lans]=n-1);
61             shift(ans[++lans]=1);
62             shift(ans[++lans]=n);
63         }
64     }
65     
66     printf("%d\n",lans);
67     for (int i=1;i<=lans;i++) printf("%d ",ans[i]);
68     return 0;
69 }
View Code

还有一种好理解的逐个字符构造,也是从后往前。

比如说现在串是AzB,A的前缀已经是t的一个后缀,z是想加在A前面的字符,B是剩下的。然后这样:AzB->B'zA'->AB'z->zAB'。搞定。操作次数3*n。

(好吧这是评论写的)

转载于:https://www.cnblogs.com/Blue233333/p/8477002.html

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

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

相关文章

公共服务领域英文译写规范_公共领域日:对版权和公共领域重要性的思考

公共服务领域英文译写规范The first of the year is Public Domain Day, a day intended to call attention to copyright issues and the public domain. At the Center for the Study of the Public Domain they have an interesting (and sobering) review of works that wo…

接入amazon avs_每日新闻综述:亚马逊将互联网接入推向全球的宏伟计划

接入amazon avsPlus Snap’s big push to stay relevant, Amazon’s Alexa-powered AirPods alternatives, more Android Q news, and a lot more. It’s time to talk about the biggest, coolest, or generally most interesting stories from the last 24 hours. 加上Snap保…

键盘忍者:使用单个热键弹出Vista日历

We’ve covered how to access the Windows Vista Calendar using the keyboard, but what if you wanted to assign a single keystroke to pop up the calendar? Yeah, sure, you can just click it with the mouse, but where’s the geek fun in that? 我们已经介绍了如何…

如何使用必应地图 WPF 控件

如何使用必应地图 WPF 控件如何使用必应地图 WPF 控件作者&#xff1a;WPFDevelopersOrg - 驚鏵原文链接&#xff1a;https://github.com/WPFDevelopersOrg/WPFDevelopers框架使用.NET40&#xff1b;Visual Studio 2019;Bing Maps WPF 控件需要 .NET Framework 4.0和 Windows S…

如何保存推特链接以供以后从台式机和手机阅读

Have you come across a lot of interesting links from Twitter, but you don’t have the time to read all of them? Today we’ll show you how to read these links later from your desktop and phone. 您是否遇到过Twitter上很多有趣的链接&#xff0c;但没有时间阅读所…

【重大更新】DevExpress v17.2新版亮点—Bootstrap篇(二)

用户界面套包DevExpress v17.2日前终于正式发布&#xff0c;本站将以连载的形式为大家介绍各版本新增内容。本文将介绍了Bootstrap Controls v17.2 的CardView、Charts、Editors、GridView、Layout等新功能&#xff0c;快来下载试用新版本&#xff01; GridView Toolbar 在此版…

盘点 .NET 7 新功能

点击上方蓝字关注我们&#xff08;本文阅读时间&#xff1a;20分钟)本文翻译于 Jeremy Likness, Angelos Petropoulos 和 Jon Douglas 的博客.NET 7 为C# 11/F# 7、.NET MAUI、ASP.NET Core/Blazor、Web API、WinForms、WPF 等应用程序带来了更高的性能和新功能。使用 .NET 7&a…

nb-iot链路层加密_Google为低端Android手机和IoT设备创建了更快的加密

nb-iot链路层加密Google谷歌Low-resource Android phones and IoT devices don’t have the processing power to use modern encryption services, which makes them vulnerable to hacking. That’s why Google is introducing Adiantum, a super-fast encryption standard f…

MediatRPC - 基于MediatR和Quic通讯实现的RPC框架,比GRPC更简洁更低耦合,开源发布第一版...

大家好&#xff0c;我是失业在家&#xff0c;正在找工作的博主Jerry。作为一个.Net架构师&#xff0c;就要研究编程艺术&#xff0c;例如SOLID原则和各种设计模式。根据这些原则和实践&#xff0c;实现了一个更简洁更低耦合的RPC&#xff08;Remote Procedure Calls&#xff09…

wii拆机_设置防砖保护以保护和增强Wii

wii拆机We’ve shown you how to hack your Wii for homebrew software, emulators, and DVD playback, now it’s time to safeguard your Wii against bricking and fix some annoyances—like that stupid “Press A” health screen. 我们已经向您展示了如何破解Wii的自制软…

龙芯IPC追平Zen2 稳步推进产业生态

日前&#xff0c;2022年信息技术自主创新高峰论坛在南京成功召开&#xff0c;来自政府、产业、各行业领域的领导、专家学者、企业代表齐聚长江之滨&#xff0c;共话信息产业自主创新发展。铁流谈谈会上几个亮点。龙芯LA664追平AMD zen2相对于一些技术引进CPU在引进海外技术后CP…

摄像头水平视野垂直视野?_如何在“动物穿越:新视野”中的梦中游览某人的岛屿...

摄像头水平视野垂直视野?The promised second summer update for Animal Crossing: New Horizons has been released, and it restores the ability to visit another player’s island in your dreams. Before you can do so, though, you’ll need a Nintendo Online member…

中文版onlyoffice镜像制作

原文同步于&#xff1a;https://www.daxueyiwu.com/post/761 拉取5.4.2.46版本onlyoffice/documentserver镜像 docker pull onlyoffice/documentserver:5.4.2.46 该版本是支持20个连接数破解限制的最后一个版本&#xff0c;也是对中文字体界面显示中文不乱码支持比较好的一个版…

使用访问控制策略访问服务网格内的服务

当在实施服务网格时&#xff0c;不可避免的存在网格外服务访问网格内服务的情况&#xff0c;也就是服务网格的平滑落地。这种中间状态可能会持续较长的时间&#xff0c;也是我们在落地的时候需要解决的问题之一。又或者&#xff0c;有的应用处于某些考虑并不适合使用服务网格&a…

gfi截图_GFI Backup Home Edition是Windows的免费数据备份实用程序

gfi截图In today’s tough economic times the last thing you want is to lose important data because you couldn’t afford a quality backup utility. Today we look at GFI Backup Home Edition, a completely free professional grade backup solution. 在当今艰难的经…

使用BeetleX.MQTT构建服务

已经有很长一段时间没有写代码&#xff0c;为了不让自己的代码技能有所下降所以针对BeetleX扩展了一个MQTT协议来保持自己的代码设计和编写能力。接下来简单介绍一下如何使用BeetleX.MQTT来构建对应的TCP或WebSocket服务。 以下实现是针对MQTT 3.1.1版本&#xff0c;协议的实…

vlc 视频流跳数_如何解决在播放高清晰度视频文件的VLC中跳过和滞后的问题

vlc 视频流跳数VLC is the king of all media… it plays almost anything on any platform, any time, any place. It’s great. Lately, however, I’ve been having issues with VLC skipping whenever I’m playing high-def media streaming over a network. VLC是所有媒体…

onlyoffice中文字体下载

原文同步自作者博客&#xff1a;https://www.daxueyiwu.com/post/778 下划线开头的是页面显示中文的字体&#xff0c;不带下划线的是页面显示英文的字体 calibri.ttf -CalibriTimes New Roman.ttf _FANGSONG.otf -仿宋FANGSONG.otf_FS_GB2312.otf -仿宋_GB2312_HWZS.otf -华文…

onlyoffice 20并发限制处理

原文同步自作者博客&#xff1a;https://www.daxueyiwu.com/post/31 开源版本连续打开20个页面就会弹出该提示。 一.方案一 修改六个app.js文件 find ./ -name app.js 目录下所有app.js文件&#xff0c;对代码行进行修改&#xff0c;只是经过简单的测试&#xff0c;希望发现…

onlyoffice更新中文字体总结

原文同步自作者博客&#xff1a;https://www.daxueyiwu.com/post/760 1. 通过字体修改软件FontCreator修改字体名称 &#xff08;1&#xff09;下载fontcreat.exe &#xff08;2&#xff09;将Windows/fonts 下的字体文件拷贝至 我的文档/fonts (3) 使用fontcreat打开字体…