NOIP 2015提高组 题解+分析

这一次的提高组出的题挺丧心病狂的,似乎比普及组还要容易看出算法,随便就400+。我在洛谷上测得好像是500多。真不知CCF在想什么?算了不说那么多了,直接上分析:

(以下的题目中D1A表示第一天第一题,D2B表示第二天第三题,以此类推)
题目算法简单分析:
【D1A】 简单模拟
【D1B】 直接扫一遍找最小环,或者看网上好像有类似拓扑排序剩下回路的方法,总之方法非常多
【D1C】 将牌二进制状压,或着记忆化搜索

【D2A】 显然是二分答案
【D2B】 用各种方法动规,目测想出一个类哈希优化的O(n^2)算法
【D2C】 一开始没看到m个运输计划的要求,以为是次小生成树,类似《秦始皇修路》的方法,后来才发现尚倒比较难……好像树链剖分之类的方法可以来坑分,总之,要小心常数(CCF竟然卡常数)

题目正式题解:
【D1A】 模拟不说了,NOI题库的题目,改了一下数据规模。
【D1B】直接DFS,标记找到过的每一个节点,显然就是O(n)的算法。或者说用拓扑排序不断找环,不过好像本质上还是广搜。
【D1C】 显然这一道题目应该就是搜索了。只需要将出没出牌变成二进制,出了就是1,没出就是0。接着对于全部的0开始记忆化搜索,接着穷举所有的出牌方法,然后记忆化,显然不会爆空间。

【D2A】 最小值最大,显然就是二分,在NOI题库上都有原题。
【D2B】 其实和USACO 2014 Feb BRONZE相似,只不过多了一个K个子串的要求。但是,要注意倒序求解!也就是说,一个正序枚举A中的每个字符,再反序枚举B中的字符,如果Ai=Bj,则DPj+=DPj-1,但是j=0时++DPj即可。但是这个时候,我们可以发现一个优化:哈希表。注意到字符总数不多,于是可以用开放寻址法(拉链法),算是一个常数优化吧。
接着,估计直接DP就行了,加一维子串的个数,再注意模一下就好了。
【D2C】 似乎可以树链剖分,总之是有什么优化都丢上来……没想到最优化解法,但是写一个暴力都不少分了。正解应该是利用LCA的时间戳+RMQ和线段树的线段覆盖操作即可,不过听说还有直接用线段树的做法。主要注意常数的优化。

总结:挺简单的。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值