拿到这种题,首先不要慌张 。

这道题有 很明显 的规律性 : BABABABA …

那么这道题 再难也不难 。

手玩。手玩的时候要有清晰的目标,因为手玩的目的是让我们直观地感受规律,发现规律。毫无目的的手玩只是在浪费时间。

尤其是这种规律性强的题目,手玩的结果往往具有普遍性,可以推而广之。

当题目比较复杂时,手玩很有可能出错 。 这个时候要结合暴力程序进行验证。

当然这都不是最核心的。本题最核心的是 递归构造

而且这个构造 比较复杂,不那么明显 ,特别是这种带有 最小步数 限制的构造题目,往往考验创造性思维。

以这道题为例,操作顺序是很重要的,我们要先把中间的还原,才能把两边的也还原。

最后优美的结论是,操作次数恰好为 nnn 次。

如果你执着于先将两边的复原的话,复原左右 444 个 则需要 555 步。

失之毫厘,差之千里 啊 !

#include<bits/stdc++.h>
using namespace std;
int n;
void p(int x,int y) {printf("%d to %d\n",x,y);
}
void solve(int l,int n) {if(n==4) {p(l+7,l),p(l+4,l+7),p(l+1,l+4),p(l+8,l+1);return;}if(n==5) {p(l+9,l),p(l+4,l+9),p(l+7,l+4),p(l+1,l+7),p(l+10,l+1);return;}if(n==6) {p(l+11,l),p(l+8,l+11),p(l+3,l+8),p(l+7,l+3),p(l+1,l+7),p(l+12,l+1);return;}if(n==7) {p(l+9,l),p(l+6,l+9),p(l+13,l+6),p(l+4,l+13),p(l+10,l+4),p(l+1,l+10),p(l+14,l+1);return;}int r=l+2*(n+1)-1;p(r-2,l),p(l+4,r-2);solve(l+4,n-4);p(l+1,r-5),p(r-1,l+1);
}
int main() {while(scanf("%d",&n)!=-1) {if(n==3) {p(2,-1),p(5,2),p(3,-3);}else {solve(-1,n);}printf("\n");}}

暴力代码 (用于 n=3,4,5,6,7) 时的特殊构造 。

#include<bits/stdc++.h>
using namespace std;
int s[15]={0,0,2,1,2,1,2,1,2,1,2,1},t[15]={1,1,1,1,1,2,2,2,2,2};
int tx[15],ty[15];
void dfs(int x) {if(x>5) {int flg=1; for(int i=0;i<10;i++) if(s[i]!=t[i]) flg=0;if(flg) {int r[15]={0,0,2,1,2,1,2,1,2,1,2,1};for(int i=1;i<=5;i++) {swap(r[tx[i]],r[ty[i]]);swap(r[tx[i]+1],r[ty[i]+1]);for(int j=0;j<12;j++) {if(r[j]==1) printf("%c",'A');else if(r[j]==2) printf("%c",'B');else printf(" ");}printf("\n");}exit(0);} return;}for(int i=0;i<12;i++) {for(int j=i+2;j<12;j++) {if(s[i]&&s[i+1]&&!s[j]&&!s[j+1] || !s[i]&&!s[i+1]&&s[j]&&s[j+1]) {tx[x]=i,ty[x]=j;swap(s[i],s[j]),swap(s[i+1],s[j+1]);dfs(x+1);swap(s[i],s[j]),swap(s[i+1],s[j+1]);}}}
}
int main() {dfs(1);
}

嗯,我们最后还需要补上一个 不重要的 最小步数的证明

有 2(n−1)2(n-1)2(n−1) 对相邻的类型相同的包裹,而我们插入一对最多增加 2 对相邻的包裹,同时因为第一次操作只能插在左右两端,所以只会增加一对,因此步数下界为 ⌈2n−32⌉+1=n\lceil\frac{2n-3}{2}\rceil +1=n⌈22n−3​⌉+1=n 。

