Codeforces Round #609 (Div. 2)--D. Domino for Young
思路:用黑白相间的棋盘来给他染色( 参照国际象棋棋盘 ), 一个棋子一定是落在一个白色和一个黑色棋点上的,所以统计黑色块和白色块的最小值
AC_Code
1 #include <bits/stdc++.h> 2 using namespace std; 3 typedef long long ll; 4 const int maxn = 100010; 5 ll _min(ll a, ll b){ //不知道为什么我用min,报错了,以后还是自己敲比较函数吧 6 if( a>b ) return b; 7 else return a; 8 } 9 10 int main() 11 { 12 ll b,w,n,x; 13 b=0; 14 w=0; 15 scanf("%lld",&n); 16 for(ll i=1;i<=n;i++){ 17 scanf("%lld",&x); 18 if(i%2){ //奇数列,以黑色为底 19 b += x/2; 20 w += x/2; 21 if( x%2 ){ 22 b++; 23 } 24 } 25 else{ //偶数列,以白色为底 26 b += x/2; 27 w += x/2; 28 if( x%2 ){ 29 w++; 30 } 31 } 32 } 33 printf("%lld ",_min(b,w)); 34 return 0; 35 }