1. 程式人生 > >Good Bye 2018 ABCD題解

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留坑待補。