SRM 443

 

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的序列从链表里脱链。有新序列时先寻找未到达状态序列的首地址,然后遍历一下就行了。

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值