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和题中所叙述的是相同的
USACO 3.3 TEXT Eulerian Tour中的Cows on Parade一点理解的更多相关文章
- TPshop中B2C与B2B2C的一点理解
首先来一段百度百科记录一下: B2C 是Business-to-Customer的缩写,而其中文简称为"商对客"."商对客"是电子商务的一种模式,也就是通常说的 ...
- 关于C中函数传参的一点理解
一般来说c传值分为传值与传指针,Java里没有指针,因此只有传值,但是Java里传值分为简单变量传值和引用型变量传值,从本质上来说这两者没啥区别. 下面主要说的是传参时对原变量的影响: 最初练习创建单 ...
- 关于vue自定义事件中,传递参数的一点理解
例如有如下场景 先熟悉一下Vue事件处理 <!-- 父组件 --> <template> <div> <!--我们想在这个dealName的方法中传递额外参数 ...
- Sublime Text 2/3中Autoprefixer失效解决方法
###Sublime Text 2/3中Autoprefixer失效解决方法: 相信每个前端er都会使用Subl这款工具吧,因为它有上千款开源的插件,而且功能各异,这里给大家带来的是标题中Autopr ...
- 代码实现将键盘录入的数据拷贝到当前项目下的text.txt文件中,键盘录入数据当遇到quit时就退出
package com.looaderman.test; import java.io.FileNotFoundException; import java.io.FileOutputStream; ...
- 关于css中层叠性的一点理解
关于css层叠性的一点理解 标签(空格分隔): html css 我们平时在写css的时候会遇到这样的情况 <!DOCTYPE html> <html lang="en&q ...
- 关于HTML中,绝对定位,相对定位的理解...(学习HTML过程中的小记录)
关于HTML中,绝对定位,相对定位的理解...(学习HTML过程中的小记录) 作者:王可利(Star·星星) HTML中 相对定位:position:relative; 绝对定位:position ...
- IIFE-js中(function(){…})()立即执行函数写法理解
介绍IIFE IIFE的性能 使用IIFE的好处 IIFE最佳实践 jQuery优化 在Bootstrap源码(具体请看<Bootstrap源码解析>)和其他jQuery插件经常看到如下的 ...
- STL中的set容器的一点总结(转)
STL中的set容器的一点总结 1.关于set C++ STL 之所以得到广泛的赞誉,也被很多人使用,不只是提供了像vector, string, list等方便的容器,更重要的是STL封装了许多复杂 ...
随机推荐
- AngularJS的工作原理1
AngularJS的工作原理 个人觉得,要很好的理解AngularJS的运行机制,才能尽可能避免掉到坑里面去.在这篇文章中,我将根据网上的资料和自己的理解对AngularJS的在启动后,每一步都做了些 ...
- Hadoop企业级应用
Hadoop专业解决方案之构建Hadoop企业级应用 一.大数据的挑战 大数据面对挑战是你必须重新思考构建数据分析应用的方式.传统方式的应用构建是基于数据存储在不支持大数据处理的基础之上.这主要是因为 ...
- [转]About the security content of iOS 8
Source:http://support.apple.com/kb/HT6441 For the protection of our customers, Apple does not disclo ...
- c语言,字符串原地翻转
实现字符串的原地翻转: #include<stdlib.h> #include<stdio.h> #include<assert.h> #define SWAP(a ...
- TOGAF架构内容框架之构建块(Building Blocks)
TOGAF架构内容框架之构建块(Building Blocks) 之前忙于搬家移居,无暇顾及博客,今天终于得闲继续我的“政治课”了,希望之后至少能够补完TOGAF方面的内容.从前面文章可以看出,笔者并 ...
- Jquery 类似新浪微博,鼠标移到头像,用浮动窗口显示用户信息,已做成一个jquery插件
请注意!!!!! 该插件demo PHP 的 demo下载 C#.NET的demo下载 需要如下图, 1.鼠标移动到头像DIV时,Ajax获取数据,并让浮动DIV显示出来. 2.鼠标可以移动到上面浮 ...
- WCFRESTFul服务搭建及实现增删改查
WCFRESTFul服务搭建及实现增删改查 RESTful Wcf是一种基于Http协议的服务架构风格, RESTful 的服务通常是架构层面上的考虑. 因为它天生就具有很好的跨平台跨语言的集成能力 ...
- Windows Store 手势编程小结
Windows Store 手势编程小结 最近完成了一个Windows Store上面的手势操作的页面.在这里总结了一下经验和心得,希望能和大家一起分享和讨论一下. 首先,要纠正一个误区,在Windo ...
- 杨辉三角形II(Pascal's Triangle II)
杨辉三角形II(Pascal's Triangle II) 问题 给出一个索引k,返回杨辉三角形的第k行. 例如,给出k = 3,返回[1, 3, 3, 1] 注意: 你可以优化你的算法使之只使用O( ...
- Python学习入门基础教程(learning Python)--5.7 Python文件数据记录存储与处理
本节主要讨论Python下如何通过文件操作实现对数据记录集的存储与处理的操作方法. 在Python里和其他高级语言一样可以通过文件读写将一些记录集写入文件或者通过文件读操作从文件里读取一条或多条和数据 ...