题解 P1810 【集合分组_NOI导刊2011提高(01) 】

· · 题解

我们可以发现,对于两个相似的集合,其和的差值绝对是0-n之间的,所以,如果我们将其%n+1,结果绝对不等,那么换而言之,%的结果相等的绝对不相似,那么我们就将%的结果相等的放在一个集合里就可以了,集合编号为%的结果+1(因为如果会出现%的结果为0的情况)

代码

#include<iostream>
#include<cstdio>
using namespace std;
int n,m,k;
int main()
{
    cin>>n>>k>>m;
    for(int i=1;i<=k;i++)
    {
        int a,u=0,c;
        cin>>a;
        for(int j=1;j<=a;j++)cin>>c,u+=c;
        cout<<u%(n+1)+1<<endl;
    }
    return 0;
}