运用黑白染色,求出的最少颜色的棋子就是答案。因为当把棋盘用黑和白染色后,每放一个格子必然会占掉黑格和白格各一个,看能最多占掉多少个相邻的黑白格。
Code:
#include<iostream>
using namespace std;
typedef long long ll;
int main()
{
int t;cin >> t;
ll f = 1, h = 0, b = 0;
while (t--)
{
int n;cin >> n;
if (t%2==1)
{
h += (n + 1) / 2;
b += n / 2;
}
else
{
h += n / 2;
b += (n + 1) / 2;
}
}
cout << min(h, b);
}