zoukankan      html  css  js  c++  java
  • AtCoder Beginner Contest 055题解

    A.当a=1就把a改成14,b=1就把b改成14,然后比较a,b大小即可。

    #include <iostream>
    #include <algorithm>
    #include <cstdio>
    using namespace std;
    int a, b;
    int main()
    {
        cin >> a >> b;
        if(a==1) a=14; if(b==1) b=14;
        cout << ((a>b)?"Alice":((a==b)?"Draw":"Bob")) << endl;
    }
    
    /*
    比赛的时候的代码,狠智障地把题读错了。
    但居然AC啦! 很迷啊~
    #include <iostream>
    #include <algorithm>
    #include <cstdio>
    using namespace std;
    const int NICO = 200000 + 10;
    int a, b;
    int main()
    {
        cin >> a >> b;
        int ans;
        if(a > b) ans = 1;
        if(a < b) ans = 2;
        if(a ==b) ans = 3;
        if(a==1&&b==13)ans = 1;
        if(a==13&&b==1)ans = 2;
        if(ans == 1) cout << "Alice";
        if(ans == 2) cout << "Bob";
        if(ans == 3) cout << "Draw";
    }
    */
    

    B. 数据范围这么小~ 直接暴力,用4重循环check,岂不美哉!

    #include <iostream>
    #include <algorithm>
    #include <cstdio>
    using namespace std;
    const int NICO = 200000 + 10;
    int n, m;
    char s1[60][60],s2[60][60]; 
    int main()
    {
        cin >> n >> m;
        for(int i=0;i<n;i++) scanf("%s",s1[i]);
        for(int i=0;i<m;i++) scanf("%s",s2[i]);
        int ok = 0;
        for(int i=0;i<=n-m;i++)
        {
            for(int j=0;j<=n-m;j++)
            {
                int ac = 1;
                for(int a=i;a<i+m;a++)
                {
                    for(int b=j;b<j+m;b++)
                    {
                        if(s1[a][b] != s2[a-i][b-j])
                        {
                            ac = 0;
                        }
                    }
                }
                if(ac) ok = 1;
            }
        }
        cout << (ok?"Yes":"No") << endl;
    }
    

    C.数据范围比较小的TSP,继续暴力!

    不过这个dfs写得真心难看!

    #include <iostream>
    #include <algorithm>
    #include <cstdio>
    #include <vector> 
    using namespace std;
    const int NICO = 200000 + 10;
    vector<int> vec[100];int n, m;
    int res = 0, a[10];
    void dfs(int used[], int x)
    {
        int ok = 1;used[x] = 1;
        for(int i=1;i<=n;i++)
        {
            if(!used[i]) ok = 0;
        }
        if(ok) {res ++;return;}
        for(int i=0;i<vec[x].size();i++)
        {
            int cur = vec[x][i];
            if(used[cur]) continue;
            int b[10];for(int j=1;j<=n;j++) b[j]=used[j];
            dfs(b, cur);
        }
    }
    int main()
    {
        cin >> n >> m;
        for(int i=1;i<=m;i++)
        {
            int a, b;cin >> a >> b;
            vec[a].push_back(b);
            vec[b].push_back(a);
        }
        dfs(a, 1);
        cout << res << endl;
    }
    

    D.活生生的一个背包, ans[i][j][k]: 表示使用前i个物品,凑成j克a物质,k克b物质最小耗费。

    ans[i][j][k] = min (ans[i-1][j-a[i]][k-b[i]] + c[i], ans[i-1][j][k]);(初始化:ans[0][0][0]=0,其它为INF)

    如果追求简洁の美感,可以把i省略掉,降一下ans数组的维度。

    ps:降低维度的时候记得改变j, k的循环方向!喵!喵!喵!

    #include <iostream>
    #include <algorithm>
    #include <cstdio>
    #include <vector> 
    using namespace std;
    const int INF = 10000007;
    int ans[402][402];
    int n, ma, mb;
    int a[42],b[42],c[42];
    int main()
    {
        for(int i=0;i<=400;i++)for(int j=0;j<=400;j++)ans[i][j] = INF;
        ans[0][0] = 0;
        cin >> n >> ma >> mb;
        for(int i=1;i<=n;i++)
        {
            cin >> a[i] >> b[i] >> c[i];
        }
        for(int i=1;i<=n;i++)
        {
            for(int j=400;j>=a[i];j--)
            {
                for(int k=400;k>=b[i];k--)
                {
                    ans[j][k] = min(ans[j][k], ans[j-a[i]][k-b[i]] + c[i]);
                }
            }
        }
        int res = INF;
        int A = ma, B = mb;
        while(A<=400&&B<=400)
        {
            res = min(res, ans[A][B]);
            A += ma; B += mb;
        }
        if(res == INF) cout << -1 << endl;
        else cout << res << endl;
    }
    

      

  • 相关阅读:
    Matlab中tic和toc用法
    matlab 哪个函数可以从一组数据中随机抽取一部分出来
    matlab中rep函数的用法
    WinCE平台搭建数据库(wince6.0+vs2008+sqlce)熙熙
    熙熙如何在WinCE里上QQ(天嵌WinCE开发板,PocketPC仿真模拟器,QQ)
    数学建模方法灰色预测法
    数学建模方法层次分析法
    数学建模方法多属性决策模型
    数学建模方法Floyd算法
    数学建模方法Dijkstra算法
  • 原文地址:https://www.cnblogs.com/RUSH-D-CAT/p/6391086.html
Copyright © 2011-2022 走看看