美文网首页
贪心Hdu1052田忌赛马

贪心Hdu1052田忌赛马

作者: 我好菜啊_ | 来源:发表于2018-03-23 12:37 被阅读0次

    两个版本我都写了不知道为什么一直wa=========啊
    唉真是跟网上的代码一行一行都对过了,算了吃饭去了,难受
    希望我可以早日明白到底是怎么回事
    另外这位兄弟写的不错
    https://www.cnblogs.com/DOLFAMINGO/p/7538779.html

    #include <iostream>
    #include <vector>
    #include <algorithm>
    using namespace std;
    int main()
    {
        int n;
        vector<int> tian;
        vector<int> qi;
        int h;
        int ans;
        int flag = 0;
        while (cin >> n&&n) {
            if (flag)
                cout << endl;
            flag = 1;
            ans = 0;
            for (int i = 1; i <= n; ++i) {
                cin >> h;
                tian.push_back(h);
            }
            for (int i = 1; i <= n; ++i) {
                cin >> h;
                qi.push_back(h);
            }
            sort(tian.rbegin(), tian.rend());//降序
            sort(qi.rbegin(), qi.rend());
            int l1 = 0, l2 = 0, r1 = n - 1, r2 = n - 1;//田和齐当前最好与最差的马
            while (l1 <= r1) {//注意这个循环终止条件
                if (tian[r1] > qi[r2]) {
                    ans += 200;
                    --r1; --r2;
                }
                else if (tian[r1] < qi[r2]) {
                    ans -= 200;
                    --r1; ++l2;
                }
                else {
                    if (tian[l1] > qi[l2]) {
                        ans += 200;
                        ++l1; ++l2;
                    }
                    else if (tian[l1] < qi[l2]) {
                        ans -= 200;
                        --r1; ++l2;
                    }
                    else {
                        if (tian[r1] < qi[l2]) ans -= 200;
                        --r1; ++l2;
                    }
                }
    
            }
            cout << ans;
        }
        system("pause");
        return 0;
    }
    
    #include <iostream>
    #include <vector>
    #include <algorithm>
    using namespace std;
    int main()
    {
        int n;
        vector<int> tian;
        vector<int> qi;
        int h;
        int ans;
        int flag = 0;
        while (cin >> n&&n) {
            if (flag)
                cout << endl;
            flag = 1;
            ans = 0;
            for (int i = 1; i <= n; ++i) {
                cin >> h;
                tian.push_back(h);
            }
            for (int i = 1; i <= n; ++i) {
                cin >> h;
                qi.push_back(h);
            }
            sort(tian.rbegin(), tian.rend());//降序
            sort(qi.rbegin(), qi.rend());
            int l1 = 0, l2 = 0, r1 = n - 1, r2 = n - 1;//田和齐当前最好与最差的马
            while (l1 <= r1) {//注意这个循环终止条件
                if (tian[l1]<qi[l2]) {
                        //田最差与齐最好vs输
                        ans -= 200;
                        --r1;
                        ++l2;
                }
                else if (tian[l1] > qi[l2]) {
                     //田最好与齐最好vs赢
                    ans += 200;
                    l1++;
                    l2++;
                }
                else if (tian[l1] == qi[l2]) {
                    if (tian[r1] > qi[r2]) {
                        //田最差与齐最差vs赢
                        ans += 200;
                        --r1;
                        --r2;
                    }
                    else {
                        //田最差与齐最好vs
                        //注意这里有一种田最差与齐最好相等的可能所以和最上面
                        //田最好不如齐最好是不一样的
                        if (tian[r1] < qi[l2]) ans -= 200;
                        --r1;
                        ++l2;
                    }
                }
    
            }
            cout << ans;
        }
        system("pause");
        return 0;
    }
    

    相关文章

      网友评论

          本文标题:贪心Hdu1052田忌赛马

          本文链接:https://www.haomeiwen.com/subject/ntztcftx.html