构造
悭吝韶华
在学习Unity和图形学.
展开
-
EOJ月赛2020.7-E. 因数串(构造)
传送门 比赛时候想到按质因子个数分层,优先往层数多的状态转移,赛后发现不行。 赛后问了下wwg,他是构造写的。 首先因数个数为∏i=1n(1+ki)\prod_{i=1}^{n}{(1+k_i)}∏i=1n(1+ki) 其实可以从最后一个因子使用的次数来考虑,先增后减,如此循环(这样可以使得每次转移符合条件) 然后再考虑倒数第二位,第三位。。。 然后因为要让最大值出现在最后面,要按照每种质因子的个数分奇偶排序,使得最后一次一定是递增的。 AC代码 #include <bits/stdc++.h&g原创 2020-07-18 22:01:19 · 174 阅读 · 0 评论 -
Codeforces Global Round 9E. Inversion SwapSort(构造+分解问题)⭐⭐⭐⭐
传送门 首先你可以把所有a[i]离散化,得到相应的值(如果a中有x-1个不同的元素比这个ai小,离散值就为x) 这题的构造方法即为:从最后一个位置开始,依次往前解决所有的逆序对。 我们先考虑所有ai都不相同的简单清苦: 显然最后一个位置的值在经过调整后必须为最大的离散值n,如果它当前值为x,那么显然这个位置有n−xn-xn−x个逆序对。我们只需要把最后一个位置和它所有逆序对对应的另一个位置上的所有元素重新排列,使得最后一个位置上的值为n(逆序对对应的其他位置上一定有n),其他位置上的值依然符合原来的大小关系原创 2020-07-06 12:07:55 · 164 阅读 · 0 评论 -
Codeforces Global Round 9 D. Replace by MEX(构造)⭐⭐⭐
传送门 又是构造瞎搞题,太难啦。 是这样的,首先考虑一个点: 就是每次的mex是可以算出来的,然后这时候你可以任选你可以任选一个点把值设置为mex,如果你之后不再动这个点,那么再也不会出现这个mex的值了。那是不是就比较清晰了。 我们不妨构造一个a[i]=i−1a[i]=i-1a[i]=i−1的序列。 每次如果mex的值为n,就任选一个值不符合的待更新的位置,设成n,那么下次的mex肯定不为n,因为mex不会出现a中目前已有的值。 这样最多经过不超过2*n次替换就可以构造出序列了~ #include<原创 2020-07-05 19:41:15 · 129 阅读 · 0 评论 -
Codeforces Round #652 (Div. 2)E. DeadLee(构造+思维)⭐⭐⭐⭐
首先统计每个餐品被喜欢的次数。 如果一个餐品被喜欢的次数小于等于该餐品的拥有量,说明无论如何放,该餐品都不会导致Dead.那么我们不如直接放在最后,这样可以保证与该餐品一起被喜欢的那些餐品在用完后也可以由这个餐品垫着,防止Dead(顺便减少它们的cnt)。 对于所有满足上述即被喜欢的次数小于等于拥有量条件的餐品,都进行处理。处理的过程中也会产生新的满足该条件的餐品,也进行处理。 但是如果最后剩下一些餐品,它们被喜欢的次数大于拥有的数量。 我们只能牺牲和它们一起被喜欢的那些餐品了。 统计每个餐品需求量和拥有量原创 2020-06-26 23:56:25 · 132 阅读 · 0 评论