Cows on Parade

Farmer John has two types of cows: black Angus and white Jerseys. While marching 19 of their cows to market the other day, John's wife Farmeress Joanne, noticed that all 16 possibilities of four successive black and white cows (e.g., bbbb, bbbw, bbwb, bbww, ..., wwww) were present. Of course, some of the combinations overlapped others.

农夫约翰有两种奶牛:一种是黑色的安古斯,一种是白色的泽西斯。当他在第二天驱赶他奶牛中的19只去市场时候,他的妻子女农场主乔安娜注意到16种所有4只黑白奶牛的顺序排列(例如:黑黑黑黑,黑黑黑白,黑黑白黑,黑黑白白,……,白白白白)都出现了。当然,一些排列是彼此覆盖的。

Given N (2 <= N <= 15), find the minimum length sequence of cows such that every combination of N successive black and white cows occurs in that sequence.

输入中有一个N(2 <= N <= 15),找到一串最小长度的黑白奶牛的排列包括N长度的所有的黑白奶牛顺序排列的情况。

Analysis: The vertices of the graph are the possibilities of N-1 cows. Being at a node corresponds to the last N-1 cows matching the node in color. That is, for N = 4, if the last 3 cows were wbw, then you are at the wbw node. Each node has out-degree of 2, corresponding to adding a black or white cow to the end of the sequence. In addition, each node has in-degree of 2, corresponding to whether the cow just before the last N-1 cows is black or white.

分析:这个图的顶点是n-1长度所有可能奶牛顺序排列。当你在一个顶点是相当你在这个奶牛颜色匹配串的最后n-1只奶牛。这也就是说,对于n=4,如果最后三只奶牛的颜色排列是【白黑白】,然后你正处于【白黑白】这个点。每个点有两个出度——相当于在这个串后面加白牛或黑牛。除此之外,每个点有两个入度——相当于这最后n-1只牛之前的颜色是黑的或白的。

The graph is strongly connected, and the in-degree of each node equals its out-degree, so the graph has a Eulerian circuit.

这个图是强连通的,并且每个图的入度等于每个点的出度,所以这个图有一个欧拉回路。

The sequence corresponding to the Eulerian circuit is the sequence of N-1 cows of the first node in the circuit, followed by cows corresponding to the color of the edge.

这个串就相当于最初的n-1只牛当回路起点的欧拉回路,后面跟着的牛就相当于边的颜色。

如果我跟英语老师说我在周末时间爱好翻译英文网页她会不会表扬我

我个人感觉,这道题翻译出来也是有一点不知所云的。

而且最后"边的颜色"稍微有点问题,因为这道题如果做欧拉不应该是记录边的,是记录点的,我把这道题的思路稍微改动一下,但是大意是不变的,方便理解。希望不是误解……

我们新建一个黑点b一个白点w,发现其实和分析里的描述是等价的一个具有欧拉回路性质的图。

寻找的过程可以抽象成这样,【wbw】后边加了一个b之后到了【bwb】,【wbw】后边加了一个w到了【bww】,然后做下去欧拉回路,相当于在n-1只黑白奶牛的全部可能的顺序排列后都加上b或w形成两个新的串,所以最后得到的回路串即为答案

但是我们既然每条边都要走一遍,那么经过黑点(或白点)到了哪个点已经没有关系了【因为我们所有点都是自己假定的,所以我们可以在我们的意识里假定wbw经过b后就是到的另一个点就是bwb因为路径一定会那么走过一遍的,丝毫不用考虑把这个编进程序】蓝字只是为了帮助理解

那么其实我们只要随便找一个n-1长的串,可以全部初始化为www,bbb之类的,放在前头,如题意建图,写欧拉回路就可以得解

显然,usaco里好像没有这道题……因为网上找不到这道题的题解……希望和我一样有耐心能读完那些英语材料最后碰到这个问题的人不会再懵逼了……

同时假如我们只需要输出长度,可以用这个意识流来证明一下,黑白两点各自经过2^(n-1)次,因为黑白两个点所以是2^n,最后加上n-1所以答案是(2^n)+n-1,n=4时答案是19和题中所叙述的是相同的

