关于黑题祭……

1

第一道黑题

大概是从 4/27 开始做这个题的吧,一直到 5/5

我依旧很菜……

2

第一眼看到这个题的时候其实挺蒙的,立马就能感觉到是那种代码不怎么好写的题目。

然后看了一眼是黑题,感觉通过率还挺高的,想着要不我也试试?

然后首先,在想了大概半天之后,想出来的是因为他有后效性,可以提前先算出所有的赔偿数,然后 NK 枚举 dp

这样就需要算到每个基站能够影响到的村庄,然后又去打了线段树优化建图。(后期 tip :这就可见一些知识点真的会助长不正确的思路)

这样的话就需要用线段树存下每种情况的状态,根据状态算出相应的费用。

一开始还在犹豫时空复杂度会不会爆,但是后来又想到线段树合并的时候大多是把各棵树上的节点东拼西凑在一起,实际上没有多少个节点,大概不会爆空间。

然后就放心打了。至于时间复杂度,那就随他去吧……

然后代码也打出来了,提交之后只有十分。

那这怎么办?已经做了好几天了,无法,看题解吧。

3

题解的思路没有见过,他只是设了一个功能不全的dp数组。

我看到这个的时候都是傻的,怎么还有这种操作?

然后按照题解的思路打了一下,欸,还真对。

然后就果断交上去了,结果 tle40 分。

后来分析了一下,是每次循环的时候在原数组上修改导致线段树合并的时候节点太多。

明白之后就改成了每次都新建一棵树,结果 mle60

真的是!不让人活了!

最后还是发挥聪明才智,在修改的时候模拟了一次退化,再开个 O2 就过了。

4

事后想一下,黑题跟普通题有什么区别呢?

它更难调吗?所有题都难调。

它代码恶心吗?还不如打模拟。

它思路清奇吗?有些小题目也很让人拍案叫绝。

我觉得,黑题的真正难度在于,它虽然在上面的每一项都不是很强,但是它能把每一项都结合起来。

在打其他题的时候能够糊弄过去的弱项,在这里就很难糊弄过去,因为它考的点很多。

比方说,只是一个单纯分析复杂度,别的差点也就差点吧,这个却卡得很死,差一个 log 都不行。

综合性,大约是所有题目难的根源。

5

做完这个题之后,学到什么了呢?

首先,做题是要有一定的流程性的。比方说先看到这个题要用到 dp ,就先从最基础的转移式想起,逐步分析复杂度,对于冗杂的地方进行优化……

这种规范性,是要有的。

其次,题出出来就是给人做的,就是一定能做出来的。尤其是分析出难题本质上是综合题之后就更没有什么可怕了,哪卡住了说明哪有欠缺,就算现在跳过了,也迟早要还的。(话虽这么说,但是下一道黑题我实在也不想再做了)

最后,还是对于题解的把握度吧。要是不看题解,我很难想到这种思路;要是之后尽看题解,我也不会想出模拟新建的做法。

at last

我还要回去看看原来的思路到底为啥不行……

posted @   curly_6  阅读(78)  评论(5编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示