好久没有写题了,感觉思维有些退化,明明是到简单题却交了三遍才过
对于每个评委可以钦定多个人得第一,但是只有P个评委钦点到了真正的第一名
呢么对于真正的第一名他一定被P个评委钦定过
所以我们统计每个人被评委钦定的次数,然后统计哪些人被钦定了P次,最后依次输出即可
好吧为啥我提交了三次了,第一次我统计所以大于等于P次的人,第二次我输了一列,题目要求输出一行
emm,还是自己傻逼
其实我觉得这题可以加强一下难度,增加数据范围,并且不保证数据合法还是可以随便用个log的数据结构维护下的吧
#include <bits/stdc++.h>
using namespace std;
const int N = 1e6 + 5;
int n , m , p , f[N] , cnt ;
vector < int > ans;
inline int read()
{
register int x = 0;
register char ch = getchar();
for( ; ch < '0' || ch > '9' ; ch = getchar() );
for( ; ch >= '0' && ch <= '9' ; x = ( x << 3 ) + ( x << 1 ) + ch - '0' , ch = getchar() );
return x;
}
int main()
{
n = read() , m = read() , p = read();
for( register int i = 1 , k ; i <= n ; i ++ )
{
k = read();
for( register int j = 1 , t ; j <= k ; j ++ )
{
t = read();
f[t] ++;
}
}
for( register int i = 1 ; i <= m ; i ++ )
{
if( f[i] != p ) continue;
cnt ++;
ans.push_back( i );
}
printf( "%d\n" , cnt );
for( auto it : ans ) printf( "%d " , it );
puts("");
return 0;
}
原文地址:https://www.cnblogs.com/Mark-X/p/12347033.html
时间: 2024-10-09 19:53:09