首页 > 代码库 > 长沙雅礼中学集训-------------------day3

长沙雅礼中学集训-------------------day3

今天的收获还是蛮大的,终于体会了一波在知识的海洋中遨游的美滋滋的快感。

T1:给你N个点的位置和他们的速度,这些点向一个方向移动,求前M次超越者的集合A和被超越者的集合B(集合为这些点的速度),以及从A和B中各取一个并相乘,第k小的那个积。

数据范围:N<=1e5,M<=1e5,K<=M*M,起始位置和速度<=1e9

emmmm,写的是10分的暴力,可是出了一些奇奇怪怪的问题没有拿到这十分。

10分:直接暴力的算出交点,并且排序即可。

30分:在算交点前二分出一个时间,让算出的每次超过的时间都小于这个二分出的时间,我们把这些点运动都画在一个平面直角坐标系中(就像物理中的s/t图像),二分时,将二分的值带入直线求出走的路程,将路程排序,每一条直线原来的位置减去 现在的位置就是它超过了多少条直线减去被超过的数量,将超过了一定数量的直线的贡献加 起来,这个数是小于实际值的,但是也能够二分出一个优秀的时间,总超越数小于m 即可。 

  然后将满足条件的交点丢入小根堆中,弹出前m 个。排序求k 大。

50分:在30分的基础上,二分求k,不用堆。

AC:考虑:两个点被超过的话,两个点只能是相邻的,用堆维护两个相邻的点,如果被超过就交换一下,当然用堆的话只能拿50分,要ac的话还是要和前面说的那个50分结合起来。

T2:这个题是我觉得出的真心良心的一道题,很美滋滋,因为这道题的暴力分给的非常足,暴力就有30,题目有一堆公式,这里就直接贴图片好了技术分享

这个题的30分是非常好拿的,可以把所有要用的全都给他暴力算出来,30分就美滋滋了,但是因为考试的时候那个d|n不知道是什么意思,所以这30分就没有拿到,很气。

AC:数学题当然还是要推公式,用斐波那契数列数列的通项公式,用二项式定理展开计算,有一部分可以用等比数列来计算出来,要注意讨论公比=1的情况,另一部分可以用莫比乌斯反演+筛法来计算(哎,这就是我们和湖南oi的差距吧)。自己已经把式子展开过试了试,发现了等比数列,但是莫比乌斯反演这种东西emmmmmm................

T3:给一个数组A[1...n],建立一个完全图,满足(u,v) ,边权为A[u]^A[v],求图的最小生成树和方案数(方案数需要mod 1e9+7)

20分:暴力dfs

50分:矩阵树定理(orz,这个真的听都没听说过)。

另外10分:数据约定全部A[i]=0,我觉得这个方案数就是n!/2,比如当n=5的时候,我们先确定1->2->3另外的4 5就有两种情况。这是在确定前三个的情况下,如果是前两个确定的话,由于第三位可以放3,4,5,所以方案数是2*3,那么当一个都不确定的时候就应该是2*3*4*5.出题人给的暴力说的是用cayley定理(orz又是没学过的)。

AC:我们将最高位为1的分成一堆(S),为0的分成一堆(T),连边的方式就是S成一个数,T成一棵树,S向T连接一条边(有证明的,这里略了),然后用trie树可以发现trie树的操作正好能够帮助我们分成这两堆,再贪心的求最小边就行。

今天下午讲的是字符串,大部分也都是学过的,唯独一个后缀树没学过,但是听讲课的大佬说后缀树大部分都是可以用后缀树组和后缀自动机完成的,虽然学会了后缀树的建树方法,但是还是不知道要怎么用。

下午收获最大莫过于用稳定的时间复杂度来求ac自动机的fail指针,复杂度可以稳定的达到字母集*n,而不是均摊到O(n),均摊的复杂度有时候能被卡到O(n^2)。

过了三天了,还是有一些感慨的,还是认识到了自己和别的大佬的差距,不论是思维结构还是知识的储备量,所以还是要加油吧。

总结:辣鸡ysc

 

长沙雅礼中学集训-------------------day3