2017.2.14-15自测(那些普及神题)

时间太散了就硬生生拖了两天、、

这次挑战的题目全是普及组、、

  1、车站分级            2、推销员          

先插入一个TA对普及一题的评价。




第一题:想到了一个很神(弱)的建图方式,即不经过的向经过的连边,最后遍历深度即可。。而且从入度为0的开始搜,看起来是个强力的剪枝。。

      交之前:哈哈,这么神的做法,肯定A了。

     交之后:                      —.— 、    20、、

WOC    就对了两个样例,其他全T了。         呵呵,20我收下了。  不过就算把dfs直接去了,也还有3个点是T、建图好像就超时了、、

默默看题解: 噢,这里其实有一个很神的优化,就是用双重表来表示连与被连的关系。


因为一次是给一批点加相同的一批点,所以这样处理简直就是优化神器。

说白了就是根据连边的特性来优化。

再加上记搜,快的飞起。


第二题:dp竟然会超时,n^2就爆了。

思考贪心策略很久,有了一个或许可行的方法。

      就是倒过来每一步删一个点,这个点如果小于最远距离且最小就删掉,如果等于最远距离就和第二小与最远距离的的点做选择。

其实很多时候都会犯这样的错误,事实上这种反着想的策略和正着想是等价的,刻意从反面入手有时是不必要的。

这题正解是利用每次修改的特性维护优先队列。

now初值为0,从now到n找一个修改终点比他大的作为终点。类似于这个东西:



感觉这是一种新型的,很有用的维护方式。它将每次决策都缩得很少,因为按最大取,不可能出现回选的情况,所以直接用带指针的队列搜寻,效率很高,平均n*logn的效率。






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值