您的位置:首页 > 其它

DAY2贪心&分治

2018-02-06 21:34 162 查看

早上考试

先看了第1题,看到最大值最小,以为是二分。后来发现毫无头绪,或许这就是贪心吧。于是开始头皮发麻。决定选择性放弃它,先看看后面的题目。第二题题目“区间”,我就有一种不祥的预感,觉得是DP。果真如此。完全没有可做性,暴力根本不会。于是就去看第三题了。

T3

题目描述什么菜谱什么的,让我不由自主想到了可怕的食物链,不禁心慌,以为并查集来了。后来发现就是一道图论吧。她正解讲的什么我真的听不懂。你知道我用什么做吗?我用拓扑。因为我发现它是一个约束关系,让我不由自主就想到了拓扑。所以我就想求一个最长拓扑序。

之后做着做着就发现问题开始变得复杂——第一,它会有多种情况,这是肯定的。以前我们做的拓扑都是只要求出一种拓扑序就可以了,但是现在要求最长的话,就会有很多种情况,最后我决定深搜dfs,当然这个时间复杂度是骇死人的。第二,这个拓扑序可不像原来的那个bfs,这个题目要求的一定要是相邻的构成约束关系。

所以我现在总体的思路是——先搜一遍,把所有入度为0的点挑出来,然后从每个点开始分别做拓扑排序,求出这里所有点的拓扑序的最长长度就是答案。然后每一遍拓扑排序中,一个点进队之后,用邻接表存储的话就是直接用那个很强大的循环搜一遍它能达到的相邻结点,然后深搜继续拓扑。但是这边那些回溯、最大值的处理可以说是让我耗尽了许多脑细胞。因为昨天刚讲过搜索剪枝,我也深知这道题肯定会T,所以就在那边想想怎样可以剪枝。然而无果。后来我就放弃了,因为这道题已经做了2小时了。事实是,只得了10分,有点懵。这几乎可以算是我唯一花了心血去做的题目。

T2

接着我打算把这道我根本不可能完成的DP敲完,然后心无旁骛地去思考第一题。可我用了种种办法,至今不知道状态转移怎么搞。于是,在没有办法的情况下,死马当作活马医,我就考虑把它分成两组的情况,骗个几分。事实是,爆0,一分没骗到。

T1

最后来功克难关。我其实做这道题写了一页的草稿纸,我进行了种种思想斗争,我有我想过暴搜,有想过哈希,有想过离散化,有想过队列,有想过单调栈。事实是,这些好像都不是正解。我得了60分,可以说是意料之外的。我竟然有60分。惊了。我其实在很匆忙的十分钟内更进了很多东西。

我一开始是这么想的,打个比方:2 8 2 8,这样的排列,ans=2;然后我换了一下:2 8 8 2,ans还是2;还有一种情况:8 2 2 8,ans也=2。所以我发现,只要有两队数它们交叉排列,也就是我中有你或是你中有我,也就是只有上面的这三种排列方式,需要把哑铃举起来,而ans一直都是它们中的较小值。所以我最后决定用一个队列来维护,但是我的进队出队什么之类的更值可以说是思路很乱了。我是这么想的,每当遇到了跟自己一样的数,就说明它跟之前的那些数有交叉关系,可我只能用暴搜来搜索前面的数,复杂度极高。本来想用离散化,但是一时间写不出来了,嗑死我了。然后每当遇到了,我求的是在它之前的比它小的数的最大值,如果没有比它小的数,那么就是它本身。那么问题又来了,一共有2行,它有些哑铃分布在第一行和第二行,那么会导致答案有错。我在最后十分钟改了这个问题——还是暴搜,因为实在用不了离散化…把这些分布在两行的数找出来,然后如果碰到的话,它们是肯定要举起来的,那么碰到的时候就可以自动跳过,计算的时候也要把它们中的最大值当做一部分。因此,如此仓促的程序竟然也有60分…

下午贪心&分治

我实在是太困了,睡了一个中午还不够,因为我昨天晚上实在是太高兴了,就像吃了亢奋剂一样在那边高兴得要死,也不知道抽了什么风。然后本来我想很努力的听课,但心有余而力不足,一看到她讲的那些题目,高深的思路,再加上刘老师还没有填的那么许多的坑,我也是身心俱疲。贪心真的是玄学,真的。。但是那些题目还是比较有意思的。而分治,讲了什么??二分答案、二分图匹配、匈牙利算法、树分治……之后还拓展了什么网络流、线段树……当然最令我高兴的是LCA,这个真的是我自学出来的,花了一个上午,特别有成就感。然后我们就下课了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: