zoukankan      html  css  js  c++  java
  • 区域赛套题 第二场解题报告

    解题报告转摘自其它博客。

    最好看这里 http://acmicpc.info/archives/1229

    A  这题非常简单,全场所有队都过了。

    B      此题只需要枚举每个盒子还剩了几个糖,算出其概率就可以了,不过需要推一会儿公式。

            i = 0,1,...,n

    C
      分两部分处理。首先计算出周长为L的本质不同三角形个数,可以O(n)递推;而后对于原问题可以直接枚举n的约数来处理。源代码主干如下:
       

     for(int i=1; i<ran; i++)  a[i]=add(a[i-2],i/3-i/4);
     for(int i=1; i<ran; i++)  for(int j=i+i; j<ran; j+=i)   a[j]=add(a[j],mod-a[i]);
     for(int i=1; i<ran; i++)  for(int j=i,t=a[i]; j<ran; j+=i,t=add(t,t))   g[j]=add(g[j],t);

    D
      设一个阈值T,度<=T的点设为度小的点;其他点设为度大的点。对于每个度大的点记录一个其各颜色度小邻居列表,以及记录度大点互相之间的边列表。

      对于度小的点的变色操作直接维护与他相邻的所有边的信息;对于询问操作,依次询问每个度大的点的所有信息就可以了。

      在T取得比较合适的情况下,时间复杂度大约是每次操作O(n^(2/3))。此题唯一需要注意的地方是有重边要合并。

    E 据说标程是KMP,我不会做。

    F:
       基本想法是枚举造了多少个农民。显然在造了至多X个农民之后我们就可以在造农民这段时间内攒出造一个农民的钱了(也就是说现在只是缺CD不缺钱了),因此,首先模拟到造满X个农民的情况,以后,造农民的过程成为了连续的过程。而且农民个数-需要的时间的这个函数是单峰的,因此可以三分造了多少个农民。此题需要注意的地方还有需要高精度。

    G:
    首先用O(n^2)时间构造一张表表示从a到b(inclusive)我总共赢了多少局,最后没打完的一局是从哪儿开始的;然后枚举p和q,利用刚才那张表,把模拟一组(p,q)的过程复杂度降到O(1)。细节问题非常多。

    H:
    设L=max(m,t,t_i)。先将所有输入整理为长L的形式。在作了一些矩阵的平方之后得到了最多O(qlogn)个矩阵。然后用初始的L个值依次左乘这些矩阵,结果时间复杂度为O(qL^2logn),比把那些矩阵直接乘起来小了一个L.

    I   DP

    J
    此题就是询问a*b*c<=n的有序三元组(a,b,c)的数目。显然a,b,c当中至少有一个<n^(1/3),设为a,枚举这个数;而后b,c当中至少有一个<(n/a)^1/2,枚举这个数。通过积分可知,这样做的复杂度为O(n^2/3)。


    K
    此题如果处理得不好可能会造成非常多的特殊情况需要特判。一种比较简洁的处理方法是:首先建有向图i->(i*10+j)%n,然后沿着这个图反向从0'广搜0算出每个点到0的最短距离,最后从0开始沿着这个图正向广搜,利用刚才的最短距离表直接递推出答案的每一位。另一种处理方法是直接用string记录答案,不过要注意常数。时间复杂度每组数据O(n)。






  • 相关阅读:
    vue-cli3.0配置开发环境,测试环境,线上环境
    jQuery使用CDN加速
    浏览器中JavaScript脚本代码的load、ready等方法的加载顺序
    使用 JavaScript 拦截和跟踪浏览器中的 HTTP 请求
    Node和NPM在Windows环境下绿色安装及配置
    Nodejs 中将html转换成pdf文件
    数学励志公式:每天进步一点点
    网页调用打印机打印时纸张A4的设置
    用JS或jQuery访问页面内的iframe,兼容IE/FF
    HTML to DOM
  • 原文地址:https://www.cnblogs.com/yefeng1627/p/3039181.html
Copyright © 2011-2022 走看看