URAL 1549 Another Japanese Puzzle(构造)
题目大意
构造一条闭合路线,使得路线不能相交,并且走直线的步数小于等于 S,转弯(左转和右转)的步数小于等于 T。(0≤S,T≤1000)
求一条最长的路线
做法分析
注意到,因为要求路线闭合,那么转弯的数量 T 必须大于等于 4,否则无解。
适当 YY 下:只能用偶数个 S 和偶数个 T,不然不可能构成闭合路径。怎么证明,不会...
情况1:S<2
这种情况下,我们不能使用直走的命令,只能通过不断的转弯来实现题目要求的路径,在纸上画了画,大致图形如下:
T=4 时: T=8:没有 T=12:
T=16: ?
仔细观察 T=4 时候的图形和 T=12 时的图形,看能不能把 T=4 的时候的图形添加进 T=12 时的图形中,构成 T=16 时的图形?
仔细想想之后...
下面是我的构造方法:,当然,还有其他的方法,不过都大同小异
知道了怎么由 T=12 构造 T=16 的情况,不难得到由 T=16 构造 T=20 的方法,以及之后的构造方法
不难得到 T≥12 时,构造的通项公式:RLLRLL(RL)xRLLRLL(RL)x 其中, x=(T-12)/4
当 T<12 时,只有一种情况:LLLL
至此,情况1已经解决
情况2:S≥2
这种情况下,我们需要使用 S 来走直线,具体是怎么做呢?
首先需要 4 个 LLLL 使路径有成为闭合路径的可能。还剩下 [(T-4)/2]*2 的弯要转,为了让转弯之后扔然保持原来的运动方向,我把 LR 捆在一起,即左转和右转配合。首先令:x=(T-4)/2,表示有几对 LR,然后再分类讨论:
1、x 是偶数
不难想到,我可以先直着走,再走 LR,再转弯,到达另一边,再直着走,再转弯到达第三边,然后直着走,接着走 LR,再转弯,到达第四边,直着走,再转弯,回到出发点。如果路径严格对称的话,中间肯定不相交。怎么保证能够回到出发点呢构成闭合路径呢?看看下面的图:
当 x=2(T=8 或 9),S=2 或 3 时的路径图:,其中:蓝色表示转弯到达另一边,橙色表示直走,深红色表示 LR 对
根据这个,不难得出当 x 等于偶数时候的通项公式:FS/2(LR)(T-4)/4LLFS/2(LR)(T-4)/4LL
2、x 是奇数
和 x 是偶数时的走法差不多,虽然不能使路径严格对称,不过还是可以办到的,为了便于说明,先给一张图
当 x=3(T=10 或 11),S=4 或 5 时的路径图: 不同颜色代表的意义还是和上面一幅图相同
稍稍分析上面的图,不难得出当 x 等于奇数时候的通项公式:F(S-2)/2(LR)[(T-4)/4]+1LLFS/2(LR)(T-4)/4LFL
至此,所有情况考虑完全了...
做出来这题,好大的满足感啊!
参考代码
#include <iostream>
#include <cstring>
#include <cstdio> using namespace std; int F, T; int main()
{
while(scanf("%d%d", &F, &T)!=EOF)
{
if(T<)
{
printf("Atawazu\n");
continue;
}
if(F<)
{
if(T<)
{
printf("4\nLLLL\n");
continue;
}
else
{
printf("%d\n", +((T-)/)*);
int x=(T-)/;
printf("RLLRLLRL");
for(int i=; i<x; i++) printf("RL");
printf("LRLL");
for(int i=; i<x; i++) printf("RL");
printf("\n");
continue;
}
}
printf("%d\n", (F/)*+(T/)*);
int x=(T-)/;
if(x%==)
{
for(int i=; i<F/; i++) printf("F");
for(int i=; i<x/; i++) printf("LR");
printf("LL");
for(int i=; i<F/; i++) printf("F");
for(int i=; i<x/; i++) printf("LR");
printf("LL");
}
else
{
for(int i=; i<F/-; i++) printf("F");
for(int i=; i<=x/; i++) printf("LR");
printf("LL");
for(int i=; i<F/; i++) printf("F");
for(int i=; i<x/; i++) printf("LR");
printf("LFL");
}
printf("\n");
}
return ;
}
URAL 1549
题目连接 & AC通道
URAL 1549 Another Japanese Puzzle
URAL 1549 Another Japanese Puzzle(构造)的更多相关文章
- 【AtCoder Grand Contest 012C】Tautonym Puzzle [构造]
Tautonym Puzzle Time Limit: 50 Sec Memory Limit: 256 MB Description 定义一个序列贡献为1,当且仅当这个序列 由两个相同的串拼接而成 ...
- Codeforces Round #394 (Div. 2) E. Dasha and Puzzle 构造
E. Dasha and Puzzle 题目连接: http://codeforces.com/contest/761/problem/E Description Dasha decided to h ...
- URAL 1995 Illegal spices 贪心构造
Illegal spices 题目连接: http://acm.timus.ru/problem.aspx?space=1&num=1995 Description Jabba: Han, m ...
- Codeforces 761E Dasha and Puzzle(构造)
题目链接 Dasha and Puzzle 对于无解的情况:若存在一个点入度大于4,那么直接判断无解. 从根结点出发(假设根结点的深度为0), 深度为0的节点到深度为1的节点的这些边长度为2^30, ...
- CF936C Lock Puzzle 构造
传送门 好久不做构造题脑子都僵化了qwq 无解的条件是\(s\)包含的字符可重集和\(t\)包含的字符可重集不相等,相等的时候下文会给出一种一定可行的构造方案. 考虑增量构造.定义某个字符串\(x\) ...
- CF 936C Lock Puzzle——构造
题目:http://codeforces.com/contest/936/problem/C 玩了一个小时,只能想出 5*n 的方法. 经过一番观察?考虑这样构造:已经使得 A 串的一个后缀 = B ...
- POJ 3388 Japanese Puzzle (二分)
题意:给你一个n*n 的图,你总共有k 种花砖,告诉你每一种花砖的个数,让你随便安排它们的位置,问你最多有多少行和第一行是一样,并且要输出第一行的一定存在的图案. 析:首先这个题如果读懂了题意,一点也 ...
- URAL 1614. National Project “Trams” [ 构造 欧拉回路 ]
传送门 1614. National Project “Trams” Time limit: 0.5 secondMemory limit: 64 MB President has declared ...
- (转)Spring读书笔记-----Spring核心机制:依赖注入
Java应用(从applets的小范围到全套n层服务端企业应用)是一种典型的依赖型应用,它就是由一些互相适当地协作的对象构成的.因此,我们说这些对象间存在依赖关系.加入A组件调用了B组件的方法,我们就 ...
随机推荐
- ubuntu安装redis
1.下载安装root@21ebdf03a086:/# apt-cache search redisroot@21ebdf03a086:/# apt-get install redis-server a ...
- java web图片显示到浏览器
今天研究了一下午,图片显示问题. jsp中获取绝对路径的方法:String contextPath = request.getContextPath();String path = request.g ...
- How to use AKBusGpsParser
step 01: sudo easy_install AKBusGpsParser step02: Let's see a sample #!/usr/bin/python #coding:UTF-8 ...
- linux学习笔记1
2016年09月25日 unix与linux发展史 unix是linux之父,学习linux后能容易上手unix. linux是源码开放的unix,由一位芬兰大学生李纳斯在网络上发起,和后来众多爱好者 ...
- duilib进阶教程 -- 各种控件的响应 (10)
到上一个教程为止,界面显示的代码就都介绍完啦,现在开始介绍控件的响应,其实在<2013 duilib入门简明教程 -- 事件处理和消息响应 (17)>里已经列出了duilib自己定义的所有 ...
- paip java.net.SocketException No buffer space available的解决办法及总结
java.net.SocketException No buffer space available的解决办法及总结 作者Attilax 艾龙, EMAIL:1466519819@qq.com 来 ...
- 解决pageControl页面设置无效问题
废话不多说,先上代码 1.添加pageViewControl - (void)addPageControl { UIPageControl *pageControl = [[UIPageControl ...
- 导出特定内容成insert语句
) EXEC('SELECT ' + @insert_sql + ' FROM ' + @table )
- Visual Studio 2013 无法正常打开项目文件
提示:无法打开 vcxproj 因为此版本的应用程序不支持其项目类型 ,若要打开它 请使用支持此类型项目的版本. 检查 AppData\Roaming\Microsoft\VisualStudio\ ...
- IOS适配
• Default.png(图片尺寸为320x480):显示在非Retina-3.5英寸屏幕上(iPhone3G\iPhone3GS,屏幕分辨率为320x480) • Default@2x.png(图 ...