2019.07.16考试报告

考试报告

0~1h

搞出了T1T2写完之后瞬间过了样例,后来才发现我的状压数组开的是f[N]而不是f[1<<N]。直接WA20

1~2h

写了一个T3的n^3暴力去跟n^5对拍,没啥毛病(n^5,n^3都是27分。。。)

2~3.5h

这个时间段有点颓,想T3也想不出来了,检查T1T2也没查出错,一直等到交卷。

T1礼物

式子很典型就不说了,主要说一下为什么要倒推。

根据Ts_Hugh学长讲的,我们正着推时概率并不是选那个物品的概率,而是一个常数,几乎没啥规律,

如果非要正推的话就必须搞出概率,如果是反着推的话就不会出现上述情况了。

所以有大佬总结道:概率正着推,期望逆着推。

T2通讯

Tarjan缩点+Top排序,一道水题。

T3奇袭

(一)27分算法

考场上写了n^5和n^3的暴力,一个拍另一个,最后喜感地得了27分,不详细说了。

(二)100分算法

55,64分算法都没打,直接打的正解。

首先我们把点坐标的横坐标作为数组下标,纵坐标为数组里的数,问题便转换为了:

问有多少个区间满足 r-l=max(l...r)-min(l...r)

这个题用分治和线段树都可以,我这里讲分治的。

首先二分l,r,mid,这样左右两侧的区间便可以递归解决,现在考虑跨mid的区间对答案的贡献。

我们定义4个数组lmin,rmin,lmax,rmax代表l到mid,mid+1到r的最大最小值。

1>min max |

r-l=rmax[l]-lmin[l],我们可以发现这个式子可以枚举左端点,O(1)查询r,之后判合法即lmax>rmax&&rmin>lmin即可

2>min | max

便有r-l=rmax-lmin,lmin<rmin,lmax<rmax。

我们便可以根据max,min的单调性搞出两个指针,没枚举到一个l时都不断移动指针使其合法,并且同时把a[]在桶数组里加上或减掉。

3> 4>情况与1> 2>对称思路是一样的。

 

原文地址:https://www.cnblogs.com/AthosD/p/11197712.html