簽到題:數鴨子

題面:

TT來到一個小湖邊,看到了許多在湖邊嬉戲的鴨子,TT頓生羨慕。此時他發現每一隻鴨子都不一樣,或羽毛不同,或性格不同。TT在腦子裏開了一個map<鴨子,整數> tong,把鴨子變成了一些數字。現在他好奇,有多少隻鴨子映射成的數的數位中不同的數字個數小於k。

輸入第一行包含兩個數n,k,表示鴨子的個數和題目要求的k。
接下來一行有n個數,aia_i,每個數表示鴨子被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;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章