loj#P2747. 「CTSC2011」排列

「CTSC2011」排列

题目描述

沫沫很喜欢找规律填数字,譬如 1,4,7,(  ),1,4,7,(\ \ ), \cdots,相邻的数相差为 33,括号中的数应为 1010;又如 3,6,12,(  ),3,6,12, (\ \ ), \cdots ,每个数是前一个数的两倍,括号中的数应为 2424

由于常年玩这种游戏,沫沫厌倦了等差数列与等比数列。当看到数列 1,2,,n1, 2, \cdots ,n 时,她想尽量小的改变其顺序使得不存在公差为 AA 或者公比为 BB 的子列。

具体地,给定整数 n,A,Bn, A, B,求一个 11nn 的排列 P=(P1,P2,,Pn)P = (P_1, P_2, \cdots , P_n),满足 i,j{1,2,,n}\forall i, j \in \{1, 2, \cdots , n\},若 i<ji \lt jPi<PjP_i \lt P_j,则 PjPi+AP_j\not = Pi + APjPi×BP_j \not = P_i \times B。排列 PP 保留原有顺序的程度 SS 定义为:

S=1i<jn,Pi<Pj(PjPi)S=\sum_{1\le i\lt j\le n,P_i\lt P_j} (P_j-P_i)

请你在满足前述要求的前提下,使得 SS 的值尽量大。

输入格式

第一行包含三个正整数 n,A,Bn, A, B,意义如前所述。相邻的数之间用一个空格隔开。

输出格式

第一行包含 nn 个整数,为你求得的排列 PP,相邻的数之间用空格隔开。

4 3 2
4 2 1 3

数据范围与提示

评分方式

每个测试点单独评分。

对于每一个测试点,如果你的输出不合法,如文件格式错误、输出的解不符合要求等,该测试点得 00 分。
否则设你输出的排列对应 SS 值为 aa,我们提供的排列对应 SS 值为 bb,你在该测试点的得分如下:

  • 如果 aba\ge b,得 1010 分;
  • 否则得分为:
$$\max \{ \lfloor 10\times (\exp (\frac{a}{b})-2)\rfloor,1\} $$

数据规模

总共 1010 个测试点,数据范围满足:

测试点编号 nn AA BB
11 30\le 30 n\le n
22 60\le 60 AmodB0A\bmod B\not =0 4\ge 4
33 70\le 70 5\ge 5
44 80\le 80 6\ge 6
55 90\le 90 7\ge 7
66 n\le n =1=1
7,87,8 5\le 5 n\le n
99 =60=60 =21=21 =3=3
1010 =90=90 =18=18 =2=2

在所有输入数据中,AABB 均为不超过 nn 的正整数。