本文主要是介绍【模拟】pjesma(jzoj 1151),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
pjesma
题目大意:
一首歌放出m个单词,M某知道n个关键词,当关键词放出一半以上时,M某就知道这是哪首歌,问在放出第几个单词时,M某知道这首歌是哪首歌
样例输入
3
sedam
gladnih
patuljaka
7
sedam
dana
sedam
noci
sedam
gladnih
godina
样例输出
6
数据范围限制
1≤N≤50
1≤M≤10 000
歌名和专辑里的所有单词由1到15个小写英文字母组成。
注:测试数据将会使得Mirko总能从专辑里猜出歌曲名。
提示
样例解释:
某首歌的单词数目为3个,而题目:“某首歌播放出至少一半歌词的时候猜出歌名”,所以需要前两个单词均出现后,可以猜出是在专辑中的第6个位置。
解题思路:
直接模拟每一个单词的播出,然后判断是否在关键词内,就ans++,当ans大于一半时就输出,退出
#include<cstdio>
#include<iostream>
#include<string>
#include<cstring>
using namespace std;
int ans,t,n,m,p[55];
string str[55],st;
int main()
{scanf("%d",&n);for (int i=1;i<=n;++i)cin>>str[i];//输入每个关键字scanf("%d",&m);t=n/2+n%2;//单数时要+1(3/2=1,但要有2个),也就是加余数for (int i=1;i<=m;++i){cin>>st;//输入当前单词for (int j=1;j<=n;++j)if (!p[j])//没出现过if (str[j]==st)//关键字出现{ans++;//关键字+1p[j]=1;//记录break;//退出}if (ans==t)//判断是否到目标{printf("%d",i);//输出break;}}
}
这篇关于【模拟】pjesma(jzoj 1151)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!