现在的位置: 首页 > 综合 > 正文

SRM 443

2019年04月14日 ⁄ 综合 ⁄ 共 1924字 ⁄ 字号 评论关闭

 

D2 500p: CirclesCountry

 

简单题,枚举每两个点是否在同一圆内。

 

D2 1000p:  Polygons2

 

首先将数组segments排序。对于segments[i]而言,它能组成的N边形个数=总长度大于segments[i]的前面N-1边形的个数。设状态表示为F[i][k][sum],k表示边数,则F[i][k][sum] = F[i - 1][k - 1][sum - segments[i]] + F[i - 1][k][sum]。最后对每一个i做统计得和。

 

 

D1 500p : BinaryFlips

 

很好的一个题目,BFS+压缩路径优化。

 

假如单纯用BFS,该题的复杂度是O(N*M),M代表了当前所有能到达的状态。由于在M其中许多状态都是相关联的,考虑对其作优化。

 

设A[a]代表了走到a状态时最少需要的步数。再建立一个双向链表维护尚未到达的状态。

 

当在a状态下翻K个硬币,得到的是一串新状态:l, l + 2, l + 4,...h - 2, h,那么此时就可以把l到h的序列从链表里脱链。有新序列时先寻找未到达状态序列的首地址,然后遍历一下就行了。

 

 

 

 

【上篇】
【下篇】

抱歉!评论已关闭.