USACO 3.3 TEXT Eulerian Tour中的Cows on Parade一点理解

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和题中所叙述的是相同的

时间: 2024-10-13 08:57:10

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

USACO 6.5 Betsy&#39;s Tour (插头dp)

Betsy's TourDon Piele A square township has been divided up into N2 square plots (1 <= N <= 7). The Farm is located in the upper left plot and the Market is located in the lower left plot. Betsy takes her tour of the township going from Farm to Mark

JavaSript中变量的作用域 闭包的理解

<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> <script type="text/javascript"> /* * 1.js中的变量都是公用的. 2.js中没有静态变量 3.闭包:函数内部可以调用函数外部的变量;反之,则不行 */ var r=10; fu

CodeFirst中导航属性的代码实现 理解

  导航属性是在CodeFirst中,两中数据库表之间,多对多或者1对多中表关联的属性.导航属性并不带有数据, 包括以下信息: 名称. (必需) 导航属性要导航的关联. (必需) 导航属性要导航的关联端. (必需) 对于多对多的导航属性,两张表是可选的.如果对关联一端的某实体类型定义导航属性,则不需要对关联另一端的该实体类型定义导航属性. 导航属性的数据类型是由其远程关联端的重数决定的. 重数:在关联的一端可以存在的实体类型实例的数量.关联端重数可以有以下列值之一: 一(1):表明在关联端存在且

HTML5中的Web Storage(sessionStorage||localStorage)理解与简单实例

Web Storage是什么? Web Storage功能,顾名思义,就是在Web上针对客户端本地储存数据的功能,具体来说Web Storage分为两种: sessionStorage: 将数据保存在session对象中,所谓session是指用户在浏览某个网站时,从进入网站到浏览器关闭所经过的这段时间,也就是用户浏览这个网站所花费的时间.session对象可以用来保存在这段时间内所要求保存的任何数据. localStorage: 将数据保存在客户端本地的硬件设备(通常指硬盘,当然可以是其他的硬

ios中关于对锚点的理解

锚点在ios中见到的地方不多,大部分用在动画中. 今天看到一个动画,上面都是关于锚点的,锚点这个概念在两年前看cocos2d得基本概念时接触过,当时没怎么看,今天看到了,就在好好的学一下. 看了一篇blog,是关于锚点的,就借鉴一些上面的图像: cocos2d里采用OpenGL ES坐标系,坐标原点在屏幕左下角.而ios采用的是Quartz 2D坐标系,坐标原点在屏幕左上角. 在cocos2d和ios中分别把视图的坐标点设为(10,10),结果如下: 那么什么是锚点呢?下面以一个例子来说明: 比

数据库中一些基本概念的深入理解

1.怎样理解事务的一致性 一致性就是一个这样的东西,一致性对于不同的应用领域有着不同的定义,因为它就是按照业务规则来说明这个是一致的,那个是不一致的,这个角度上讲,一致性就是一个系统的状态,一个合理的状态.而合理则表现在这个状态是否符合业务规则.例如:转账业务中合理的状态就是,转出和转入帐户必须出入相等,如果不等那就意味着不合理,也就是不一致,有时候我们很容易就能把它定为"守恒一致性",也就是说总体来说什么也不多,什么也不少就是一致性.而这个规则能够使用于其他的义务吗?我们不能说不能,

C++ 中有关const引用的一点小知识

在读<C++ Primer>时,发现之前对const的概念不是很清晰,只知道如何去使用,于是翻开const引用部分又阅读了一遍,发现有两点自己要注意的地方 1.const限定的对象不可以初始化非const引用 ex. 1 const int src = 512; 2 const int &ok_dest = src; //ok: 引用和初始化对象都是const 3 int &err_dest = src; //error : 引用为非const 原因很简单, src 是不可以被

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

介绍IIFE IIFE的性能 使用IIFE的好处 IIFE最佳实践 jQuery优化 在Bootstrap源码(具体请看<Bootstrap源码解析>)和其他jQuery插件经常看到如下的写法: Js代码   +function ($) { }(window.jQuery); 这种写法称为: IIFE (Imdiately Invoked Function Expression 立即执行的函数表达式). 一步步来分析这段代码. 先弄清函数表达式(function expression)和 函数

递归中对于参数和变量的理解

 对于递归函数:参数,局部变量的生存期和调用时间问题 ================================================================================================== #include <stdio.h> int binary_to_ascii( unsigned int value) { unsigned int quotient; quotient = value / 10;