2272: [Usaco2011 Feb]Cowlphabet 奶牛文字

Time Limit: 10 Sec  Memory Limit: 128 MB
Submit: 138  Solved: 97
[Submit][Status][Discuss]

Description

Like all bovines, Farmer John's cows speak the peculiar 'Cow'
language. Like so many languages, each word in this language comprises
a sequence of upper and lowercase letters (A-Z and a-z).  A word
is valid if and only if each ordered pair of adjacent letters in
the word is a valid pair.

Farmer John, ever worried that his cows are plotting against him,
recently tried to eavesdrop on their conversation. He overheard one
word before the cows noticed his presence. The Cow language is
spoken so quickly, and its sounds are so strange, that all that
Farmer John was able to perceive was the total number of uppercase
letters, U (1 <= U <= 250) and the total number of lowercase
letters, L (1 <= L <= 250) in the word.

Farmer John knows all P (1 <= P <= 200) valid ordered pairs of
adjacent letters.  He wishes to know how many different valid
words are consistent with his limited data.  However, since
this number may be very large, he only needs the value modulo
97654321.

   约翰的奶牛讲的是别人听不懂的“牛语”。牛语使用的字母就是英文字母,有大小写之分。牛语中存在P个合法的词素,每个词素都由两个字母组成。牛语的单词是由字母组成的序列,一个单词是有意义的充要条件是任意相邻的字母都是合法的词素。
    约翰担心他的奶牛正在密谋反对他,于是最近一直在偷听他们的对话。可是,牛语太复
杂了,他模模糊糊地只听到了一个单词,并确定了这个单词中有U个大写字母,L个小写字
母。现在他想知道,如果这个单词是有意义的,那么有多少种可能性呢?由于这个数字太大
了,你只要输出答案取97654321的余数就可以了。

Input

* Line 1: Three space-separated integers: U, L and P

* Lines 2..P+1: Two letters (each of which may be uppercase or
        lowercase), representing one valid ordered pair of adjacent
        letters in Cow.

第一行:三个用空格隔开的整数:U,L和P,1≤U.L≤250,1≤P<=200

第二行到P+1行:第i+l有两个字母,表示第i个词素,没有两个词素是完全相同的

Output

* Line 1: A single integer, the number of valid words consistent with
        Farmer  John's data mod 97654321.
单个整数,表示符合条件的单词数量除以97654321的余数

Sample Input

2 2 7
AB
ab
BA
ba
Aa
Bb
bB

INPUT DETAILS:

The word Farmer John overheard had 2 uppercase and 2 lowercase
letters. The valid pairs of adjacent letters are AB, ab, BA, ba,
Aa, Bb and bB.

Sample Output

7

HINT

(可能的单词为AabB, Abba, abBA, BAab,BbBb, bBAa, bBbB)

Source

Gold

题解:萌萌哒动规。。。f[i,j,k]表示已经有了i个字母,其中j个是大写的(你要愿意的话弄成小写的也没关系),k表示最后一个字符(注意:大小写不等同!!!故1<=k<=52),这样子的复杂度为O(52(U+L)U),完全可以

(PS:我在想如果出数据的人比较良心的话,万一弄一大堆数据L=0的该怎么办QAQ,更可怕的是万一再弄一大堆U=0的。。。那样子的话如果再加强U、L的话,就能轻松让大部分程序TLE了呵呵,不过这道题里面就算是O(52(U+L)^2)也完全能过,不怕)

 const q=;
type
point=^node;
node=record
g:longint;
next:point;
end;
var
i,j,k,l,m,n:longint;
b:array[..,..] of longint;
c:array[..,..,..] of longint;
a:array[..] of point;
c1,c2:char;p:point;
function callback(ch:char):longint;inline;
begin
if ch>='a' then exit(ord(ch)-ord('a')+) else exit(ord(ch)-ord('A')+);
end;
procedure add(x,y:longint);inline;
var p:point;
begin
new(p);p^.g:=y;
p^.next:=a[x];a[x]:=p;
end;
function min(x,y:longint):longint;inline;
begin
if x<y then min:=x else min:=y;
end; begin
readln(n,m,l);
for i:= to do a[i]:=nil;
fillchar(c,sizeof(c),);
for i:= to l do
begin
readln(c1,c2);
b[i,]:=callback(c1);
b[i,]:=callback(c2);
add(b[i,],b[i,]);
if b[i,]> then c[,,b[i,]]:= else c[,,b[i,]]:=;
end;
for i:= to n+m do
for j:= to min(n,i) do
for k:= to do
begin
p:=a[k];
while p<>nil do
begin
if k> then
begin
if j> then c[i,j,k]:=(c[i,j,k]+c[i-,j-,p^.g]) mod q;
end
else
c[i,j,k]:=(c[i,j,k]+c[i-,j,p^.g]) mod q;
p:=p^.next;
end;
end;
l:=;
for i:= to do l:=(l+c[n+m,n,i]) mod q;
writeln(l);
end.

