ARC149
没有 F
题
A A A
-
题意:
给定
n,m
,找到一个数字长n
位,每位数字都相同且是m
的倍数 -
题解:
直接模拟
B B B
-
题意:
给定序列
A,B
,每次可以同时交换 A i , A j A_i,A_j Ai,Aj 与 B i , B j B_i,B_j Bi,Bj,求lis(A)+lis(B)
的最大值 -
题解:
对于每次交换最多对一个序列的
lis
的长度影响是1
可以通过 n − l i s ( A ) n-lis(A) n−lis(A) 次交换让
A
变成 1 , 2 , 3 ⋯ n 1,2,3\cdots n 1,2,3⋯n,也就是每次交换都让A
的lis
加一,但不一定会让B
的lis
长度减少,故把A
排成单调上升的一定最优
C C C
-
题意:
构造 n × n n\times n n×n 的网格图,每个格子中的数为 1 ∼ n 2 1\sim n^2 1∼n2 中的一个且每个数字均不相同,使两个相邻的数字之和不为质数
-
题解:
奇数与奇数、偶数与偶数一定满足条件,只需要考虑奇数与偶数间的情况即可
如果有奇数和偶数的格子相邻,令这两个数一定是
3
的倍数,最小化这种情况出现(一半奇数一半偶数,只让中间的为奇偶数交界),最多有 n n n 个这样的交界,让这2n
个格子都是3
的倍数即可n < 6 n<6 n<6 的情况打表即可
D D D
-
题意:
给定
n
个数和m
个 d i d_i di,要求对每一个数做以下处里-
x > 0 x>0 x>0,使 x − d i x-d_i x−di
-
x = 0 x=0 x=0,不变
-
x < 0 x<0 x<0,使 x + d i x+d_i x+di
求这
n
个数最后结果,若中途变成0
输出变成0
的时间 -
-
题解:
首先考虑到对于
x
与-x
,最终结果为相反数或同时变成0
这样就直接维护一段的情况,从
0
将整个序列分成正负两部分,每次将长度较少的一半并到较长的一半上处理即可
E E E
-
题意:
有一个环,第 i i i 次操作将 a i , a ( i + 1 ) m o d n ⋯ a ( i + m − 1 ) m o d n a_{i},a_{(i+1)\bmod n}\cdots a_{(i+m-1)\bmod n} ai,a(i+1)modn⋯a(i+m−1)modn 排序,给定进行次数和操作序列长度,已知最终序列求初始序列的情况数
-
题解:
转化一下操作,改为有一个大小为
m-1
集合和一个队列,每次把队首加入集合,并且将集合最小元素加入队尾这样就把操作固定为只有
n-m+1
次了,因为操作小于n-m+1
次的可以将没有进入过集合的数字删掉,大于n-m+1
次的操作相当于就是后面的队列一直翻转还原到只进行
n-m+1
次后的状态,考虑有多少种原来的方案可以达成这样的情况设现在为 { L } ( R ) \{L\}(R) {L}(R),初始为 { X } ( Y ) \{X\}(Y) {X}(Y)
若有 R i − 1 > R i R_{i-1}>R_i Ri−1>Ri,则说明 R i R_i Ri 这个数一定在加入集合的瞬间被弹出了,故有 Y i = R i Y_i=R_i Yi=Ri,故需要把 R R R 中这些数去掉,改为单调递增的
考虑剩余的情况
若 L L L 不为 ( n − m + 1 ) ∼ n (n-m+1)\sim n (n−m+1)∼n 这样的答案一定为
0
对于 R i R_i Ri,初始可能在 X X X 集合或者在 Y 1 ∼ i Y_{1\sim i} Y1∼i,处理完 R R R 后把 L L L 中所有数字全排列即可,故情况数为 m R s z × ( m − 1 ) ! m^{Rsz}\times (m-1)! mRsz×(m−1)!。