你有 个数 要进行 次操作,每次随机选择一个数 ,把 减一,并将答案增加除 外所有数的乘积。
求最终答案的期望,答案对 取模。
。
CF1672F2 Checker for Array Shuffling 做题记录
给定一个长 n,值域 [1,n] 的数组 a,定义 a 的排列(任意打乱元素顺序后的数组)b 的价值为最小的操作次数使得 b=a,一次操作可以:
- 选定两个 1≤i<j≤n,交换 bi 和 bj;
 F1:给定 a,构造价值最大的 b;
F2:给定 a 和 b,判断 b 的价值是否最大;
1≤n≤2×105。
CF1685D1 Permutation Weight (Easy Version) 做题记录
给定一个 1∼n 的排列 p。
对于一个 1∼n 的排列 q,定义其权值为:
∣q1−pq2∣+∣q2−pq3∣+∣q3−pq4∣+⋯+∣qn−1−pqn∣+∣qn−pq1∣
找出 任意一个 权值最小化的 1∼n 的排列 q。
2≤n≤200。
CF1225F Tree Factory 做题记录
你需要一棵 n 个节点的有根树,节点编号为 [0,1,...,n−1],其中 0 是根节点,且对于任何非根节点 v,它的父节点的标号 p(v) 要比它的标号 v 要小。
工厂里所有的树都是用竹子做的(可能不准确但不影响题意理解),这种竹子是有根的树,且每个节点只有一个子节点(除了叶子节点没有子节点),也就是说,它是直线形的。加工前,竹子的顶点可以随意标注。
要加工竹子为一棵树,可以进行这样的操作:选择任意一个不是根节点且父节点也不是根节点的节点 v,将它的父节点变成原先父节点的父节点即 p(p(v)),而其它节点的父节点都保持不变,v 的子树也不会改变。
效率是至关重要的,所以在加工出所需要的树的前提下你应当最小化操作数。现在请你构造任何最优的操作序列以生成所需要的树
注意:加工出的结果树的标签必须和所需要的树的标签一致,即根节点标签相同,其它所有具有相同标签的子节点 v,其父节点标签p(v)也应相同。
数据保证任何输入都至少有一种可行的方案,且最优操作序列最多包含 106 个操作。
2≤n≤105。
CF618F Double Knapsack 做题记录
给你两个可重集 A,B,A,B 的元素个数都为 n,它们中每个元素的大小 x∈[1,n]。请你分别找出 A 的一个子集和 B$ 的一个子集,使得它们中的元素之和相等。输出方案。
1≤n≤106。