USACO铜组测试2解题报告
1.奶牛唱歌
问题描述
一个鲜为人知的事实是,奶牛拥有自己的文字:「牛文」。牛文由 26 个字母 ‘a’ 到 ‘z’ 组成,但是当奶牛说牛文时,可能与我们所熟悉的 ‘abcdefghijklmnopqrstuvwxyz’ 不同,她会按某种特定的顺序排列字母。
为了打发时间,奶牛 Bessie 在反复哼唱牛文字母歌,而 Farmer John 好奇她唱了多少遍。
给定一个小写字母组成的字符串,为 Farmer John 听到 Bessie 唱的字母,计算 Bessie 至少唱了几遍完整的牛文字母歌,使得 Farmer John 能够听到给定的字符串。Farmer John 并不始终注意 Bessie 所唱的内容,所以他可能会漏听 Bessie 唱过的一些字母。给定的字符串仅包含他记得他所听到的字母。
输入格式
输入的第一行包含 26 个小写字母 ‘a’ 到 ‘z’ 的牛文字母表顺序。下一行包含一个小写字母组成的字符串,为 Farmer John 听到 Bessie 唱的字母。字符串的长度不小于 1 且不大于 1000。
输出格式
输出 Bessie 所唱的完整的牛文字母歌的最小次数。
输入样例
abcdefghijklmnopqrstuvwxyz
mood
输出样例
3
样例说明
在这个样例中,牛文字母表与日常的字母表的排列一致。
Bessie 至少唱了三遍牛文字母歌。有可能 Bessie 只唱了三遍牛文字母歌,而 Farmer John 听到了以下被标记为大写的字母。
abcdefghijklMnOpqrstuvwxyz
abcdefghijklmnOpqrstuvwxyz
abcDefghijklmnopqrstuvwxyz
测试点性质
测试点 2-5 中,牛文字母表与日常的字母表相同。
测试点 6-10 没有额外限制。
问题分析
枚举Farmer John听到的字母,若后一个字母的顺序比前一个靠后则说明是在同一遍字母歌中听到的
代码实现
#include <bits/stdc++.h>
using namespace std;
string s,d;
int ans=1;
struct nod{
int id;
char p;
};//本来想用p记录字母歌中的字母的,但是后来没用到(
nod a[250];
int main(){
//freopen("herd.in","r",stdin);
//freopen("herd.out","w",stdout);
cin>>s;
cin>>d;
for(int i=0;i<s.size();i++){
a[s[i]].id

本文是关于USACO铜组编程竞赛的解题报告,详细解析了三个问题:奶牛唱歌、照片分组和牛舍安排。在奶牛唱歌问题中,求解最少重复唱完整牛文歌的次数;照片分组则要求最大分组数,使得奶牛品种编号和按奇偶交替;牛舍安排问题关注不同奶牛如何根据高度匹配牛棚。每个问题都包含了问题描述、输入输出格式、样例和解决方案。
最低0.47元/天 解锁文章
656

被折叠的 条评论
为什么被折叠?



