CF936C Lock Puzzle 构造
好久不做构造题脑子都僵化了qwq
无解的条件是\(s\)包含的字符可重集和\(t\)包含的字符可重集不相等,相等的时候下文会给出一种一定可行的构造方案。
考虑增量构造。定义某个字符串\(x\)的反串为\(x'\),设已经构造完成的串为\(S\),\(x\)和\(y\)是即将拼合在\(S\)上的两个字符,\(.\)是其他的无用字符
那么我们通过以下步骤将\(x\)和\(y\)拼合:
\(.....x.....S \rightarrow S'..........x \rightarrow xS'..........\)
\(xS'.....y.... \rightarrow ....yxS'..... \rightarrow .........yxS'\)
这样我们通过\(4\)步把\(y\)和\(x\)拼在\(S\)之前并将\(S\)翻转。我们可以通过这样的步骤不断地增量构造直到构造出\(t\),需要的步数是\(2n+O(1)\)的。
CF936C Lock Puzzle 构造的更多相关文章
- CF 936C Lock Puzzle——构造
题目:http://codeforces.com/contest/936/problem/C 玩了一个小时,只能想出 5*n 的方法. 经过一番观察?考虑这样构造:已经使得 A 串的一个后缀 = B ...
- cf936c Lock Puzzle
ref #include <algorithm> #include <iostream> #include <cstring> #include <cstdi ...
- hduoj 4708 Rotation Lock Puzzle 2013 ACM/ICPC Asia Regional Online —— Warmup
http://acm.hdu.edu.cn/showproblem.php?pid=4708 Rotation Lock Puzzle Time Limit: 2000/1000 MS (Java/O ...
- HDU 4708:Rotation Lock Puzzle
Rotation Lock Puzzle Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Oth ...
- hdu4708 Rotation Lock Puzzle
Rotation Lock Puzzle Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others ...
- Codeforces Round #467 (Div. 2) E -Lock Puzzle
Lock Puzzle 题目大意:给你两个字符串一个s,一个t,长度<=2000,要求你进行小于等于6100次的shift操作,将s变成t, shift(x)表示将字符串的最后x个字符翻转后放到 ...
- HDU 4708 Rotation Lock Puzzle (简单题)
Rotation Lock Puzzle Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Oth ...
- HDUOJ---(4708)Rotation Lock Puzzle
Rotation Lock Puzzle Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Oth ...
- Lock Puzzle CodeForces - 936C (构造)
大意: 给定字符串$s$,$t$, 每次操作可以将$S=AB$变为$S=B^RA$, 要求$3n$次操作内将$s$变为$t$. #include <iostream> #include & ...
随机推荐
- 洛谷 P2004 领地选择 题解
P2004 领地选择 题目描述 作为在虚拟世界里统帅千军万马的领袖,小Z认为天时.地利.人和三者是缺一不可的,所以,谨慎地选择首都的位置对于小T来说是非常重要的. 首都被认为是一个占地C*C的正方形. ...
- javascript根据两点和底角,计算等腰三角形的顶点坐标
参考图: 代码如下: var x1 = 0; var y1 = 100; var x2 = -100; var y2 = 0; var angle = 30; var PI = Math.PI; // ...
- 【洛谷P3369】普通平衡树——Splay学习笔记(一)
二叉搜索树(二叉排序树) 概念:一棵树,若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值: 若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值: 它的左.右子树也分别为二叉搜索树 ...
- Java基础教程--安卓入门教程(七)
关注我,每天都有优质技术文章推送,工作,学习累了的时候放松一下自己. 欢迎大家关注我的微信公众号:「醉翁猫咪」 什么是接口? 接口的基本语法 接口的基本语法(一) 使用interface定义 接口当中 ...
- linux修改固定IP
点击虚拟机菜单栏的编辑,选择虚拟网络编辑器 选择Vmnet8 NAT模式,查看子网ip:192.168.233.0 我们的虚拟机网络模式也需要选择NAT模式 打开虚拟机,输入:ip addr 查看当前 ...
- OpenFOAM——90度T型管
本算例来自<ANSYS Fluid Dynamics Verification Manual>中的VMFL010: Laminar Flow in a 90° Tee-Junction. ...
- clion 查看代码 多次查看后如何一步一步回退到最初查看的代码位置
在settings->keymap里面搜索navigate,然后就有蓝色字体的Back.Forward,这个两个有自己对应的快捷键,但是你有可能不能使用这个功能,因为在不同的操作系统里面,有可能 ...
- 微信小程序开发:背景图片设置
本文链接:https://blog.csdn.net/michael_f2008/article/details/86543134开发微信小程序时,不能直接在wxss文件里引用本地图片,运行时会报错: ...
- 【转】使用AllureReport生成测试报告
Allure简介 Allure是一个report框架,可以基于一些测试框架生成测试报告,比较常用的一般是Junit/Testng框架:Allure 生成的报告样式简洁美观,同时又支持中文:Allure ...
- 027_MacOs上如何将多页word打印到一个页面上
工作中需要把word的多页面内容打印到同一张A4纸,所以就想了办法,首先word导出到pdf. 然后使用MacOs默认的PDF阅读器进行多页打印. 操作如下: 文件-打印布局选择每张纸需要打印的页数左 ...