题解 CF38C 【Blinds】

思路:暴力枚举,从 ll ~ 100100 (因为a[i]最大是100),找到大于 ll 的所有木板,算出面积: i*cnti∗cnt (cnt是符合条件的木板数量),然后打擂台,算出面积最大的方案,输出。

想到这个思路,本蒟蒻就打了如下代码:

#include
#include
using namespace std;
int n,cnt,mx;
int l,a[10000000];
int main(){
cin>>n>>l;
for(int i=1;i<=n;i++){
cin>>a[i];
}
for(int i=l;i<=100;i++){
cnt=0;
for(int p=1;p<=n;p++){
if(a[p]>=i) cnt++;
}
mx=max(mx,cnt*i);
}
printf("%d",mx);
}
还没过样例就提交了。

然鹅:WA……扎心。。。

我们来康康哪里错了:

题目上说:横条可以切断但不能拼接
这说明:一个大于 ii 的木板可以分成 a[i]/ia[i]/i 个木板。
然后终于AC了

AC CODE:

#include
#include
using namespace std;
int n,cnt,mx=0;
int l,a[10000000];//a数组是存储木板长度的 
int main(){
    cin>>n>>l;
    for(int i=1;i<=n;i++){
        cin>>a[i];//输入木板长度 
    }
    for(int i=l;i<=100;i++){
        cnt=0;
        for(int p=1;p<=n;p++){
            cnt+=a[p]/i;//此木板(第p个)可以裁多少个木板(当a[p]

你可能感兴趣的:(题目题解,C++编程实例,洛谷)