題面:
TT來到一個小湖邊,看到了許多在湖邊嬉戲的鴨子,TT頓生羨慕。此時他發現每一隻鴨子都不一樣,或羽毛不同,或性格不同。TT在腦子裏開了一個map<鴨子,整數> tong,把鴨子變成了一些數字。現在他好奇,有多少隻鴨子映射成的數的數位中不同的數字個數小於k。
輸入第一行包含兩個數n,k,表示鴨子的個數和題目要求的k。
接下來一行有n個數,,每個數表示鴨子被TT映射之後的值。
輸出一行,一個數,表示滿足題目描述的鴨子的個數。
無行末空格
sample input:
6 5
123456789 9876543210 233 666 1 114514
sample output:
4
數據組成
限制:1s 256MB
注意:
- 本題思路較爲簡單,注意後續數據點的數據範圍,選定合適的方式進行數據的存儲
- AC之後,在某些VJ上重新提交代碼會出現在後面的數據點上TLE的情況
- 這是使用了STL的原因,使用STL會增加複雜度,需要注意題目的限時如果是1S,時間複雜度逼近1e8的時候,那就需要注意常熟問題
- 由於在讀入string的時候使用了cin,所以準備通過關同步來解決TLE問題,但是隻增加ios::sync_with_stdio(false)會出現WA的錯誤,原因是關同步只能和cin,cout一起用,不能和scanf,printf一起亂用
#include <stdio.h>
#include<iostream>
#include<cstring>
#include<string>
using namespace std;
int main()
{
ios::sync_with_stdio(false);
int n,k;
string s;
bool flag[10];
//scanf("%d %d",&n,&k);
cin>>n>>k;
int count;
int ans=0;
for(int i=0;i<n;i++)
{
cin>>s;
memset(flag,false,10);
long long length=0;
length=s.length();
//cout<<length<<endl;
count=0;
for(long long j=0;j<length;j++)
{
if(flag[s[j]-'0']==false)
{
flag[s[j]-'0']=true;
count++;//這個數沒有出現過,count++;
}
if(count>=k)
break;
if(j==length-1&&count<k)
ans++;
}
}
//printf("%d\n",ans);
cout<<ans<<endl;
return 0;
}