请牛人帮忙,一道pascal题目

来源:百度知道 编辑:UC知道 时间:2024/05/23 00:17:50
pascal题目 “比赛”
这是vijos上的题
背景 Background
为了给好友老鹰送上一份生日大礼,土豆国王召集土豆王国的所有子民,让他们组建N支篮球队,进行单循环比赛(任意两队之间比赛一场)。这N支球队需要安排一个比赛日程表,庞大的数据量,使得土豆国王头疼不已,很多土豆大臣都累成了土豆泥。

描述 Description
土豆国王把这个任务交给你,请你帮他安排一个日程表。
特别注意:比赛分成N轮进行,每轮比赛都有N div 2场比赛同时进行、并有一支球队轮空,即:每支球队共参加N-1场比赛。
保证数据无多解情况。

输入格式 Input Format
第一行两个整数N(3<=N<=499,N为奇数),M(1<=M<=N),T(1<=T<=N),其中N表示球队数量。
第二行到第N+1行,每行一个正整数,第i行表示编号为M的球队第i-1轮的对手球队的编号,如果第i行为M表示该队该轮轮空。

输出格式 Output Format
1行共N个正整数。输出第T轮的所有比赛,第i个整数表示编号为i的球队的对手编号。如果第i个整数为i,则表示该队该轮轮空。
同一行相邻两个整数之间,用一个空格符间隔。

一定要具体!!!!!!!!!!!!!!!!!!!1

xc_bb

x是读入数组
y【x【i】】:=i (i:=1 to n)

第t天第i队的对手是
x[(t-y[i]+y[m]+n-1)mod n+1]

或读到第t天,然后倒序输出
设m第t天的对手a
那m-1的对手就是 a+1
m+1的对手就是 a-1

此题有多种推法,但对于一般的数据,结果往往不同,
题目的解限制为唯一解,这对数据要求太高
以致于数据呈现很明显的规律,
很多错误的方法也能AC

正确的算法应该能证出以下2点
1、同一支队的对手没有重复
2、同一天的对手的对手是自己(这个满足,那同一天就没有队伍会重复)

用分治法,在南大出版社的高级本上有类似的一道;在分治那一章。