随笔分类 -  SRM147

摘要:贪心策略的题,解释一下题目的意思环可以被砍出一个口子用于连接两个链子(脑海里想象一下),现在希望在破坏环最少的情况下将所有的环连成一个圈,很容易想到这种贪心法:1. 如果当前还剩下1条链子,破坏随便一边的一个环,直接首尾相连2. 如果当前还剩下2条链子,如果其中一条链子只有一个环,直接用这个环联结另外一条链的首尾,如果都是多环链,只能破坏两个环去相连。3. 如果当前有2条链子以上,每次选择环数最少的那个链子砍出一个环用于连接环数最大的两条链子,如果这个是一个单环链,那么认为这条链消失。重复过程直到链子数不多于2条。 1 import unittest 2 3 class GoldenChai. 阅读全文
posted @ 2013-11-27 10:12 valaxy 阅读(302) 评论(0) 推荐(0)
摘要:同 DIV1-350 阅读全文
posted @ 2013-11-27 09:04 valaxy 阅读(139) 评论(0) 推荐(0)
摘要:一般编程题 1 import unittest 2 3 class CCipher: 4 def decode(self, cipherText, shift): 5 s = '' 6 for ch in cipherText: 7 num = ord('A') + (ord(ch)-ord('A')+26-shift) % 26 8 s += chr(num) 9 return s10 11 12 # test13 o = CCipher()14 t = unittest.TestCas... 阅读全文
posted @ 2013-11-27 09:02 valaxy 阅读(120) 评论(0) 推荐(0)
摘要:动态规划的题,令 \(dp[k][i]\) 表示最后一个条纹的颜色为 \(i\) 且条纹数小于等于 \(k\) 时的旗帜个数,则有:\(dp[k][i] = 1+\sum^{颜色(j,i)可以相邻}dp[k-1][j]\)初始状态:\(dp[1][i]=1\)计算最小的 \(k\) 使得 \(\sum_i dp[k][i] \geq numFlags\)\(k\) 可能取得很大,时间上可能不允许做这么多次操作,注意到下面这种情况:存在任意一种颜色 \(x\) 可以与至少两种颜色 \(yz\) 相邻则可以构造出形如:\(x\underline{ }x\underline{}x\underline 阅读全文
posted @ 2013-11-27 07:20 valaxy 阅读(204) 评论(0) 推荐(0)
摘要:一般编程题 1 class Dragons: 2 def snaug(self, initialFood, rounds): 3 neighbors = [[2,3,4,5], [2,3,4,5], [0,1,4,5], [0,1,4,5], [0,1,2,3], [0,1,2,3]] 4 amounts = [x for x in initialFood] 5 for i in range(rounds): 6 a = [0, 0, 0, 0, 0, 0] 7 for k in range... 阅读全文
posted @ 2013-11-01 07:44 valaxy 阅读(147) 评论(0) 推荐(0)
摘要:约瑟夫环问题,直接模拟即可,找出被开除的前femaleNum个人的位置,利用这个位置信息构造字符串即可 1 class PeopleCircle: 2 def order(self, numMales, numFemales, k): 3 a = [] 4 s = ['M'] * (numMales+numFemales) 5 for i in range(0, numMales+numFemales): 6 a.append(i) 7 begin = 0 8 for i in ra... 阅读全文
posted @ 2013-11-01 06:45 valaxy 阅读(147) 评论(0) 推荐(0)