首页 > 代码库 > HNOI2017省选酱油记——Zn_H

HNOI2017省选酱油记——Zn_H

       先稍微总结一下吧。

这次省选感觉有点搞头,DAY1暴力也有120……但是我DAY1没打第三题暴力(70分),感觉大亏。

       第二题会做但是也没打暴力对拍……很显然我太天真太naïve了……于是就拿了50分。

       第一题也蜜汁挂掉了,现在我都不清楚为什么。

       DAY2我深刻认识到了暴力的重要性,但是开考的时候发现,这暴力好像不太好打……于是打了第三题30分暴力,第一题爆搜+剪枝,第二题骗分。

       然后发现第三题能打70分,然后用30分程序拍了下感觉OK了。

       意外之喜是T1拿到了40分,T3被卡常拿了55,T2骗到10分(身边的某同学骗到50),DAY2有105分。

       然后总分155,拿到这个分还是比较不尽人意,本来应该的得分应该是:

       DAY1 20+100+70=190

       DAY2 40+10+70=120

       这样是有310的(我好像刚好拿了一半……)

       自己还是比赛啊考试什么的打的比较少,暴力的优先级永远是比正解高的,这种常识性的问题我没意识到是很严重的一件事,以及联赛分数真的也很重要,各个角度来说。

       几个高二的学长也离开了机房,OJ群里也在刷AFO,竞赛真的是一件很残酷的事,风险与利益并存就是这样吧。

       未来永远都只能够自己争取,没有人会也没有人能给你怜悯与帮助。

       选择了竞赛就只能如此。

       “前进!前进!不择手段地前进!”

【DAY1】

       【T1】

              暴力,拿20。

       【T2】

              这道题与去年的序列那道题大同小异,用线段树维护标记。

              一个数对于答案的贡献仅与它为最大值的区间有关。

              先讨论p1,p1的第一种情况是两数相邻,这种情况直接ans+=(r-l)*p1就可以了,

     p1的第二种情况对应每一个数,比如 4 3 2 6,以4为最大值的是1~3,但是由于左边没有比它大的所以4贡献为0,而2,3的贡献都为p1,6右边没有比它大的所以贡献为0。

     再讨论p2,对于形似&***^***&的区间(这个区间以^为最大值,*号是比小的,&是比^大的)它的贡献是左端点在&右端点在*,或者右端点在&左端点在*两种情况,设^的下标为x,左右&分别为l,r,那么贡献为

     ①(x-l-1)*p2+②(r-x-1)*p2,我们分开讨论

     ①(x-l-1)*p2=x*p2-l*p2-p2那么就是一个常数项标记与n*p2的标记,首先对于一个询问其有贡献的前提是x在询问区间内,对于①我们用扫描线枚举右端点,根据左端点在l~x与1~l两种情况打两个标记。

     假如当询问端点在l~x之间时,我们不知道它的l*p2究竟是多少,所以这种情况我们把这段区间的二号标记加上p2,常数项加上x*p2-p2。

     如果在1~x区间那么以x为最大值的区间的贡献是一个常数项,给一号标记加上。

     ②同理,但是是枚举左端点。

     然后扫描的时候单点查询,统计答案。

              (我讲的不太好,没做去年那个题的最好去做一下)

       【T3】

              求i=1~n的(xi-yi-k)^2的和

              把式子展开发现k是固定不变的,只需要n^2枚举循环和统计即可(70分)

              你会FFT的话这题就A了

【DAY2】

       【T1】

              爆搜剪枝40分。

       【T2】

              不会暴力,输出(0,0)到终点的直线距离10分

              排序每次选x最近的连边,不管走不走得过去50分

       【T3】

              一开始我还在想给我p是想干什么,然后打完DP发现是DP值是组合数

     P指的是膜10^p,拆开(2*5)^p=(2^p)*(5^p),从C(0/n)递推,一路需要除以i,乘以(n-i+1),把他们两个都一直除以5和2,除完就和10^p互质了,然后求逆元,分解i的时候        

      (pri[0]=2)cnt[0]--,(pri[1]==5)cnt[1]--。分解(n-i+1)就++(相当于抵消了),然后这么得到的几个值的乘积记为s,要求C(i/n)就再乘上两个质因数的快速幂即可。

              复杂度((nlogn)*10)能拿55分,预处理一下估计可以搞到70?

HNOI2017省选酱油记——Zn_H