zoukankan      html  css  js  c++  java
  • [群内模拟3.25]过生日,方程狂魔,监视

      这一周是clz出题,他的博客:http://www.cnblogs.com/pinkrabbit

      一共是3题,整体难度大约是普及+/提高,三题覆盖了DP、数学和图论的内容。难度排序是T1<T2<T3。

      第一题:过生日,要求给定一个01图,求一个最大的正方形覆盖的区域都是0的正方形边长。

      容易看出这就是一个O(nm)的dp,f[i][j]表示以(i,j)为右下角的点的正方形的最大边长。

      对于一个不在左或上边界的点,我们找出它左边和上方的最长0段(扫的时候顺便计算)和左上角的点的最大正方形边长取个min就是它的最大边长。

      本题细节不多,大约普及T4的难度。

      代码如下:

    #include<cstdio>
    using namespace std;
    int n,m,row[3001],lin,dp[2][3001],maxn;
    int mn(int x,int y){return x<y?x:y;}
    int mx(int x,int y){return x>y?x:y;}
    int main()
    {
        freopen("birthday.in","r",stdin);
        freopen("birthday.out","w",stdout);
        scanf("%d%d",&n,&m);
        for(int i=1;i<=n;i++)
        {
            lin=0;
            for(int j=1;j<=m;j++)
            {
                char c=getchar();
                while(c!='0'&&c!='1')c=getchar();
                bool a=c=='0'?0:1,k=i&1;
                if(a)lin=j,row[j]=i;
                int sq=mn(i-row[j],j-lin);
                sq=mn(sq,dp[k^1][j-1]+1);
                dp[k][j]=sq;
                maxn=mx(maxn,dp[k][j]);
            }
        }
        maxn>2?printf("%d",maxn):printf("Impossible");
        return 0;
    }

      第二题:方程狂魔,求的所有正整数对(x,y);

      思路:由题中方程组我们可以通分得到,那么把它分解可得,也就是要计算的正因数个数。

         那么我们根据因数个数公式:进行质因数分解,用筛法处理就做完了(不会线筛的悲哀)。

         赞一下出题人,细节真心少,码起来带劲!


      P.S.1:我在题面中被出题人狠狠地D了一番。。

      P.S.2:公式打得好累。。

      下面贴上代码:

    #include<cstdio>
    using namespace std;
    const long long clz=1000000007;
    int n;long long ans=1;
    bool prime[10000001];
    int main()
    {
        freopen("devil.in","r",stdin);
        freopen("devil.out","w",stdout);
        scanf("%d",&n);
        for(int i=2;i<=n;i++)if(!prime[i])
        {
            for(int j=i+i;j<=n;j+=i)prime[j]=1;
            long long m=0;
            for(long long j=i;j<=n;j*=i)m+=n/j;
            ans=(ans*(m*2+1))%clz;
        }
        printf("%d",ans);
        return 0;
    }

      第三题 监视

      还记得被NOIP2016的Day1T2的天天爱跑步(running)支配的恐惧吗!完完全全的原题!不过加上了最小生成树建树。

      难度:显然是提高D1T2。

      代码就不贴了吧。

      树的处理什么的都是大!丧!题!

    本文由qrc出品,若不在本博客上看到,请与本人联系。 网址:http://www.cnblogs.com/qrcer
  • 相关阅读:
    datetime模块
    python正则表达式练习题
    Python入门——turtle库的使用
    Python入门——Python程序语法元素
    Python入门——eval() 函数
    Python入门——实例1_温度转换
    Python入门——编程方式
    Python入门——程序的基本编写方法
    Python入门——编译和解释
    SQL中isnull、ifnull和nullif函数用法
  • 原文地址:https://www.cnblogs.com/qrcer/p/clz.html
Copyright © 2011-2022 走看看