zwg場:7-9 開心的wls

時隔一個多月,oj關(guān)閉之后,我終于來補(bǔ)題了...

題目鏈接:
https://pintia.cn/problem-sets/1098080354122080256/problems/1098502465433116672

解題思路:
二分+模擬
判斷一下貨物的取值范圍是1~sum,然后開始二分了
二分的話,

while(r<l)
{
    int mid=(r+l)/2;
    if(check(mid)==1)      //這里模擬
          r=mid;
    else
          l=mid+1;
}
printf("%d",r);

模擬的話,是先來一個機(jī)器人,遍歷貨物,如果機(jī)器人抬得起貨就抬貨,可抬貨數(shù)目-=該項貨數(shù);抬不起貨就換一個新的機(jī)器人(抬貨),同時機(jī)器人數(shù)目加1,如果新的機(jī)器人也抬不起貨直接return 0.遍歷完之后看所用機(jī)器人數(shù)目有沒有超過m,返回。

因為沒有學(xué)學(xué)長的fropen所以只是過了樣例不知道ac沒有的代碼:

#include<stdio.h>
int box[10005],n,m; 
int check(int size)
{
    int cur=size,num=1;
    for(int i=1;i<=n;i++)
    {
        if(box[i]<=cur)         //機(jī)器人:我能抬的貨我就抬
        {
            cur-=box[i];
            //printf("cur(我現(xiàn)在可以抬的)is %d,box[%d] is %d\n",cur,i,box[i]); 
        }       
        else                    //機(jī)器人:我抬不起的貨我就喊新機(jī)器人抬 
        {
            num++;
            //printf("加機(jī)器人 \n"); 
            cur=size;
            if(box[i]<=cur)     //新機(jī)器人抬貨 
                cur-=box[i];
            else                //碰見了新機(jī)器人也抬不起的貨了.. 
            {
                return 0;       
            } 
        } 
    }
    //抬貨結(jié)束
    //printf("num is %d\n",num); 
    
    if(num<=m)
        return 1;
    else    
        return 0; 
}

int main()
{
    int sum=0,mid;                      //不要重復(fù)定義!??! 
    scanf("%d%d",&n,&m);
    for(int i=1;i<=n;i++)       //此處不建議用0~n-1,因為后面left不好取0  
    {
        scanf("%d",&box[i]); 
        sum+=box[i]; 
    } 
    
    //這里明確一下,貨物的取值范圍是(sum/m~sum) 
    int l=1,r=sum;      
    //printf("l is %d,r is %d\n",l,r); 
    
    while(l<r)
    {
        mid=(r+l)/2;            //取中值點
        
        //printf("l is %d,mid is %d,r is %d\n",l,mid,r);
        
        if(check(mid))
        {
            r=mid;
            //printf("%d 過多了,我們從左邊到中間\n",mid);
        }
        else
        {
            l=mid+1; 
            //printf("%d 是太少了的,我們從中間到右邊\n",mid); 
        }       
    }
    
    printf("%d",r);
} 

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 你是海里的一粒沙子 遲早會被彩色的貝殼吃掉 機(jī)會或大或小 你被披上斑斕的靚妝 炫耀人們的目光 因為你的光芒 你隨著...
    令狐的壺閱讀 242評論 0 3
  • 小樓孤燕才飛去 花伴柳枝垂 年年此景 閑愁惹就 只是人非 夜來落寞 欲為戲語 又恐言歧 斷腸聲起 終南細(xì)雨 難寄相思
    清虛門下白靖滄閱讀 251評論 0 1
  • 又是新的一天。昨晚在舒適的新床上,我睡的特別的塌實。 想著已經(jīng)找到了我的福晉,并接上了頭,反正要等下午才能給她回復(fù)...
    沐弘晨閱讀 269評論 8 12
  • 文/竹露滴清響 每年的六月都是安全月,這不,早操后,安全主任又給同學(xué)們講安全問題了,食品安全、出行安全、用電、用煤...
    竹露滴清響閱讀 1,563評論 31 47
  • 人生天地之間,若白駒之過隙,忽然而已。 就這樣走著走著,竟然也到了2017年的最后。 365天又4個月,你懂的?!?..
    1穎閱讀 512評論 2 1

友情鏈接更多精彩內(nèi)容