[ZJOI2008]泡泡堂
Description
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
这个题我其实想出了贪心思路,但是由于经验不足,无法写出实现简单的码,还是要多做题,提升码力。