NOIP2017普及组复赛-解题报告

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

NOIP2017普及组复赛-解题报告

衢州市兴华中学

By 冯明浩

给出三个整十数A,B,C ,求A*20%+B*30%+C*50%的值

模拟

直接粗暴地输出A*0.2+B*0.3+C*0.5

时间复杂度:O(1) 期望得分:100

由于分数均为整十数,先将分数各除以10,再直接输A*2+B*3+C*5。这样就避免了精度问题

时间复杂度:O(1) 期望得分:100

给出N 个数Ai ,再进行Q 次询问,找后缀为给定数Bi 的最小的Ai

模拟

将Ai 及Bi 都转化成字符串。每次询问都对N 个数进行后缀比较,挑出个最小的

时间复杂度:O(N*Q*len) 期望得分:80 对算法一的比较进行优化——构造出n 10,对于Ai ,直接Ai Mod 10len ,判断是否

相等。这样每次比较的时间复杂度优至O(1)

同时先将Ai 排序,再每次从小到大查询,一旦找到就停

时间复杂度:小于O(N*Q)(一般情况) 期望得分:100

读入Ai 时进行处理,构造ans[x]数组,记录询问X 的最小值。对于每个Ai ,依次

取出其后1、2、3……len 位,修正其的最小值。这样每次查询,就可以O (1)出结

果了

时间复杂度:O(N*len) 空间复杂度:O(max(Bi)) 期望得分:100

给出一个N*N 的矩阵,其中部分格有颜色

每次可以从一个格向上下左右四个方向移动一格(不能越出矩阵且满足条件),根据

两个格子的颜色有不同的代价

求从左上角走至右下角的最小代价

最短路(动态规划)

直接暴力地按照题意进行DFS

时间复杂度:O(n n *2) 期望得分:30

以左上角为起点,右下角为终点,刷四个方向的SPFA

(也可预先对相邻格建好边,刷最短路SPFA 或DIJ 或进行记忆化DFS )

时间复杂度:O(k*n*n) 期望得分:100

给出N 个格子的位置Xi 与价值Pi ,从起点0往右跳跃,初始跳跃的距离只能为d

同时可以花费金币来调整其跳跃距离,花了t 个金币时可跳跃的距离为

max(1,d-t)~(d+k)

每遍历一个格子就会获得其代价Pi ,求要获得总价值为K 所需最少的金币数

二分、动态规划、单调序列(堆)

从小到大枚举所需金币数,用O(N*N)的DP 进行check ,一旦发现可行就为答案

时间复杂度:O(max(Ai)*N*N) 期望得分:20

分析发现,枚举的金币数越多,跳跃范围越大,总价值一定越多——

满足二分答案的单调性,于是将算法一的枚举答案变为二分枚举

时间复杂度:O()max(2log Xi *N*N) 期望得分:50 分析一下DP 的转移方程:

F[i]=max(F[j])+P[i](max(1,d-t)≤a[i]-a[j]≤d+k)

就会发现DP 的j 这次循环是为了找F[1~i-1]中的最大值,自然而然就想到了用堆

优化——

堆中存放F[1~i-1],若堆顶距当前X[i]大于d+k ,就丢掉该元素(再也没用)

否则若堆顶距当前X[i]小于max(1,d-t),就暂存在临时数组中,最后在当前解更

新好后记得塞回去

则F[i]=F[heap[1]]+P[i]

时间复杂度:O()max(2log Xi *N*k*N 2log ) 期望得分:80 继续优化算法三的DP :

那些离当前X[i]太近的实际上完全没有必要塞入堆中,那么再另开一个变量j 记录

当前往堆中塞入的最后一个元素。每次将与当前X[i]的距离大于等于max(1,d-t)

的塞入堆中,只要检查一下堆顶是否太远即可,就保证了每个节点当且仅当入堆一次,

时间复杂度中k 就消去了

时间复杂度:O()max(2log Xi *N*N 2log ) 期望得分:100 在算法四的基础上再思考一下,其实也没有必要用堆了。因为X[i]是在不断增大,

那么对于F[x]=F[y],显然距离起点远的更有用,即一旦F[y]进堆,F[x]就没有

存在的意义了(X[x]

备做前后的“中转站”。

这样的话,维护一个单调下降的单调序列来代替堆,每次将序列前面距离太远的干掉,

后面再如上进行维护,每次抓序列的头就是前面的最优解:

F[i]=F[que[hed]]+P[i]

于是连堆的N

2log 也成功去掉了

时间复杂度:O()max(2log Xi *N) 期望得分:100

另:除了上面的算法外,不排除还有其他更优的解法。

相关文档
最新文档