美文网首页
uva1204 有趣的游戏

uva1204 有趣的游戏

作者: kinoud | 来源:发表于2018-12-05 10:35 被阅读0次

一些男生女生(一共至少2人)坐成一圈做游戏。游戏做n轮,每轮从任意一个人那里开始,顺时针逆时针数若干个人(不超过100个),把他们的性别分别记下来,于是每一轮游戏都得到一个B\G序列(B for boy G for girl)。给出n轮游戏的B\G序列,求可能的最少参与游戏人数。
例如,两轮的结果分别是BGGGBBBGG、BBGGG,那么最少可能有6个人:GGGBBB。
n<=16

方便起见,称一轮游戏的结果为一个串。如果某个串是另一个串的子串,那么这个串是没用的,预处理时丢弃掉。然后这个问题就好像是把这若干个串首尾相“粘”,拼成一个尽可能短的圈。


首尾相"粘"

关于这种构思的正确性,我们假定得到了最优解的环形序列,然后随意指定某个位置为起始位置0,编号顺时针逐位增加。那么每个串都是这个最优解的一部分,或者若干圈再加上一部分。接着按照起始编号从小到大给所有的串排序,由于预处理去掉了所有被包含的子串,所以不存在两个串起始编号相同的情况。规定每个串贡献的部分是它的起始位置到下一个串的起始位置之前,那么各个串的贡献无交集并且和为最优解。故而所有可能的最优解都可以用上图的形式表示,只需枚举所有这些可能的情况然后挑出其中绿色部分的和最大的一个,则灰色部分最小。

只有一个串的情况

另外需要注意只有一个串的情况,这时候相当于它自己的尾巴和自己的头重合了,一个串可以和自身完全重合,但绿色的部分应是除了这种情况以外的最大重叠部分。

程序实现上,先随意指定某个串作为起点,记为串0。
定义dp[s][i][t]为:当串的集合为s,正\反向串i作为终点时,圈中重叠部分和的最大值(t=0\1,正\反向)。注意s一定包含串0,并且串i和串0的重叠部分也要算在dp内(首尾相接)。决策是倒数第二个位置是s中的哪个串。

于是有转移方程:
dp[s][i][t] = max{dp[s-i][x][t']+rep[x,t'][i,t]-rep[x,t'][0,0]+rep[i,t][0,0]}
其中rep是两个各自有特定方向的串最大重叠部分,另外我们规定串0总是正向的。

相关文章

  • uva1204 有趣的游戏

    一些男生女生(一共至少2人)坐成一圈做游戏。游戏做n轮,每轮从任意一个人那里开始,顺时针或逆时针数若干个人(不超过...

  • 有趣的游戏

    “哈哈哈……”广场上一片欢笑声,我们几个小朋友正在进行一场有趣的丢沙包游戏。 游戏开始了,只见我弓着腰,...

  • 有趣的游戏

    每个人都玩过游戏,你看今天我就和我的同学们玩了一个击鼓传花的游戏,可热闹了,已经热闹到其他几个班,都快要投诉...

  • 有趣的游戏

    在我的记忆里,有着很多有趣的小贝壳,其中那一个贝壳最为闪耀,想到这个我就哈哈大笑。 ...

  • 有趣的游戏

    在我的记忆里,有着很多有趣的小贝壳,其中那一个贝壳最为闪耀,想到这个我就哈哈大笑。 ...

  • 有趣的游戏

    文――尹彩霖 在我们身边有很多游戏像星星一样多,比如说有:狼人杀、警察抓小偷还有老鹰抓小鸡等等,许多游...

  • 有趣的游戏

    五.四/陈苗我玩过很多游戏,有捉迷藏,老鹰抓小鸡,扔沙包……可我最喜欢的还是击鼓传花这个游戏。 ...

  • 有趣的游戏

    “哈哈哈……”今天左老师跟我们玩了一个有趣的游戏,叫“击鼓传花”。 嗒嗒嗒随着鼓声游戏开始了,班长敲了几下就停...

  • 有趣的游戏

    每个人都在的小时候玩过游戏,比如捉迷藏,老鹰抓小鸡,警察抓小偷等。今天下午我在玩的时候发生了一件有趣的事情。 ...

  • ♥有趣的游戏

    ■某小学二年级魏川 一天体育课上。美丽的李老师带我们到操场上玩有趣的游戏……老鹰抓小鸡。 老师当母鸡,小明当老鹰,...

网友评论

      本文标题:uva1204 有趣的游戏

      本文链接:https://www.haomeiwen.com/subject/laabcqtx.html