A. The Wall
B. Maximal Area Quadrilateral
枚举对角线,根据叉积判断顺、逆时针方向构成的最大面积。 由于点坐标绝对值不超过1000,用int比较快。
C. Tourist Problem
假设序列为\(p_1,p_2,...,p_n\) ,则距离总和为\(,,,p_1,|p_2-p_1|,...,|p_n-p_{n-1}|\) 。 第1个点\(p_1\) 的贡献为\(\sum a_i(n-1)!\) \(|p_i-p_{i-1}|\) 的贡献为\(|p_i-p_{i-1}|(n-1)(n-2)!\) 对于\(a_i\) 排序,可以计算所有\(p_i-p_{i-1},p_i>p_{i-1}\) 的总和,乘以2即所有\(|p_i-p_{i-1}|\) 的总和。
D. Bubble Sort Graph
对于所有\(i<j, a_i>a_j\) 的点对来说,冒泡排序最终都会交换这两个数,即存在连边。 最大独立集显然就是最长上升序列的长度。
E. Iahub and Permutations
\(dp,O(n^2)\) 做法:
\(dp(n,k)\) 表示有\(n\) 个自由放置的数,\(k\) 个限制放置的数。\(dp(n,0)=n!\) ,因为没有限制,所以方案数为\(n!\) \(dp(n,1)=n \cdot dp(n,0)\) ,限制的数有\(n\) 个位置可以放置,剩余\(n\) 个数全排列放置。\(dp(n,k)=n\cdot dp(n,k-1)+(k-1)\cdot dp(n+1,k-2)\) ,考虑其中一个限制的位置:选择自由元放置,则对应限制的数称为自由元。选择限制数放置,不能放置对应的数,所有\(k-1\) 个,对应限制的数称为自由元。容斥\(O(n^2)\) 做法:
\(dp(i)\) 表示有\(i\) 个\(fixed\ point\) 的方案数,\(tot\) 表示空闲位置,\(fp\) 表示最大数量。\(dp(i)=\binom{fp}{i}(tot-i)!-\sum_{j=i+1}^{fp}{dp(j)\binom{j}{i}}\) \(dp,O(n)\) 做法:
\(dp(i)\) 表示放置\(i\) 个限制数的方案数。\(dp(0)=free!\) ,\(free\) 表示自由元的数量。\(dp(1)=dp(0)*free\) ,当前自由元不能放置在本身位置,所以需要和一个自由元对换位置。\(dp(i)=free\cdot dp(i-1)+(i-1)\cdot(dp(i-2)+dp(i-1))\) ,\((i-1)dp(i-2)\) 表示当前限制数和之前其中一个限制数两个互相占据彼此的位置,则变成放置\(i-2\) 的子问题,否则如果没有对换位置,则变成\(i-1\) 的子问题。
F. Iahub and Xors
二维前缀异或和。 修改单点\((x,y)\) ,会对\(,(x+2k,y+2k)\) 所有前缀产生影响。 根据\((x,y)\) 的奇偶性,建4棵二维树状数组,容斥计算异或和以及更新前缀和。
G. Candies Game
结论:任意三个数\(A,B,C\) ,都能通过若干次操作,使得其中一个数变成0。 证明,以下考虑三个数都不相等的情况:
假设\(0<A<B<C\) ,则\(B=A\cdot q + r\) ,其中\(r<A\) 。那么我们的目的就是把\(B\) 转成\(r\) ,得到更小的三元组。 \(q\) 用二进制表示,则\(B=(2^{e_n}+2^{e_{n-1}}+…+2^{e_0})A+r\) 。从最低位考虑,若对应位置为\(1\) ,则\(q\) 的二进制1的个数减少1,否则从\(C\) 取出\(A\) 放入\(A\) 中。即\(A\) 的值依次变成\(2^0A,2^1A,2^2A,…\) ,那么就能对应地把\(q\) 的1全部去除,即$B'=r
转载于:https://www.cnblogs.com/mcginn/p/6653845.html