![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
codeforces_python
cool_Fires
这个作者很懒,什么都没留下…
展开
-
Round #149 (Div. 2) D. Dispute——乱搞
题意:给出一个无向图,在给每个顶点染色的同时也给与之相连的顶点染色,每个顶点除了被其他顶点“感染”只能被染色一次,那么对某一些顶点单独染色之后,会得到一个每个顶点被染色次数的序列。给出一个序列,问能否对某一些顶点单独染色,得到一个和给出序列完全不同的序列,即每一个对应的次数都不相同。关键点就是能想到从零状态(也就是没有一个顶点被染色)开始决策的话,每一步决策都不会影响到前面决策的正确性:因为每原创 2013-03-25 09:30:38 · 658 阅读 · 0 评论 -
Round #172 (Div. 2) C. Rectangle Puzzle
题意:给出一个矩形,绕中心旋转一个角度,得到一个新的矩形,求两个矩形重叠的部分的面积。用计算几何求线段交点的方法肯定可以做,嫌代码太长,实在懒得写。其实这题可以用纯几何的方式求出公式解出来。首先利用对称性,只考虑旋转角度小于90度,且长大于宽的情况。还有一个简单的情况就是当角度大于2 * atan(h / w)的时候,重叠面积就是一个平行四边形了。对于一般情况,做两条辅助线就很容易求出上方三原创 2013-03-27 22:02:49 · 762 阅读 · 0 评论 -
Round #172 (Div. 2) D. Maximum Xor Secondary——栈的高级应用消除冗余操作
题意:给出一个元素互不相同的序列,求所有子段的最大值和次大值的异或值中的最大值。我们从最直接的方法开始考虑,枚举所有的子段:先沿着序列从前向后枚举子段的结束的位置,对于每一个结束位置,向前枚举子段开始的位置,动态更新最大值和次小值。这样的做法是O(n^2),我们再来看看冗余的操作:对于每一个结束位置,在枚举开始位置的时候,一旦枚举到开始位置的元素的值比结束位置大的时候,就可以停止枚举进入下一个原创 2013-03-27 22:33:49 · 995 阅读 · 0 评论 -
Round #1 B. Spreadsheets
题意:另一种形式的进制转换。import refor _ in range(input()): s = raw_input() p = re.match(r'R(\d+)C(\d+)', s) if p: c = int(p.group(2)) r = p.group(1) while c: r原创 2013-08-06 10:05:55 · 609 阅读 · 0 评论 -
Round #173(Div2) C. XOR and OR——整体性方法
挺有意思的一道题:给出两个只含字符'0'和'1'的字符串,允许对第一个进行如下操作:可以将相邻的两个字符变换:其中'01', '10'和'11'可以两两互换,而'00'只能不变。问能不能通过若干步将第一个字符串转换成第二个。 首先,若两个字符串长度不同,答案肯定是否。然后,由转换条件,我们可以看出只要串中含有至少一个'1',就可以得到除去全为'0'的所有与之同长度任意字符串。a, b原创 2013-03-18 13:06:41 · 573 阅读 · 0 评论 -
Round #173 (Div. 2) D. Yet Another Number Game——博弈
题意:大名鼎鼎的威佐夫博弈在n为一到三的版本。n等于2的时候,就是威佐夫博弈。当n等于三的时候其实就和Nim博弈是等价的了,我们可以证明,当达到一个0状态的时候,无论通过什么操作下一个状态一定是Nim博弈的先手胜的状态,即使是使用威佐夫博弈的操作。设s = x1 ^ x2 ^ x3,后续状态t = y1 ^ y2 ^ y3,且t = s ^ (x1 ^ y1) ^ (x2 ^ y2) ^原创 2013-03-23 20:40:17 · 959 阅读 · 0 评论 -
Round #172 (Div. 1) C. Game on Tree——概率
题意:给出一颗树,每次删除一个节点及其子树(选每个点的概率都是相同的),直到删除了根节点。求步数的期望。可以计算出选择每一个节点的概率,因为如果选择了一个节点,就在总的步数里加上一,所以把每个节点的概率加起来就是期望了。而概率就等于该节点的层数的倒数。n = input()edge = [[] for _ in range(n)]for i in range(n - 1): a原创 2013-04-03 15:35:32 · 562 阅读 · 0 评论