NOIP模拟赛2021/11/11


吐槽

我昨天刚说过什么不会,今天真的全考了,太效率了o(╥﹏╥)o,果然好差,不过刚好是一个很好的复习!(老师太尽心尽责了【感动】)

比赛时间安排

8.15-8.30
t1看着非常眼熟,觉得应该是之前讲过的最短路模型
t2看上去是个dp,不想写,先过了
t3求个lca然后暴力找就行了,能拿10分
t4是个期望,感觉m<=21的dfs可以写一下

8.30-8.50
把lca板子码出来了,查错发现没什么问题,样例试了一下一遍过,所以直接交了(码的非常顺)

8.50-9.20
我想写t1的最短路,但是写了之后发现那个数据特别大,没法用数组存着,所以在想记得之前有一种方法可以不用直接连边,也能走图论,自己写写画画,没什么结果,先放弃了

9.20-9.40
t2好好看了一下,发现有一个非常正确的简单贪心啊,所以就直接写了,按照防御与攻击差值从大到小排序,然后选前k个就行,写完发现没问题,想想正确性是肯定的,于是交了

9.40-10.20
又想了想t1,依然没有思路,就去写t4的dfs了。首先,题目中给出的值是逆元,自己还原了一下,测试了一下 ( 1 − a ) − 1 (1-a)^{-1} (1a)1是否等于 1 − a − 1 1-a^{-1} 1a1,发现确实相等,就放心写了。直接枚举每条边断还是不断,然后在枚举过程中把概率乘起来就行了

10.20-12.00
剩下的时间都在写t1
首先,还是在往图论的方面想,但是依然失败。
那么就一点一点写特判吧,a=1的特判好写,直接一直选b,最后剩下的再选a
a=2,b=3,感觉同理,可以先判断x<3的情况,然后剩下的如果x%3=1,那么就是x/3+2,因为凑出1最少要2,以此类推
然后交了之后突然来了灵感,发现1000的情况我可以先预处理出来拼出a,b中较大的那个数之内的所有数字的最少个数,存到f数组里,然后再用x/a+f[x%a],自认为非常正确。思路也比较清晰。问题就在预处理这里,我用的背包,但是。。一直写不对,最后发现是外层循环开小了,debug差不多30分钟,然后测试大样例还不对,结果发现不一定是与a有关,也可以是b,那么就取min就好了,大样例成功过了,交了

赛后反思与总结

  1. t1的特判写炸了,理想拿到50分,但是没有
  2. t2贪心也少了个条件,没有考虑防御值小于攻击值的情况(其实应该很容易想到),然后就少了70分
  3. t1没有看出来数数论,或者说!我在第二次看题的时候已经写出来ax+by=c这个方程了,但是完全忘了。。(这。。)

与正解的差距

t3

t3是有关LCA的计算,那求LCA肯定是板子,没法优化,那么只能是在最后的区间上优化,因为我们能总共就n个点,肯定有很多区间的LCA是一样的,没必要去重复枚举,所以我们就用单调栈求出每一个节点的l[i],r[i]表示以它为lca的区间向左最多到哪,向右最多到哪,然后乘起来,统计个数
我也想到会有LCA是相同的情况,但是不知道咋优化

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值