P3173 [HAOI2009]巧克力的题解

· · 题解

不要在意是横着还是竖着,都是要切的,但横竖又是都需要切的,所以我们用两个数组来记录代价和这个代价到底是横着切的还是竖着切的。用一个变量 sum 来记录横着切的力气和竖着切的力气,然后就是相乘后累加,推一遍样例就好了。

#include<iostream>
#include<cstdio>
using namespace std;
size_t a[10010],b[10010],sum=0,n,m;
int main() {
    cin>>n>>m;
    n--,m--;
    for(int i=1;i<=n;i++){
        cin>>a[i];
        sum+=a[i];
    }
    for(int i=1;i<=m;i++){
        cin>>b[i];
        sum+=b[i];
    }
    for(int i=1;i<=n;i++){
        for(int j=1;j<=m;j++){
            sum+=min(a[i],b[j]);
        }
    }
    cout<<sum<<endl;
    return 0;
}