noip近期总结

noip2009

1.潜伏者

这道题非常裸,就是一道按着题意来的一道字符串处理(这处理也太简单了),开个数组储存字母所对应的密文就可以了。

2.Hackson的趣味题

分解质因数以后,根据最小公倍数对应质因数的次数为max(ka,kb),最大公约数对应质因数次数为min(ka,kb)

然后对x的质因数指数进行分类讨论即可。方案数用乘法原理统计。

3.最优贸易

我们需要知道的是对于点x,从起点到x的最小购买代价和从x到终点的最大卖出价格。

如何求?我们知道spfa可以求出单源最短/长路,那么能否得到我们想要的答案呢?

当然可以,两者非常相近,边权和点权完全可以转化。

先对原图做spfa(),求出最小购买代价,然后将所有边反向,再做一遍,求出最大卖出价格。

两者相减,就是答案。

4.靶形数独

这道题是对搜索的考察,有两种解法:启发式搜索+位运算 & DLX作为精确覆盖问题处理。

DLX本质其实和搜索类似,只是带强剪枝的对精确覆盖问题的搜索算法。

这里的搜索如何体现启发式?我们变换一下搜索的顺序,优先搜索确定数字较多的行。

算法本身没什么好讲的,只不过是带位运算的枚举。

 

noip2010

1.机器翻译

队列配合布尔数组记录信息即可,简单模拟。

2.乌龟棋

动归。用f[a][b][c][d]表示牌1/2/3/4分别还剩a/b/c/d的情况下所能得到的最大分数。

用记忆化搜索形式实现DP即可。

3.关押罪犯

并查集的应用。难以想象这在当年还是超纲的。

由于我们只是要上报最大冲突,那么我们应该尽量避免最大的几场冲突的发生。

用并查集维护信息,直到冲突无法避免,输出答案。

4.引水入城

首先用floodfill确定是否均可被灌溉。

然后可以证明某一水源在沙漠处覆盖的必定是连续区间,否则会是无法全部灌溉的情况。

于是问题转化为如何用最少的给定区间,使其完全覆盖全集。

用dp处理即可。

 

noip2013

1.转圈游戏

快速幂应用,注意时刻mod防止溢出。

2.火柴排队

做好a,b数组对应的位置后,用树状数组或归并排序计算逆序对个数。

3.货车运输

货车跑的路径必然在最大生成树上,这是最小/大生成树的性质,许多论文里都有提及。

然后我们的问题就是如何求树上两个点路径之间最小的边权。

乍一看居然是LCT的经典应用。开玩笑这是NOIP啊。

LCT的应用是在边权可以修改的情况下,不带修改完全可以用倍增求解。

倍增类似lca,f[a][i]代表a点的2^i辈祖先,minv[a][i]表示a到f[a][i]路径上边权的最小值。

然后在lca的时候顺便用minv更新ans,就可以求出答案了。

4.积木大赛

画图画画就可以找到规律了,实际上的层数是跟拐点有关的。

一个峰必然是单独的被铺的,但是山脚会和其他峰共用。

那么我们只要在峰顶时把高度加上,把共用的重复计算给减掉,就可以得到答案了。

5.花匠

n^2的动归还是蛮好想的,至少当年刚学的动归都可以想出来。

怎么优化成nlogn,当然是用数据结构了。

6.华容道

还没写,下次补上。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值