A- Penchick and Modern Monument
由于给定的数是非递增的,所以 h [ i ] ≥ h [ i + 1 ] h_[i]\geq h[i+1] h[i]≥h[i+1],如果 h [ i ] > h [ i + 1 ] h[i]>h[i+1] h[i]>h[i+1] 那么二者至少要改其一。因为最终要求的数是非递减的,所以最终数组内都是同一种数的方案是可行的。枚举最后会成为数组中的哪一个数即可。
void solve () {
int n;
cin >> n;
vector <int> h(n + 1);
for (int i = 1; i <= n; i++) cin >> h[i];
int ans = INF;
for (int i = 1; i <= n; i++) {
int sum = 0;
for (int j = 1; j <= n; j++)
if (h[j] != h[i]) sum ++;
ans = min(sum, ans);
}
cout << ans << endl;
}
B- Penchick and Satay Sticks
假设 1 ∼ i − 1 1\sim i-1 1∼i−1 已经放好了,如果 p [ i ] ≠ i p[i]\neq i p[i]=i 的话,现在要把 i i i 位置放好,当且仅当 p [ i + 1 ] = i p[i+1]=i p[i+1]=i 并且 p [ i ] = i