2020_CCPC长春L题 Coordinate Paper Exgcd贪心

2020 CCPC Changchun gym102832L

gzh
ewm
题意
链接:点我点我
你需要构造出一个长度为 (n) 的序列满足以下三个条件:

  1. (a_ige 0)
  2. ((sum_{i=1}^na_i)=s)
  3. 对于任意 (ige 2,; a_i=a_{i-1}+1) 或者 (a_i=a_{i-1}-k)

(1le n,kle 1e5,1le sle 1e18)

思路
首先假设当 (ige 2) 的时候恒定有 (a_i=a_{i-1}+1) 成立,现在需要选出几个特殊的下标 (i)(a_i=a_{i-1}-k) ,其他下标依然满足 (a_i=a_{i-1}+1)

如果第 (i) 个数转为特殊下标的话,序列的权值和会减少 ((n-i+1)*(k+1)) .
修改操作只会让序列权值和减少,如果初始时一定要保证序列权值和大于等于 (s) 才行。

所以初始 (a_1) 至少等于最小的非负整数 (ansL) 满足 (frac {(a_1+a_1+n-1)*n}{2}) 大于等于 (s) ,令 (c=frac {(a_1+a_1+n-1)*n}{2}-s) .
如果 (c=0) 直接输出解即可。

所以现在只有两种操作:

  1. (a_1=a_1+1) ,权值和加 (n)
  2. 选择一个 (i(2le ile n)) ,令 (a_i=a_{i-1}-k) ,权值和减少 ((n-i+1)*(k+1)) 且每个 (i) 只能被选中一次。

求出一组合法解 ((a,b)) 满足 (c+b*n = (k+1)*a)(ale frac {n*(n-1)}2) 即可。
使用扩展欧几里得求出 (a) 的最小非负整数解即可还原出整个数组来,但是要满足 (a_ile 0)
又因为最小非负整数解是一组通解,所以我还可以得到任意多组解,包括 (a) 的次小非负整数解。

实测只需要使用 (a) 的最小非负整数解和次小非负整数解即可通过本题。

使用 (a) 还原数组的过程就是尽可能选择小的下标进行操作2。

AC_CODE
点我点我

My approach to 2020 Changchun by Shanghai JTU Problem L is as follows:

原文地址:https://www.cnblogs.com/Cwolf9/p/13966293.html