主题:有关王小明的4道题,哪位高手来帮帮忙
我是菜鸟,这里有4道题,哪位高手帮我做一下,感激不尽.... ..
王小明的聚会
输入文件:dinner.in
输出文件:dinner.out
时限:1s
描述
王小明高中毕业了,王小明要请他的同学吃饭!
小明在饭店订了4桌饭菜。
小明邀请了N个同学,每位同学有一定的食量A,小明希望能合理的安排同学的座位,使得每一桌的总食量相等。
输入
第1行:1个整数T,表示测试数据组数
第2至T+1行:一个整数N,表示小明邀请的同学数量,接下来N个正整数A[i],表示各位同学的食量。
输出
T行:“yes”或“no”,“yes”表示小明可以做出使得每桌总食量相等的安排,“no”表示不能。
样例输入:
3
4 1 1 1 1
5 10 20 30 40 50
8 1 7 2 6 4 4 3 5
样例输出:
yes
no
yes
数据范围
对于100%的数据,T<=5,4<=N<=20,A[i]<=10000;
王小明安排座位
输入文件:seat.in
输出文件:seat.out
时限:1s
描述:
小明迟到了。
当小明进入餐厅时,他发现同学们都已经到齐了,并且围着一张圆桌坐好了。
可是,同学们没有按照小明所期望的顺序坐。
于是小明开始帮大家换座位。
每一秒钟,相邻的两个同学可以交换座位。
现在要使得大家的顺序颠倒,即:对于每位同学,原来与他相邻、坐在他左边的人,坐到了与他相邻的右边的位置,而原来与他相邻、坐在他右边的同学,坐到了与他相邻的左边的位置。
问最少要过多少秒,可以完成座位的调换。
输入
仅1行:1个整数N,表示王小明同学的数量。
输出
仅1行:一个整数Min,表示最少所花的时间。
样例输入1:
4
样例输出1:
2
样例输入1:
5
样例输出1:
4
样例输入1:
6
样例输出1:
6
数据范围
对于30%的数据,1<=N<=20;
对于100%的数据,1<=N<=30000。
王小明的石头剪刀布
输入文件:mus.in
输出文件:mus.out
时限:1s
描述:
在聚会上,小明突然想玩剪刀石头布。
于是小明决定让大家一起来玩剪刀石头布。
所有同学站成一圈,相邻的两个同学可以进行石头剪刀布的角逐,输的同学将离开圈子,游戏不断进行下去,直到只剩下一个人的时候停止,最后留下的人胜出。
问:那些人可能胜出?
输入
第1行:1个整数N,表示王小明同学的数量。(同学们的标号为1至N)
接下来是一个N*N的01矩阵A。
A[i][j]=1表示i同学能战胜j同学,A[i][j]=0表示i同学会输给j同学。
输出
第1行:一个整数M,表示可能胜出的人数。
第2-M+1行:每行一个整数No,可能胜出的人的编号(按升序排列)。
样例输入:
7
1111101
0101100
0111111
0001101
0000101
1101111
0100001
样例输出:
3
1
3
6
数据范围
对于30%的数据,1<=N<=10;
对于100%的数据,1<=N<=100。
王小明的兄弟姐妹
输入文件:friend.in
输出文件:friend.out
时限:1s
描述:
在聚会上,小明想到相处了3年的同学很快就要分开了,于是十分感慨。
小明决定让大家来玩个投票游戏。
所有人各自写下最喜欢的同学的名字,每人写至多三个不同的名字,并且不能写自己。于是问题产生了——最大的“兄妹团”有多大?
“兄妹团”是一个由若干名同学组成的集合,在这个集合里的每一位同学,必须满足:
1、他参与了投票
2、他所喜欢的人必须全部在这个集合里面
3、他被集合中至少一个人喜欢
输入
第1行:2个整数N,M;表示王小明同学的数量,M表示参与投票的同学的数量。
第2至M+1行:两个整数I,S,I表示该同学的编号,S表示该同学写下的名字数(1<=S<=3)。接下来S个整数,表示该同学写下的同学的标号。
(同学们的标号为1至N)
输出
仅1行:一个整数Max,表示最大的“兄妹团”的人数。
样例输入:
12 9
1 2 4 8
2 3 9 12 3
4 1 8
5 2 1 6
6 1 5
7 1 8
8 1 1
10 3 8 7 6
12 1 10
样例输出:
5
数据范围
对于30%的数据,1<=N<=20;
对于100%的数据,1<=N<=10000,0<=M<=N。
王小明的聚会
输入文件:dinner.in
输出文件:dinner.out
时限:1s
描述
王小明高中毕业了,王小明要请他的同学吃饭!
小明在饭店订了4桌饭菜。
小明邀请了N个同学,每位同学有一定的食量A,小明希望能合理的安排同学的座位,使得每一桌的总食量相等。
输入
第1行:1个整数T,表示测试数据组数
第2至T+1行:一个整数N,表示小明邀请的同学数量,接下来N个正整数A[i],表示各位同学的食量。
输出
T行:“yes”或“no”,“yes”表示小明可以做出使得每桌总食量相等的安排,“no”表示不能。
样例输入:
3
4 1 1 1 1
5 10 20 30 40 50
8 1 7 2 6 4 4 3 5
样例输出:
yes
no
yes
数据范围
对于100%的数据,T<=5,4<=N<=20,A[i]<=10000;
王小明安排座位
输入文件:seat.in
输出文件:seat.out
时限:1s
描述:
小明迟到了。
当小明进入餐厅时,他发现同学们都已经到齐了,并且围着一张圆桌坐好了。
可是,同学们没有按照小明所期望的顺序坐。
于是小明开始帮大家换座位。
每一秒钟,相邻的两个同学可以交换座位。
现在要使得大家的顺序颠倒,即:对于每位同学,原来与他相邻、坐在他左边的人,坐到了与他相邻的右边的位置,而原来与他相邻、坐在他右边的同学,坐到了与他相邻的左边的位置。
问最少要过多少秒,可以完成座位的调换。
输入
仅1行:1个整数N,表示王小明同学的数量。
输出
仅1行:一个整数Min,表示最少所花的时间。
样例输入1:
4
样例输出1:
2
样例输入1:
5
样例输出1:
4
样例输入1:
6
样例输出1:
6
数据范围
对于30%的数据,1<=N<=20;
对于100%的数据,1<=N<=30000。
王小明的石头剪刀布
输入文件:mus.in
输出文件:mus.out
时限:1s
描述:
在聚会上,小明突然想玩剪刀石头布。
于是小明决定让大家一起来玩剪刀石头布。
所有同学站成一圈,相邻的两个同学可以进行石头剪刀布的角逐,输的同学将离开圈子,游戏不断进行下去,直到只剩下一个人的时候停止,最后留下的人胜出。
问:那些人可能胜出?
输入
第1行:1个整数N,表示王小明同学的数量。(同学们的标号为1至N)
接下来是一个N*N的01矩阵A。
A[i][j]=1表示i同学能战胜j同学,A[i][j]=0表示i同学会输给j同学。
输出
第1行:一个整数M,表示可能胜出的人数。
第2-M+1行:每行一个整数No,可能胜出的人的编号(按升序排列)。
样例输入:
7
1111101
0101100
0111111
0001101
0000101
1101111
0100001
样例输出:
3
1
3
6
数据范围
对于30%的数据,1<=N<=10;
对于100%的数据,1<=N<=100。
王小明的兄弟姐妹
输入文件:friend.in
输出文件:friend.out
时限:1s
描述:
在聚会上,小明想到相处了3年的同学很快就要分开了,于是十分感慨。
小明决定让大家来玩个投票游戏。
所有人各自写下最喜欢的同学的名字,每人写至多三个不同的名字,并且不能写自己。于是问题产生了——最大的“兄妹团”有多大?
“兄妹团”是一个由若干名同学组成的集合,在这个集合里的每一位同学,必须满足:
1、他参与了投票
2、他所喜欢的人必须全部在这个集合里面
3、他被集合中至少一个人喜欢
输入
第1行:2个整数N,M;表示王小明同学的数量,M表示参与投票的同学的数量。
第2至M+1行:两个整数I,S,I表示该同学的编号,S表示该同学写下的名字数(1<=S<=3)。接下来S个整数,表示该同学写下的同学的标号。
(同学们的标号为1至N)
输出
仅1行:一个整数Max,表示最大的“兄妹团”的人数。
样例输入:
12 9
1 2 4 8
2 3 9 12 3
4 1 8
5 2 1 6
6 1 5
7 1 8
8 1 1
10 3 8 7 6
12 1 10
样例输出:
5
数据范围
对于30%的数据,1<=N<=20;
对于100%的数据,1<=N<=10000,0<=M<=N。