• Codeforces Round #102 (Div. 2) //缺E


    -----------------------

    A. Help Vasilisa the Wise 2

    ---

    暴力枚举

    ---

    #include <iostream>
    
    using namespace std;
    int r1,r2,c1,c2,d1,d2;
    int a[2][2];
    bool solve()
    {
        if (a[0][0]+a[0][1]!=r1) return false;
        if (a[1][0]+a[1][1]!=r2) return false;
        if (a[0][0]+a[1][0]!=c1) return false;
        if (a[0][1]+a[1][1]!=c2) return false;
        if (a[0][0]+a[1][1]!=d1) return false;
        if (a[0][1]+a[1][0]!=d2) return false;
        return true;
    }
    
    int main()
    {
        bool flag=false;
        cin>>r1>>r2>>c1>>c2>>d1>>d2;
        for (int i=1; i<=9; i++){
            for (int j=1; j<=9; j++){
                if (i==j) continue;
                for (int k=1; k<=9; k++){
                    if (k==i||k==j) continue;
                    for (int l=1; l<=9; l++){
                        if (l==i||l==j||l==k) continue;
                        a[0][0]=i;
                        a[0][1]=j;
                        a[1][0]=k;
                        a[1][1]=l;
                        if (solve()){
                            flag=true;
                            break;
                        }
                    }
                    if (flag) break;
                }
                if (flag) break;
            }
            if (flag) break;
        }
        if (flag){
            for (int i=0;i<2;i++){
                for (int j=0;j<2;j++){
                    cout<<a[i][j]<<" ";
                }
                cout<<endl;
            }
        }
        else{
            cout<<-1<<endl;
        }
        return 0;
    }
    -----------------------

    B. Help Kingdom of Far Far Away 2

    ----

    对字符串处理

    ----

    #include <iostream>
    #include <cstring>
    #include <cstdio>
    using namespace std;
    char s[1111];
    char a[111],b[111];
    int main()
    {
        bool dec=false;
        bool dot=false;
        cin>>s;
        if (s[0]=='-') dec=true;
        int len=strlen(s);
        int la=0,lb=0;
        for (int i=dec;i<len;i++){
            if (s[i]=='.'){
                dot=true;
                continue;
            }
            if (!dot) a[la++]=s[i];
            else b[lb++]=s[i];
        }
        a[la]=0;
        b[lb++]='0';
        b[lb++]='0';
        b[lb]=0;
        len=0;
        if (dec) s[len++]='(';
        s[len++]='$';
        int m=la;
        for (int i=0;i<la;i++){
            if (m%3==0&&m!=la) s[len++]=',';
            m--;
            s[len++]=a[i];
        }
        s[len++]='.';
        for (int i=0;i<2;i++) s[len++]=b[i];
        if (dec) s[len++]=')';
        s[len]=0;
        cout<<s<<endl;
        return 0;
    }
    -----------------------

    C. Help Farmer

    ---

    枚举剩下的n块方格能拼成的立方体。

    对每一种可能的立方体尝试3种可能的被切割方式(A-2)(B-2)(C-1).....(A-1)(B-2)(B-2)......

    取其中的最大值和最小值。

    ---

    #include <iostream>
    
    using namespace std;
    typedef long long LL;
    const LL INFF=(1LL << 60);
    int main()
    {
        LL n,m,c,res;
        LL Max=0,Min=INFF;
        cin>>n;
        for (LL i=1;i*i<=n;i++){
            if (n%i==0){
                m=n/i;
                for (LL j=1;j*j<=m;j++){
                    if (m%j==0){
                        c=m/j;
                        res=(i+1)*(j+2)*(c+2)-n;
                        Max=max(Max,res);
                        Min=min(Min,res);
                        res=(i+2)*(j+1)*(c+2)-n;
                        Max=max(Max,res);
                        Min=min(Min,res);
                        res=(i+2)*(j+2)*(c+1)-n;
                        Max=max(Max,res);
                        Min=min(Min,res);
                    }
                }
            }
        }
        cout<<Min<<" "<<Max<<endl;
        return 0;
    }

    -----------------------

    D. Help General

    ---

    令1表示有马,0表示无马。

    当n=1或m=1时 

    1111111111..... 为最佳排列

    当n=2或m=2时    

    110011001100.....

    110011001100.....为最佳排列

    其他情况下

    1010101010....

    0101010101....

    1010101010...

    0101010101...最佳

    ---

    #include <iostream>
    
    using namespace std;
    
    int main()
    {
        int n,m;
        cin>>n>>m;
        if (n==1||m==1){
            cout<<n*m<<endl;
            return 0;
        }
        if (n==2||m==2){
            if (n<m) swap(n,m);
            int c=(n/4)*2;
            if (n%4>0) c++;
            if (n%4>1) c++;
            cout<<c*2<<endl;
            return 0;
        }
        int a,b,c,d;
        a=(n+1)/2;
        b=(m+1)/2;
        c=n/2;
        d=m/2;
        cout<<a*b+c*d<<endl;
        return 0;
    }



    -----------------------


  • 相关阅读:
    js获取日期周数
    PowerDesigner 生成SQL Server 注释脚本
    HTML中的&nbsp; &ensp; &emsp; 等6种空格标记
    创建Windows任务计划定时调用网页执行任务(通过Windows PowerShell的Invoke-WebRequest实现)
    提取全局应用程序集中的dll
    silverlight发布设置
    PowerDesigner 生成SQL Server 2005 注释脚本
    .net core 发布时视图Views文件夹不被打打包成.dll文件解决办法
    .net core 如何使用Senparc.Weixin 给指定的用户发送消息
    js禁止浏览器的回退事件
  • 原文地址:https://www.cnblogs.com/cyendra/p/3681639.html
Copyright © 2020-2023  润新知