Codeforces Round #198 (Div. 1 + Div. 2)
A. The Wall
- 求下gcd即可。
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
Codeforces Round #198 (Div. 1 + Div. 2)的更多相关文章
- Codeforces Round #198 (Div. 2)A,B题解
Codeforces Round #198 (Div. 2) 昨天看到奋斗群的群赛,好奇的去做了一下, 大概花了3个小时Ak,我大概可以退役了吧 那下面来稍微总结一下 A. The Wall Iahu ...
- Educational Codeforces Round 60 (Rated for Div. 2) - C. Magic Ship
Problem Educational Codeforces Round 60 (Rated for Div. 2) - C. Magic Ship Time Limit: 2000 mSec P ...
- Educational Codeforces Round 60 (Rated for Div. 2) - D. Magic Gems(动态规划+矩阵快速幂)
Problem Educational Codeforces Round 60 (Rated for Div. 2) - D. Magic Gems Time Limit: 3000 mSec P ...
- Educational Codeforces Round 43 (Rated for Div. 2)
Educational Codeforces Round 43 (Rated for Div. 2) https://codeforces.com/contest/976 A #include< ...
- Educational Codeforces Round 35 (Rated for Div. 2)
Educational Codeforces Round 35 (Rated for Div. 2) https://codeforces.com/contest/911 A 模拟 #include& ...
- Codeforces Educational Codeforces Round 44 (Rated for Div. 2) F. Isomorphic Strings
Codeforces Educational Codeforces Round 44 (Rated for Div. 2) F. Isomorphic Strings 题目连接: http://cod ...
- Codeforces Educational Codeforces Round 44 (Rated for Div. 2) E. Pencils and Boxes
Codeforces Educational Codeforces Round 44 (Rated for Div. 2) E. Pencils and Boxes 题目连接: http://code ...
- Educational Codeforces Round 63 (Rated for Div. 2) 题解
Educational Codeforces Round 63 (Rated for Div. 2)题解 题目链接 A. Reverse a Substring 给出一个字符串,现在可以对这个字符串进 ...
- Educational Codeforces Round 39 (Rated for Div. 2) G
Educational Codeforces Round 39 (Rated for Div. 2) G 题意: 给一个序列\(a_i(1 <= a_i <= 10^{9}),2 < ...
- Educational Codeforces Round 48 (Rated for Div. 2) CD题解
Educational Codeforces Round 48 (Rated for Div. 2) C. Vasya And The Mushrooms 题目链接:https://codeforce ...
随机推荐
- 学习JDK1.8集合源码之--Stack
1. Stack简介 Stack是集合中对数据结构栈的一种实现,栈的原则是先进先后出,与队列相反(先进先出).Stack是继承自Vector的,意味着它也是由数组实现的线程安全的,不考虑线程安全的情况 ...
- Directx11教程(57) 环境映射
原文:Directx11教程(57) 环境映射 建好skydome后,如果我们想让其中的某个物体,比如那个球体来映射出周围环境的蓝天白云(不包括自己附近的物体),该怎么做呢?此时可以把这个 ...
- Directx11教程(48) depth/stencil buffer的作用
原文:Directx11教程(48) depth/stencil buffer的作用 在D3D11中,有depth/stencil buffer,它们和framebuffer相对应,如下图所 ...
- Python中if __name__ == '__main__':理解
在很多python脚本中在最后的部分会执行一个判断语句if __name__ == "__main__:",之后还可能会有一些执行语句.那添加这个判断的目的何在? 在python编 ...
- 阿里巴巴资深技术专家无相:我们能从 InteliJ IDEA 中学到什么?
本文来源于阿里巴巴资深技术专家无相在内网的分享,阿里巴巴中间件受权发布. 最近因为工作的关系,要将 Eclipse 的插件升级为 IDEA 插件.升级过程中,对 IDEA 插件做了些学习和研究,希望通 ...
- MySQL的安装问题总结--终极解决方案
MySQL安装 选择:custom 自定义 更改路径 安装到其他盘 选择:launch configuration finish 进行配置 如果忘记选择 找 "E:\Program Fil ...
- iOS:学习runtime的理解和心得
http://www.cocoachina.com/ios/20150901/13173.html 作者:兴宇是谁 授权本站转载. Runtime是想要做好iOS开发,或者说是真正的深刻的掌握OC这门 ...
- html5 拖放学习
html5拖放 需要有可拖放元素,可放置的位置(可多个),就像是一个苹果,多个箱子,苹果可以在箱子间来回放置,同样元素也可在多个可放置位置间来回拖放. 如果只有一个位置,元素只可被从原位置托放置唯一目 ...
- windows7蓝屏0x000000c4
故障还原: 360更新弹出更新提示,于是选择了关机自动更新,第二天开机发现电脑蓝屏报0x000000c4错误! 故障排查: 1.无法从最后一次正确配置启动windows7 2.无法进入安全模式 该错误 ...
- UVa 10220 【大整数】
uva 10220 可采用uva 623这道题求N!,再最后稍微改一下就好. 参考代码: } #include<cstdio> #include<cstring> #inclu ...