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;
    }
    

      

  • 相关阅读:
    个人冲刺二(7)
    个人冲刺二(6)
    个人冲刺二(5)
    个人冲刺二(4)
    对称二叉树 · symmetric binary tree
    108 Convert Sorted Array to Binary Search Tree数组变成高度平衡的二叉树
    530.Minimum Absolute Difference in BST 二叉搜索树中的最小差的绝对值
    pp 集成工程师 mism师兄问一问
    17. Merge Two Binary Trees 融合二叉树
    270. Closest Binary Search Tree Value 二叉搜索树中,距离目标值最近的节点
  • 原文地址:https://www.cnblogs.com/RUSH-D-CAT/p/6391086.html
Copyright © 2011-2022 走看看