首页 > 其他 > 详细

cf1269D——棋盘解法

时间:2020-01-02 18:22:22      阅读:73      评论:0      收藏:0      [点我收藏+]

借助棋盘来解题确实很妙,将本题柱形图放在棋盘上,然后答案就是数量最少的格子,

显然,假设黑格<白格,那么每个黑格必定有一个白格与之对应

感觉自己好迷,这题用dp想了半天,哎

/*
dp[i][0|1]表示当前填满,留下一格的最优解 
*/
#include<bits/stdc++.h>
using namespace std;
#define N 300005
#define ll long long

ll h[N],n;

int main(){
    cin>>n;
    ll sum=0,s=0;
    for(int i=1;i<=n;i++){
        scanf("%lld",&h[i]);    
        sum+=h[i];
        if(i%2)
            s+=(h[i]+1)/2;
        else
            s+=h[i]/2;
    }
    cout<<min(sum-s,s)<<\n;
    
}

cf1269D——棋盘解法

原文:https://www.cnblogs.com/zsben991126/p/12133709.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!