码迷,mamicode.com
首页 > 其他好文 > 详细

noip

时间:2018-06-15 01:06:05      阅读:223      评论:0      收藏:0      [点我收藏+]

标签:其他   简单   运用   第一题   路径   精度   nbsp   表示   最大值   

针对从2013-2017年的部分分及满分的我所知道的所有做法

和一些分数分析

1.noip2015运输计划

point1:前60分部分分(再前面就是瞎写了)

我们会发现复杂度在O(n^2)-o(n^2log)都是可以的

显然我们只要暴力枚举删每条边

然后判定就可以了

显然我们可以预处理每个路径的长度

然后现在问题变成判定这条边是否在路径上

因为这条边一定是由son连向fa的

所以只需要判断son是否在路径上

这个显然把路径拆成两条链分别判断一下就行了

其中运用到求lca

树剖、倍增、rmq在这里都可以随意选吧

point2.满分做法1

首先满分做法的复杂度应该是nlogn

满世界题解都是二分答案就先说下吧

noip压轴题感觉有一半二分答案

二分答案之后我们只有o(n)的时间来完成这个问题

然后很简单

我们只需要求一下不满足条件的路径都经过哪些点

然后判断一下是否合法就可以了

这个做法总的来说还是比较巧妙的

但是想到二分答案的话还是很容易的

point2:满分做法2

暴力有效

我们考虑暴力枚举删每一条边

那么我们需要在log的时间内计算当前的值

这就需要预处理一些东西

我们用树剖维护经过这条边的路径的最大值,不经过这条边的路径的最大值

怎么维护? 对于每条路径做树剖,把其在的路径对经过取max,对不经过的只需求出其补集

那么查询时就可以log^2了

这样是Nlog^2 n 但由于树剖常数非常小所以跑95分肯定是不虚的

2.noip2015子串

这道dp还是比较简单的

而且我觉得好像也没什么别的做法能ac吧

point1:70分

裸的dp

f[i][j][k]表示考虑了前i个字符,匹配了前j个(最后一个不用正好是i),用了k个串

然后暴力枚举f[i-a][j-a][k-1]就可以了(当然要保证两个串相同)

这样是n*m^3 (我觉得可能卡常数厉害点也是可以过的)

point2:100分

很显然我们上一个算法的瓶颈在于每次要枚举a

其实我们可以看成是上一次的连接这个字符

所以我们令f与上意义相同

g[i][j][k]表示考虑了前i个字符,匹配了前j个(最后一个正好是i),用了k个串

转移很好想我就不写了。。

然后显然可以滚掉一维

时间n*m^2 空间n*m

3.noip2014解方程

去年noip我看过这题。。

然后现在想了一下我还是只会70

满分做法我觉得不太容易想到

不过当年有40多个ak的。。其他100名都是570左右应该都是在这题上出问题了

那年其他的题目

两天第一题送分没什么好说

第二天第二题显然随便dfs一下再跑一遍最短路

第一天第二题显然是树形dp

然后发现一下只有同一个父亲的儿子和子孙关系才满足条件

然后那个式子显然是平方式

第一天第三题 dp挺好想的

还是来看这题吧

point1:50分

暴力高精度

n^4

point2:70分

用秦九韶算法

变成x(a1+x(a2+(x(a3...)...)=0

这样是100*10^4*10^4 我也不知道为什么网上说能过70

Point3:100分

考虑对mo取模之后再算

想到这个就很简单了

复杂度100*10^4

4.noip2016天天爱跑步

满分的3种做法我另一篇题解已经说过了

这里就说一下部分分

point1:25 暴力

point2:15 链上

我们会发现其实就是求一个点上满足终点>=观察点的答案

二分nlogn就可以了

point3:起点是1

那么每个点被经过的时间都是确定的

我们只需要统计一下经过这个点的路径条数就可以了

那么可以树剖或者直接差分就可以了

 

我记得这60分我去年就会。。应该是比较简单的

 

point4:终点是1

这个是个很显然的线段树合并 但这样好像就是正解了

我们再发现一下,如果都是1出发,我们还可以数组直接记录当前有哪些点dep是多少

但是现在是反的

可这样也是正解啊。。。

noip

标签:其他   简单   运用   第一题   路径   精度   nbsp   表示   最大值   

原文地址:https://www.cnblogs.com/yinwuxiao/p/9185523.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!