[ICPC2014 WF] Baggage相关推荐

  1. 【讨论】基于WF的流程结构

    大家都知道,在WF中默认情况下,其活动是以树状结构组成的,简单说就是复合活动包含其子活动,如果子活动也是复合活动也可以包含其子活动,但同一个活动不能成为两个活动的子活动.这种方式被大量使用在WF自带的 ...

  2. [公告]欢迎您加入WF技术研究团队

    Microsoft Windows Workflow Foundation (WWF) 是一个可扩展框架,用于在 Windows 平台上开发工作流解决方案.Windows Workflow Found ...

  3. 【翻译】WF从入门到精通(第十一章):并行活动

    上一篇:[翻译]WF从入门到精通(第十章):事件活动 学习完本章,你将掌握:     1.理解在工作流环境中Parallel活动是怎样执行的,并且懂得如何使用它们     2.并行执行路径中的同步数据 ...

  4. [转]微软发布WF教程及大量示例

    继前面微软公司发布Windows Communication Foundation (WCF)和Windows CardSpace的示例程序之后,微软今天又发布了WF的教程和大量示例,对于学习WF的朋 ...

  5. WF流程设计器升级说明

    WF流程设计器升级说明 目录 WF流程设计器升级说明    1 通用版    1 1.可打开,设计,保存所的xoml格式的工作流文件    1 2.提供了规则绑定    2 3.提供了绑定EventD ...

  6. WF工作流开发回顾:介绍

    工作流这个词是去年11月才进入自己的大脑词汇,借着一点时间回顾下自己学习的过程,在这作个记录,希望和大家多多交流,里面的很多都是自己的片面之词,对于这么高科技的东西自己也没把握,还是希望多多指教,小弟 ...

  7. WF4.0 基础篇 (三) 流程实例WorkflowApplication与设计WF程序的基本原则

    通过本节,可以初步了解WF程序的特性,为以后的WF类应用开发提供一个初步的感性认识 目录 1    流程实例WorkflowApplication与设计WF程序的基本原则    1 1.1    流程 ...

  8. mysql编辑工具wf_轻松构建自定义WF设计器

    最近在研究WF4.0,需要在4.0的基础上将业务逻辑与Activities进行一些封装,所以就做了一个设计工具,那么自会有人问,为什么不直接在VS上进行操作了,为什么要自己再造轮子,呵呵,理由有二:一 ...

  9. WF 4.0 之持久化操作一:SqlServer方式的存储

    没有持久化的WF 能称为一个完整的WF吗,答案是否定的:如果WF不能持久化,那么流程就需要一次就执行完毕,所有的操作就要一次走下去,可现实中的工作流是这样吗,答案同样是否定的.一个投票流程需要多个评委 ...

最新文章

  1. string match
  2. JPA与Hibernate的关系
  3. 帮你防沉迷、为你打call、解救路痴,一文看懂Google I/O 2018
  4. Java中gatSum方法是什么_Oracle中的SUM用法讲解
  5. Linux内核同步机制之信号量与锁
  6. 数据结构思维 第一章 接口
  7. Android 系统性能优化(12)---MTK 平台UX性能分析方法
  8. c语言用参数确认递归,C语言程序设计(第4章函数)3
  9. 由一个网站注册验证码带来的思考
  10. 每天一道机器学习算法面试题目
  11. 用JEP+SpringBoot进行动态公式处理计算
  12. python mql4跟单_MT4本地跟单EA设置教程 -
  13. 【免费】搜狗站长URL自动推送工具1.4.1
  14. 英语对程序员来讲有多重要?不会英语可以做程序员吗?
  15. windows系统下更改itunes默认备份地址(小白实操)
  16. 「Computer Vision」Note on Seamless Nudity Censorship(裸体审查)
  17. 苹果删除照片不释放内存_别再胡乱清理垃圾了,只要删除这6个文件夹,瞬间释放20GB内存...
  18. 下载陷阱:软件带着病毒来
  19. 改springboot项目遇到的@Restcontroller返回网页问题
  20. AWS DynamoDB的简介与使用

热门文章

  1. base64合成的图片打不开问题
  2. 城市内涝监测预警系统解决方案
  3. lammps学习(三)聚烯烃反应力场(reaxff)热分解
  4. 共赴 Google Cloud 2022 中国出海数字峰会,探索更多可能
  5. 正能量系列 女性程序员篇
  6. 日本研发便当分装机器人,能以三维模式识别食物的形状
  7. selenium自动化测试学习(一)
  8. 如何对文件、文件夹加密?
  9. NVIDIA英伟达高性能计算机视觉库VPI统一视觉编程接口,取代opencv?
  10. MySQL删除或清空表中数据的方法