题目大意

构造一条闭合路线,使得路线不能相交,并且走直线的步数小于等于 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(构造)的更多相关文章

  1. 【AtCoder Grand Contest 012C】Tautonym Puzzle [构造]

    Tautonym Puzzle Time Limit: 50 Sec  Memory Limit: 256 MB Description 定义一个序列贡献为1,当且仅当这个序列 由两个相同的串拼接而成 ...

  2. 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 ...

  3. URAL 1995 Illegal spices 贪心构造

    Illegal spices 题目连接: http://acm.timus.ru/problem.aspx?space=1&num=1995 Description Jabba: Han, m ...

  4. Codeforces 761E Dasha and Puzzle(构造)

    题目链接 Dasha and Puzzle 对于无解的情况:若存在一个点入度大于4,那么直接判断无解. 从根结点出发(假设根结点的深度为0), 深度为0的节点到深度为1的节点的这些边长度为2^30, ...

  5. CF936C Lock Puzzle 构造

    传送门 好久不做构造题脑子都僵化了qwq 无解的条件是\(s\)包含的字符可重集和\(t\)包含的字符可重集不相等,相等的时候下文会给出一种一定可行的构造方案. 考虑增量构造.定义某个字符串\(x\) ...

  6. CF 936C Lock Puzzle——构造

    题目:http://codeforces.com/contest/936/problem/C 玩了一个小时,只能想出 5*n 的方法. 经过一番观察?考虑这样构造:已经使得 A 串的一个后缀 = B ...

  7. POJ 3388 Japanese Puzzle (二分)

    题意:给你一个n*n 的图,你总共有k 种花砖,告诉你每一种花砖的个数,让你随便安排它们的位置,问你最多有多少行和第一行是一样,并且要输出第一行的一定存在的图案. 析:首先这个题如果读懂了题意,一点也 ...

  8. URAL 1614. National Project “Trams” [ 构造 欧拉回路 ]

    传送门 1614. National Project “Trams” Time limit: 0.5 secondMemory limit: 64 MB President has declared ...

  9. (转)Spring读书笔记-----Spring核心机制:依赖注入

    Java应用(从applets的小范围到全套n层服务端企业应用)是一种典型的依赖型应用,它就是由一些互相适当地协作的对象构成的.因此,我们说这些对象间存在依赖关系.加入A组件调用了B组件的方法,我们就 ...

随机推荐

  1. [ACM_搜索] Triangles(POJ1471,简单搜索,注意细节)

    Description It is always very nice to have little brothers or sisters. You can tease them, lock them ...

  2. spring mvc ajax 400解决

    The request sent by the client was syntactically incorrect. ajax发起请求时报400错误.请求代码如下: var reportId=($( ...

  3. 微软发布Windows 10:连Windows 7都能免费升级了

    今日凌晨,微软宣布Windows 10发布. Windows10 整体重置了 Window8 的设计,恢复了原有的开始菜单设置,系统新增了虚拟桌面功能,搜索框加分类项的形式替代原有的两栏式控制面板界面 ...

  4. Backbone Model——数据模型

    Model是Backbone中所有数据模型的基类,用于封装原始数据,并提供对数据进行操作的方法,我们一般通过继承的方式来扩展和使用它. 如果你做过数据库开发,可能对ORM(对象关系映射)不会陌生,而B ...

  5. ftp 操作,支持断点续传或者继续下载。

    1.ftpclient 类 public class FTPClient:IDisposable { public static object _obj = new object(); #region ...

  6. IOS设计模式浅析之工厂方法模式(Factory Method)

    概述 在软件系统中,经常面临着“某个对象”的创建工作,由于需求的变化,这个对象的具体实现经常面临着剧烈的变化,但是它却拥有比较稳定的接口. 如何隔离出这个易变对象的变化,使得系统中“其它依赖该对象的对 ...

  7. Activiti 查询最新版本的流程定义

    package com.mycom.processDefinition; import java.io.File; import java.io.IOException; import java.io ...

  8. 从Windows XP系统迁移到Windows 7,Windows 8开始

    Microsoft在2014年4月8日结束了Windows XP的支持.您的公司准备好了吗?如果您还没有迁移到Windows 7或8,那就要抓紧时间了.从现在起将不再向XP系统提供安全修补程序,而仍然 ...

  9. hadoop安装计

    hadoop安装计 大体上按这个做就好了 http://blog.csdn.net/hitwengqi/article/details/8008203 需要修改hadoop-env.sh export ...

  10. 通过反射获取Android通知栏高度

    public static int getStatusBarHeight(Context context){ Class<?> c = null; Object obj = null; F ...