切换到宽版
  • 4979阅读
  • 0回复

帮帮忙! [复制链接]

上一主题 下一主题
离线neil
 
只看楼主 正序阅读 0 发表于: 2010-06-27
招聘(hr.pas)
描述
2010 年,A公司从全国各地的高校中招来了众多的优秀人才,他们各个身怀绝技,有精通Java(J)的,有用Python(P)的,有写C++(C) 的,我们用0~50中的整数值分别表示51项不同的技能
招聘之后各个Team的Leader就开始了疯狂的抢人工作,HR今年给出了这样的规则:
a. 所有的Leader和刚入职的新员工按照HR给定的顺序站成一排,从左到右,依次编号为1~N
b. 每个Leader可以挑选任意名新员工
c. 每个新员工只能被一个Leader挑选,且必须被一个Leader选中
d. 某一个新员工如果被某一个Leader选中,那么该员工与该Leader之间的其它新员工都必须被该Leader选中
e. 如果一个新员工A与某一个Leader B之间还存在着另外一名Leader C,那么新员工A不能被Leader B选中的
f. 一个挑选需求表示:每个Leader选中的人中具备各个特定技能的人数不少于某一个值
现在你已经知道了新员工和Leader的排列顺序,每个新员工所具备的技能,以及每个Leader的挑选需求,请你求出可能的挑选方案数量。
请你求出当给定大家的排列顺序后可能的分组方法总数。  

输入格式(hr.in)
第一行为一个正整数N,表示新员工和Leader的总数。  
接下来的2到N+1行分别描述了每个人的属性。其中第i行,描述编号为i-1的人的属性:
该行的第一个数字为一个0或者1,1表示这个人是Leader,而0表示这个人是新员工。
如果这个人是Leader的话,该行首先包含一个整数M,表示该Leader有M个挑选需求,该行接下来的2*M个数分别表示M个挑选需求,其中每连续的两个整数C,D表示一个挑选需求,即要求掌握技能C的新员工必须达到D名。
如果这个人是新员工,则该行首先包含一个整数L,表示该新员工拥有的技能数量,接下来的L个整数表示该员工拥有的各项技能。
其中 1 <= N <= 1000, 0 <= M <= 51, 0<= C <=50, 0 <= D <= N, 0 <= L <= 51  

输出格式(hr.out)
仅一个整数,表示分组方案的总数对9997取模的值。  

输入样例
7
0 2 1 2
0 1 2
1 2 2 2 1 1  
0 1 2
0 1 3
1 2 2 1 4 1
0 2 2 4

输出样例
3
快速回复
限100 字节
 
上一个 下一个