现有K个整数集合,第i个集合有Sumi个元素。
集合中的数都为正数,且不大于N。 现有定义集合A与集合B相似;
1.B与A相似;
2.将A集合删去一个元素,或更改一个元素的值之后A集合与B集合相等。现要将K个集合分成至多M组(M>N),使得每一组内的集合互不相似。要求你给出一种合法的方案。如果无解请输出“impossible”。
输入文件第一行有三个数N,K,M,意义如题目所述。
接下来有K行,每行第一数Sum表示序列长度。之后Sum个数为些集合的元素。
输出文件有K个数,表示每个集合(按输入顺序)被分到的组的编号(1~M)。
8 20 12 5 1 3 5 6 4 5 1 3 5 6 3 4 5 6 3 3 4 5 6 3 4 4 4 6 5 8 4 7 7 7 7 3 7 7 7 2 2 2 3 2 2 7 3 1 2 3 3 1 2 4 10 1 2 3 4 5 6 7 8 7 6 10 8 7 6 5 4 3 2 1 2 1 20 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8 1 3 5 7 5 4 6 4 6 4 5 6 4 6 4 6 6 6 6 6 6 6 6 3 6 6 6 1 1 1 2
2 1 9 1 6 2 4 5 3 7 8 5 4 8 7 9 1 1 2 3
对于30%的数据满足N≤10,M≤2,K≤10。
对于100%的数据满足N≤100,M≤100,K≤50000,Sum≤100。
#include<algorithm> #include<iostream> #include<cstring> #include<cstdio> #include<cmath> #include<queue> 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; } printf("%d\n",u%(n+1)+1); } return 0; }
原文:https://www.cnblogs.com/xiongchongwen/p/11845928.html