[ZJOI2008]泡泡堂

Description

BZOJ1034

Solution

一个很直接的思路是每个人干掉比他小的最大的那个,否则就换掉对方最大的,这样才值。然而,直接实现这个思路十分复杂,所以有一种替代的模拟思路,本质上是一样的。

Code

int work(int *a, int *b) { // a,b有序
    int ans = 0, l = 1, r = n, L = 1, R = n;
    while (l <= r) {
        if (a[r] > b[R]) {
            ans += 2;
            r--;
            R--;
        } else if (a[l] > b[L]) {
            ans += 2;
            l++;
            L++;
        } else {
            ans += (a[l] == b[R]);
            l++;
            R--;
        }
    }
    return ans;
}

Note

这个题我其实想出了贪心思路,但是由于经验不足,无法写出实现简单的码,还是要多做题,提升码力。

posted @ 2018-10-28 17:50  wyxwyx  阅读(106)  评论(0编辑  收藏  举报