USACO 3.3 TEXT Eulerian Tour中的Cows on Parade一点理解的更多相关文章

  1. TPshop中B2C与B2B2C的一点理解

    首先来一段百度百科记录一下: B2C 是Business-to-Customer的缩写,而其中文简称为"商对客"."商对客"是电子商务的一种模式,也就是通常说的 ...

  2. 关于C中函数传参的一点理解

    一般来说c传值分为传值与传指针,Java里没有指针,因此只有传值,但是Java里传值分为简单变量传值和引用型变量传值,从本质上来说这两者没啥区别. 下面主要说的是传参时对原变量的影响: 最初练习创建单 ...

  3. 关于vue自定义事件中,传递参数的一点理解

    例如有如下场景 先熟悉一下Vue事件处理 <!-- 父组件 --> <template> <div> <!--我们想在这个dealName的方法中传递额外参数 ...

  4. Sublime Text 2/3中Autoprefixer失效解决方法

    ###Sublime Text 2/3中Autoprefixer失效解决方法: 相信每个前端er都会使用Subl这款工具吧,因为它有上千款开源的插件,而且功能各异,这里给大家带来的是标题中Autopr ...

  5. 代码实现将键盘录入的数据拷贝到当前项目下的text.txt文件中,键盘录入数据当遇到quit时就退出

    package com.looaderman.test; import java.io.FileNotFoundException; import java.io.FileOutputStream; ...

  6. 关于css中层叠性的一点理解

    关于css层叠性的一点理解 标签(空格分隔): html css 我们平时在写css的时候会遇到这样的情况 <!DOCTYPE html> <html lang="en&q ...

  7. 关于HTML中,绝对定位,相对定位的理解...(学习HTML过程中的小记录)

    关于HTML中,绝对定位,相对定位的理解...(学习HTML过程中的小记录)   作者:王可利(Star·星星) HTML中 相对定位:position:relative; 绝对定位:position ...

  8. IIFE-js中(function(){…})()立即执行函数写法理解

    介绍IIFE IIFE的性能 使用IIFE的好处 IIFE最佳实践 jQuery优化 在Bootstrap源码(具体请看<Bootstrap源码解析>)和其他jQuery插件经常看到如下的 ...

  9. STL中的set容器的一点总结(转)

    STL中的set容器的一点总结 1.关于set C++ STL 之所以得到广泛的赞誉,也被很多人使用,不只是提供了像vector, string, list等方便的容器,更重要的是STL封装了许多复杂 ...

随机推荐

  1. ASP.NET MVC 使用MSBuild部署的几个注意事项

    ASP.NET MVC 使用MSBuild部署的几个注意事项 做新项目,当时参考NopCommerce的结构,后台Nop.Admin是一个独立的Area Web Site,但部署的时候发现,使用一键发 ...

  2. [转]ARM/Thumb/Thumb-2

    ref:http://kmittal82.wordpress.com/2012/02/17/armthumbthumb-2/ A few months ago I gave a presentatio ...

  3. Java:终结器

    目录 背景Java版:终结器防卫者C#版:“终结器防卫者”备注 背景返回目录 多数情况我们不需要重写 finalize 方法,只有当我们需要持有未托管资源的时候才需要,而此时重写 finalize 方 ...

  4. start running 开始跑步减肥

    begin 两个月前,逛超市的时候站在体重秤上称了称,一直以为自己体重很正常(BMI<25,虽然也不轻~~~),结果直接迈过超重,奔着肥胖跑去了(BMI>30,BMI计算器 http:// ...

  5. [iOS]封装单例类

    [iOS]封装单例类 今天在学习iOS的SQLite开发,发现在需要使用SQLite的每个视图中,都需要对数据库进行打开或关闭,觉得挺麻烦的:于是在想能否写个单例类对这些操作进行封(因以前一直在使用D ...

  6. zabbix实现对磁盘动态监控

    zabbix实现对磁盘动态监控 前言 zabbix一直是小规模互联网公司服务器性能监控首选,首先是免费,其次,有专门的公司和社区开发维护,使其稳定性和功能都在不断地增强和完善.zabbix拥有详细的U ...

  7. .Net项目框架

    摘要:本文描述了在用VS.NET进行B/S开发时采用的框架结构,一般建立类库项目和Web项目,在Web基本aspx页面类中调用类库中方法,同时在aspx页面类中不需要写任何对数据库操作的SQL代码,便 ...

  8. DAS,NAS,SAN在数据库存储上的应用

    DAS,NAS,SAN在数据库存储上的应用 一. 硬盘接口类型1. 并行接口还是串行接口(1) 并行接口,指的是并行传输的接口,比如有0~9十个数字,用10条传输线,那么每根线只需要传输一位数字,即可 ...

  9. 了解OData(一)

    了解OData(一) 最近做了一个小项目,其中用到了 WCF Data Service,之前是叫 ADO.NET Data Service 的.关于WCF Data Service,博客园里的介绍并不 ...

  10. NSLocalizedString不起作用

    程序TESTAPP 环境:XCODE 4.6 OSX  10.8.4 MAC BOOK AIR 2011年版 代码 [doneButton setTitle:NSLocalizedString(@&q ...