题解 CF38C 【Blinds】
生活随笔
收集整理的這篇文章主要介紹了
题解 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<iostream> #include<algorithm> 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]<i時這個木板就加0個) }mx=max(mx,cnt*i);//打擂臺,算出最大面積 }printf("%d",mx);//輸出 }總結
以上是生活随笔為你收集整理的题解 CF38C 【Blinds】的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 背包问题专栏(01,完全,多重)
- 下一篇: 最新微信QQ域名防封、微信群活码系统