IN
3 1 2
2
1
3
队伍 1 2 3
第一场 2 1 3
第二场 1 3 2
第三场 3 2 1
IN
5 2 4
1
3
2
5
4
队伍 1 2 3 4 5
第一场 2 1 3 5 4
第二场 5 3 2 4 1
第三场 4 2 5 1 3
第四场 1 5 4 3 2
第五场 3 4 1 2 5
观察:第一组数据:开始给的1号队伍的比赛,2,1,3;后来构造出来后,2号队伍比赛:第一场已知,打1号,然后下来是1,3,2和1号队伍纵向顺序一致,只是开头不位置不一样;3号队伍也一样,1,3,2的顺序,从第三场开始的。
第二组数据一样:还是1,3,2,5,4的错位循环。
于是大胆猜测:就是个错为循环过程,每个队伍循环开始打头的位置就是他和给定的M队打的那轮。
代码(真他妈简短):
var n,m,t,qi,i:longint;
a,b:array[1..1000] of longint;
begin
readln(n,m,t);
for i:=1 to n do readln(a[i]);
for qi:=1 to n do if a[qi]=m then break;
for i:=1 to qi-1 do
a[n+i]:=a[i];
for i:=1 to n do
begin if t>=i then b[a[i]]:=a[qi+t-i] else
b[a[i]]:=a[qi+t+n-i];
end;
for i:=1 to n-1 do
write(b[i], );writeln(b[n]);
end.
比如说
5 2 4
1
3
2
5
4
比赛赛程可以是
1 2 3 4 5
---------
2 1 4 3 5
5 3 2 4 1
3 2 1 5 4
4 5 3 1 2
1 4 5 2 3
也可以是
1 2 3 4 5
---------
2 1 3 5 4
5 3 2 4 1
4 2 5 1 3
1 5 4 3 2
3 4 1 2 5
何来唯一之说???