当前位置: 首页 > news >正文

CF936C Lock Puzzle

题目链接:戳我

APIO2019 practice round E题的弱化版

考虑如何构造。

对于一个字符串a:
(未构造好的)+a[pos]+(已构造好的)

1、将已经构造好的按照题目意思翻转,接到前面
(反着的已构造好的)+(未构造好的)+a[pos]
2、将a[pos]按照题目意思翻转(但是因为它就一个数,所以还是不变),接到前面
a[pos]+(反着的已构造好的)+(未构造好的)
3、翻转长度为n,接到前面(因为是所有的了,所以接到前面这一步相当于没有,该操作等效于整体翻转)
(未构造好的)+(已构造好的)+a[pos]

这样子我们就把a[pos]接到已经构造好的后面了。

#include<iostream>
#include<cmath>
#include<cstring>
#include<cstdio>
#include<algorithm>
#include<vector>
#define MAXN 100010
using namespace std;
int n;
char a[MAXN],b[MAXN],tmp[MAXN];
vector<int>ans;
int main()
{
    #ifndef ONLINE_JUDGE
    freopen("ce.in","r",stdin);
    #endif
    scanf("%d",&n);
    scanf("%s%s",a+1,b+1);
    int len=0,pos,cnt=0;
    while(cnt<n)
    {
        bool flag=false;
        for(int i=n-len;i>=1;i--)
        {
            if(a[i]==b[cnt+1]) 
            {
                cnt++,pos=i;
                flag=true;
                break;
            }
        }
         if(flag==false) 
        {
            printf("-1\n");
            return 0;
        }
        len++;
        ans.push_back(n-pos),ans.push_back(1),ans.push_back(n);
        int kkk=1;
        for(int i=n;i>=pos+1;i--) tmp[++kkk]=a[i];
        tmp[1]=a[pos];
        for(int i=1;i<pos;i++) tmp[++kkk]=a[i];
        reverse(&tmp[1],&tmp[n+1]);
        memcpy(a,tmp,sizeof(tmp));
    }
    printf("%d\n",n*3);
    for(int i=0;i<ans.size();i++) cout<<ans[i]<<" ";
    return 0;
}

转载于:https://www.cnblogs.com/fengxunling/p/10884500.html

相关文章:

  • 交叉编译openssl1.1.1a
  • Unity项目 - 打砖块游戏
  • 递归的作用?
  • pwrite,pread
  • 手把手教你grid布局
  • 以太网原理回顾
  • dubbo 教程
  • 普通数字加字母验证码破解
  • 取出类似这种格式的时间 06-01 只取月份和日
  • Java 线程高级
  • 快速生成树协议RSTP
  • Linux centos 安装 Node.js
  • Linux系统配置文件
  • 剑指offer——03从尾至头打印列表(Python3)
  • 用python做的windows和linx文件夹同步。解决自动同步、加快传输大量小文件的速度、更丰富的文件上传过滤设置。...
  • 「前端」从UglifyJSPlugin强制开启css压缩探究webpack插件运行机制
  • 【108天】Java——《Head First Java》笔记(第1-4章)
  • 【译】理解JavaScript:new 关键字
  • 2017 年终总结 —— 在路上
  • AzureCon上微软宣布了哪些容器相关的重磅消息
  • Cumulo 的 ClojureScript 模块已经成型
  • ES6之路之模块详解
  • miaov-React 最佳入门
  • Netty 4.1 源代码学习:线程模型
  • Python学习之路13-记分
  • Vue小说阅读器(仿追书神器)
  • vue总结
  • 电商搜索引擎的架构设计和性能优化
  • 订阅Forge Viewer所有的事件
  • 工作中总结前端开发流程--vue项目
  • 机器人定位导航技术 激光SLAM与视觉SLAM谁更胜一筹?
  • 聊聊springcloud的EurekaClientAutoConfiguration
  • 如何设计一个微型分布式架构?
  • 写给高年级小学生看的《Bash 指南》
  • 好程序员web前端教程分享CSS不同元素margin的计算 ...
  • 容器镜像
  • ​LeetCode解法汇总2670. 找出不同元素数目差数组
  • ###STL(标准模板库)
  • #Z2294. 打印树的直径
  • #经典论文 异质山坡的物理模型 2 有效导水率
  • #微信小程序:微信小程序常见的配置传旨
  • (1)(1.13) SiK无线电高级配置(五)
  • (13)Latex:基于ΤΕΧ的自动排版系统——写论文必备
  • (C#)一个最简单的链表类
  • (二)Linux——Linux常用指令
  • (附源码)计算机毕业设计SSM智慧停车系统
  • (免费分享)基于springboot,vue疗养中心管理系统
  • (三)docker:Dockerfile构建容器运行jar包
  • (一)基于IDEA的JAVA基础10
  • (转)Linux下编译安装log4cxx
  • (转)shell中括号的特殊用法 linux if多条件判断
  • ./configure,make,make install的作用(转)
  • .halo勒索病毒解密方法|勒索病毒解决|勒索病毒恢复|数据库修复
  • .NET 6 在已知拓扑路径的情况下使用 Dijkstra,A*算法搜索最短路径
  • .net 微服务 服务保护 自动重试 Polly