2272: [Usaco2011 Feb]Cowlphabet 奶牛文字的更多相关文章

  1. 【bzoj2272】[Usaco2011 Feb]Cowlphabet 奶牛文字 dp

    题目描述 Like all bovines, Farmer John's cows speak the peculiar 'Cow'language. Like so many languages, ...

  2. BZOJ2272: [Usaco2011 Feb]Cowlphabet 奶牛文字

    n<=250个大写字母和m<=250个小写字母,给p<=200个合法相邻字母,求用这些合法相邻字母的规则和n+m个字母能合成多少合法串,答案mod 97654321. 什么鬼膜数.. ...

  3. 【BZOJ】【3301】【USACO2011 Feb】Cow Line

    康托展开 裸的康托展开&逆康托展开 康托展开就是一种特殊的hash,且是可逆的…… 康托展开计算的是有多少种排列的字典序比这个小,所以编号应该+1:逆运算同理(-1). 序列->序号:( ...

  4. BZOJ2274: [Usaco2011 Feb]Generic Cow Protests

    2274: [Usaco2011 Feb]Generic Cow Protests Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 196  Solve ...

  5. BZOJ3301: [USACO2011 Feb] Cow Line

    3301: [USACO2011 Feb] Cow Line Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 67  Solved: 39[Submit ...

  6. BZOJ3300: [USACO2011 Feb]Best Parenthesis

    3300: [USACO2011 Feb]Best Parenthesis Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 89  Solved: 42 ...

  7. 3301: [USACO2011 Feb] Cow Line

    3301: [USACO2011 Feb] Cow Line Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 82  Solved: 49[Submit ...

  8. 【USACO2002 Feb】奶牛自行车队

    [USACO2002 Feb]奶牛自行车队 Time Limit: 1000 ms Memory Limit: 131072 KBytes Description N 头奶牛组队参加自行车赛.车队在比 ...

  9. BZOJ3300: [USACO2011 Feb]Best Parenthesis 模拟

    Description Recently, the cows have been competing with strings of balanced  parentheses and compari ...

随机推荐

  1. SQL查询根节点

    /* 标题:查询指定节点及其所有父节点的函数 作者:爱新觉罗.毓华(十八年风雨,守得冰山雪莲花开) 时间:2008-05-12 地点:广东深圳 */ create table tb(id varcha ...

  2. 创建 OVS vlan101 并部署 instance - 每天5分钟玩转 OpenStack(139)

    前面我们创建了 OVS vlan100 并部署了 instance,今天继续创建 vlan101. subnet IP 地址为 172.16.101.0/24. 底层网络发生了什么变化 Neutron ...

  3. Top K问题的两种解决思路

    Top K问题在数据分析中非常普遍的一个问题(在面试中也经常被问到),比如: 从20亿个数字的文本中,找出最大的前100个. 解决Top K问题有两种思路, 最直观:小顶堆(大顶堆 -> 最小1 ...

  4. Angular企业级开发(6)-使用Gulp构建和打包前端项目

    1.gulp介绍 基于流的前端自动化构建工具,利用gulp可以提高前端开发效率,特别是在前后端分离的项目中.使用gulp能完成以下任务: 压缩html.css和js 编译less或sass等 压缩图片 ...

  5. C/C++中的联合体

    C/C++中的联合体 利用union可以用相同的存储空间存储不同型别的数据类型,从而节省内存空间.当访问其内成员时可用"."和"->"来直接访问. 当多个 ...

  6. 支撑Pinterest日均1000+次试验的A/B测试平台揭秘

    编者按:本文详细介绍了 Pinterest 内部A/B测试平台的搭建过程,对于无论是有技术能力和资源想要自建A/B测试系统的大公司,还是想在业务中引入第三方A/B测试方法和工具的中小公司都极具参考意义 ...

  7. wpf后置代码中的Grid布局以及图片路径的设置

    之前用Grid练习连连看布局时,遇到了几个困惑.此次就把当时的一些收获写出来,供以后翻看. 图片路径可能比较常用,所以就写在第一个了. 在xaml中,设置图片非常简单,只要把图片拷贝到资源目录(这里假 ...

  8. 【Zookeeper】源码分析之请求处理链(二)

    一.前言 前面学习了请求处理链的RequestProcessor父类,接着学习PrepRequestProcessor,其通常是请求处理链的第一个处理器. 二.ZooKeeper源码分析 2.1 类的 ...

  9. C#开发人员应该知道的13件事情

    本文讲述了C#开发人员应该了解到的13件事情,希望对C#开发人员有所帮助. 1. 开发过程 开发过程是错误和缺陷开始的地方.使用工具可以帮助你在发布之后,解决掉一些问题. 编码标准 遵照编码标准可以编 ...

  10. Zigbee折腾之旅:(一)CC2530最小系统

    最近在倒腾Zigbee,准备参加物联网全国大赛,学校有给我们发Zigbee开发板,但是对于喜欢折腾的我来说,用开发板还是不过瘾,起码也得知道怎么去画一块板子.于是乎,在百度一番后就有了下面这篇文章. ...