zoukankan      html  css  js  c++  java
  • 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?

  • 相关阅读:
    POJ 3164 Command Network 最小树形图 朱刘算法
    区间dp专题
    HDU2896病毒入侵AC_自动机
    HDU2222Keywords Search AC_自动机
    Linux cat命令参数及使用方法详解
    MySQL分支Percona, cmake编译安装
    PHP网站简单架构 – 单独跑php-fpm
    Tengine – Nginx衍生版
    jemalloc优化MySQL、Nginx内存管理
    TCMalloc优化MySQL、Nginx、Redis内存管理
  • 原文地址:https://www.cnblogs.com/Zn-H/p/6722570.html
Copyright © 2011-2022 走看看