【模拟】pjesma(jzoj 1151)

版权声明:欢迎借鉴,谢绝抄搬。 https://blog.csdn.net/ssllyf/article/details/86703176

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++;//关键字+1
	  	  	  	p[j]=1;//记录
	  	  	  	break;//退出
			  }
		if (ans==t)//判断是否到目标
		{
			printf("%d",i);//输出
			break;
		}
	  }
} 

猜你喜欢

转载自blog.csdn.net/ssllyf/article/details/86703176