标签:其他 简单 运用 第一题 路径 精度 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是多少
但是现在是反的
可这样也是正解啊。。。
标签:其他 简单 运用 第一题 路径 精度 nbsp 表示 最大值
原文地址:https://www.cnblogs.com/yinwuxiao/p/9185523.html