1、NOIP2005 第3题,篝火晚会By:张萌,题目描述,佳佳刚进高中,在军训的时候,由于佳佳吃苦耐劳,很快得到了教官的赏识,成为了“小教官”。在军训结束的那天晚上,佳佳被命令组织同学们进行篝火晚会。一 共有n个同学,编号从1到n。一开始,同学们按照1,2,n的顺序坐成一圈,而实际上每个人都有两个最希望相邻的同学。如何下命令调整同学的次序, 形成新的一个圈,使之符合同学们的意愿,成为摆在佳佳面前的一大难题。 佳佳可向同学们下达命令,每一个命令的形式如下: (b1, b2,. bm -1, bm),题目描述,这里m的值是由佳佳决定的,每次命令m的值都可以不同。这个命令的作用是移动编号是b1,b2,
2、 bm 1,bm的这m个同学的位置。要求b1换到b2的位置上,b2换到b3的位置上,要求bm换到b1的位置上。 执行每个命令都需要一些代价。我们假定如果一个命令要移动m个人的位置,那么这个命令的代价就是m。我们需要佳佳用最少的总代价实现同学们的意愿,你能帮助佳佳吗? 对于30%的数据,n = 1000; 对于全部的数据,n = 50000。,算法分析,初始状态:,目标状态:A1,A2,A3,A4,A5.AN,算法分析,首先根据读入数据判断是否可能生成一个要求的序列。 若存在,则求出目标序列 求M的值,一个例子,想一想,在已知目标的情况下应该如何求M的值呢?,初始:1,2,3,4,5 目标:3,5,4,1,2,一个例子,易证得M=所有可能的顺序中,不在位置上的人员个数的最小值。,具体分析,S=3,3,3,4,2 则在这种情况下,我们很容易看出1,2,3可同时达到目标状态(最多)。则可计算出M=N-3=2,1,2,3,4,5 3,5,4,1,2,