| solved | A | B | C | D | E | F | G | H | I | J | K | L | M |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 4 / 13 | · | · | Ø | · | · | · | O | · | · | O | · | Ø | · |
- O:比赛时通过
- Ø:赛后通过
- !:比赛时尝试了未通过
- ·:比赛时未尝试
REPLY: 不知道是多少次不开导致题了 --Tryna
C. Insertion Sort
solved by Sstee1XD. (-)
题意: 给你三个正整数,,,其中为素数。。现在我们我们约定到的一种排列是几乎已排序的定义如下:其最长上升子序列的长度至少为。现在我们可以将排列的前个数按序排列,问有多少种序列能成为几乎已排序的,将答案 输出。
思路: 首先将序列变成~的顺序排列,然后考虑对这个排列进行变形。
我们考虑前个是~的全排列 ,那么后面数字都会比前面大,我们只要保证其最长上升子序列的长度至少为即可。这一步我们可以选择后面任意一个数字进行插排即可,但是这一步会重复计数。我们先算出,然后考虑重复的情况。首先每个数都会进行一次顺序排列,所以要减去。然后只有一组相邻逆序对的情况也是会重复计数的。例如,我们取出3和4的时候都能达到这种情况,其余情况皆不重复。共有个这种序列,所以也要减去。
接下来考虑前面并不是1k的全排列的情况,我们发现可以用$k+1$去代替其中任意一个数字,然后把这个被替代的数字在后面进行插排,都是合法的。$k+2$之间的数字只能和进行替换,并且只能放在k这个位置上。这样子的方案数是。
最后注意要乘以。
AC代码
1 |
|
G. Best ACMer Solves the Hardest Problem
solved by all.3:49(+1)
题意 给出二维平面上的个点, 每个点都有权值。然后给出次操作,一共有四种操作:加入一个权值为的新点、删除一个点、将到点距离为的点权值加、求到点距离为的点的权值和,记录为并且输出它。以后每次输入的都要对取模加。
题解: 按题意模拟即可,但暴力模拟会,看了看的范围,所以我们预处理一下,将的值存下来。
AC代码
1 |
|
J. How Much Memory Your Code Is Using?
solved by Tryna & Sstee1XD.0:26(+1)
题意: 给出一系列变量的定义,求占用的多少的空间。
题解: 签到题,直接按照题意模拟就好了。
AC代码
1 |
|
K - Let the Flames Begin
solved by Tryna.(-)
题意 本题是一个约瑟夫环的变形,一般的约瑟夫环是求最后一个出局的人的位置,此题是求第个出局的人的位置, 这也很容易由一个递推式得到。如果不了解约瑟夫环,可以先去看看这篇文章:约瑟夫环。
题解: 所以此题的递推式是:$$P[n][m] = (P[n - 1][m - 1] + k)%n$$
但是这题数据范围很大,但又有,这就意味着和必定有一个数字不会很大,所以根据这个分类即可。
- 当小时,暴力就可以。
- 当小时,我们可以将加法转化为减法,因为很小,所以我们需要加一定的次数才能取模,所以我们需要把那个次数求出来,这样就可以大大降低时间复杂度。
AC代码
1 |
|
L. Machining Disc Rotors
solved by Tryna.(-)
题意: 给出一个大圆,然后再给出若干个小圆,这些小圆切割了大圆,求被切割后的几何图形的直径。
题解: 想法很简单,如果被切割后仍存在大圆直径,那么答案就是大圆直径,否则就是最远的两点距离。
对于如何判断是否存在直径可以枚举每个端点,然后求它关于原点的对称点,如果不在任何一个圆内,那么直径存在。
注意其他圆与大圆无交点时答案就是直径
AC代码
1 |
|