Good Bye 2018 ABCD题解

掉分场。。。大神太多。。。自己太菜。。。过了3题电脑没电了。。。挂机一个小时。。。rank3000+。。。掉了37分。。。

A:给你三个物品的数量,你必须选尽可能多的物品数量,使第一件物品的数量=第二件物品的数量-1=第三件物品的数量-2。

直接讨论一下哪样物品数量最少,或者暴力for枚举都行。

B:二维平面,给你n个点的坐标,再给你n个方向,保证存在一种方案,使每个点对应一个方向,且每个点的坐标值加上方向指向同一个点。

两种思路,第一种,直接累加所有的x和y值,然后分别除n。

第二种,对点和方向分别进行从小到大、从大到小排序,第一个坐标+第一个方向就是答案。

C:n个人围成一圈(依次编号1~n),从第一个人开始报数,报完后左边第k个人报数,问k从1到n的情况下报数的人的编号总和可能是多少。从小到大依次输出。

直接求出n的所有因子。然后这些因子就可以生成相应的报数集合,报数人的编号从1开始构成等差数列。算算小于等于n的是第几项,再用求和公式求一下和,扔set里面最后输出即可。

注意k=1和k=n的情况。

D:

给你一个数n,对于n生成的全排列依次接起来共n*(n-1)!个数,问你有多少个子区间和为n*(n+1)/2。输出答案mod998244353

两种方法,第一种,打表找规律,发现a[i]=i*(a[i-1]+(i-1)!-1),然后取个模。

第二种,通过观察排列,发现对于每个排列,当这个排列的后k个是递减序列时,后一个排列的n-k个数无法和这k个数构成1~n。

所以问题转化成了对k(k=1,2,...,n-1)求有多少个递减序列。。。因此答案就是

n*n!-\sum_{k=1}^{n-1}\left ( \frac{n!}{k!} \right )

推荐一篇不错的题解:https://www.cnblogs.com/si-rui-yang/p/10203170.html

EFGH留坑待补。

猜你喜欢

转载自blog.csdn.net/LSD20164388/article/details/85543905