2019.7.4考试总结

  对于这次的结果就不讲了。

  关于本次测试的题目和标程就放在百度网盘里

  T1,这是一道很水的筛法求素数的暴力,但是由于没有换行,就暴0了,这告诉我们以后调程序一定要用文件调试。

  T2,这是一道强模拟,就是把书填如二维数组,这就不赘述了

  T3,这道题是一个裸的多重背包,但是要用二进制拆分,在打代码时不小心想错了,可是样例过了,我就没多想就放在一边了,可是如果是NOIP的话,我就一定知道,因为有大数据调试嘛

  接下来重点讲后三题

  T4,首先一看是斐波那契数列,但是不知道f[1]是什么,那么我们可以推推

然后我们把一次项和常数分开,就可以发现了

让后我们发现一次项和常数项都是很类似于斐波那契数列的东东,所以我们O(n)求出来,就可以O(1)进行转移找到G[j]的答案了

T5,一看题目,搜索,一看数据还是搜索!可是怎么搜索呢?

首先,这道题不能BFS为啥呢?看下面的样例

首先,这道题是先到C打了一个野怪,然后到E,打了6只,总共就是7只野怪

但是BFS中,要遵循一个条件——不能改图,因为到C后返回时就又回到M就会+1,所以就不可以

那就dfs回溯做

设计状态 f(x, y, h, ans) 表示在 (x, y) 时,剩余 h 体⼒,打过 ans 个怪

直接记忆化搜索即可

但是这有个BUG,看下面样例

在写dfs的时候,会有一个搜索的先后顺序对吧。

假设我们先搜索下面的(S向下)我们就会标记f[4][4][0][4]为1,那我们再走回去,就是得到答案9,但是我们先往上,就可以得到答案8,如果我们先搜索上面(S向上)答案就是上面是8,下面1是9

那么我们怎么做呢?

我们就可以在设一维C表示它是从哪里转移过来的,就可已实现转移了。

但是这为什么是正确的呢?看下面的图示(我们反着从结尾开始推)

这样显然是不漏情况的,同时也会转移到S(起点),就可以肯定是最优解

T6,这一到首先一看就感觉是一个DP。先想想二维DP怎么做,枚举一个i和一个j求出i,j中的数,不难想到,用四个数组:

gl[i]:表示i左边的比i小的数

gr[i]:表示i右边的比i小的数

ml[i]:表示i左边的比i大的数

mr[i]:表示i右边的比i大的数

再求出这些东西后,我们就可以想到,为啥不枚举中间端点呢?(可是为什么我考试的时候就没想到)

这样式子就可以很快的列出来了

但是如何维护上面四个只能,很简单,树状数组(或线段树)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值