#43736: 菜鳥發問,大老救命,為甚麼這樣有問題><


yaya072610@gmail.com (菜鳥一枚)

學校 : 不指定學校
編號 : 284933
來源 : [111.254.160.104]
最後登入時間 :
2024-10-31 03:03:11
o711. 1. 裝飲料 -- 2024年10月APCS | From: [111.254.172.28] | 發表日期 : 2024-10-26 23:17

檔案

#include <bits/stdc++.h>

using namespace std;

int main()
{
    int n, w1 ,w2, h1, h2;

    cin >> n >> w1 >> w2 >> h1 >> h2;

    float water[n];

    for(int i = 0 ; i < n ; i++ )
    {
            cin >> water[i];
    }

    int block = 0; //現在在哪塊

    float a1 = w1 * w1, a2 = w2 * w2;

    int hlist[n] , x = 0 ; //x為現在哪杯水,哪個hlist

    while(true)
    {

        if(x == n) break;

        if(block == 0)
        {
            if( h1 + (water[x] / a1 - h1) * a1 / a2 > h1 + h2)
            {
                hlist[x] = h1 + h2;

                break;
            }
            else if(water[x] / a1 < h1)
            {
                hlist[x] = water[x] / a1;

                h1 = h1 - hlist[x];
            }
            else
            {
                hlist[x] = h1 + ( (water[x] / a1 - h1) * a1 / a2 );

                h2 = h2 - ( hlist[x] - h1 );

                block = 1;
            }
        }
        else
        {
            if(water[x] / a2 < h2)
            {
                hlist[x] = water[x] / a2;

                h2 = h2 - hlist[x];
            }
            else
            {
                hlist[x] = h2;

                break;
            }

        }

        x += 1;
    }

    sort(hlist, hlist + x, greater<int>());

    cout << hlist[0];

}

 
#44173: Re: 菜鳥發問,大老救命,為甚麼這樣有問題><


leeguanhan0909@gmail.com (李冠翰)

學校 : 高雄市苓雅區復華高級中學國中部
編號 : 276558
來源 : [36.238.157.177]
最後登入時間 :
2024-11-13 23:08:53
o711. 1. 裝飲料 -- 2024年10月APCS | From: [36.238.159.108] | 發表日期 : 2024-11-09 18:39

檔案

#include

using namespace std;

int main()
{
    int n, w1 ,w2, h1, h2;

    cin >> n >> w1 >> w2 >> h1 >> h2;

    float water[n];

    for(int i = 0 ; i < n ; i++ )
    {
            cin >> water[i];
    }

    int block = 0; //現在在哪塊

    float a1 = w1 * w1, a2 = w2 * w2;

    int hlist[n] , x = 0 ; //x為現在哪杯水,哪個hlist

    while(true)
    {

        if(x == n) break;

        if(block == 0)
        {
            if( h1 + (water[x] / a1 - h1) * a1 / a2 > h1 + h2)
            {
                hlist[x] = h1 + h2;

                break;
            }
            else if(water[x] / a1 < h1)
            {
                hlist[x] = water[x] / a1;

                h1 = h1 - hlist[x];
            }
            else
            {
                hlist[x] = h1 + ( (water[x] / a1 - h1) * a1 / a2 );

                h2 = h2 - ( hlist[x] - h1 );

                block = 1;
            }
        }
        else
        {
            if(water[x] / a2 < h2)
            {
                hlist[x] = water[x] / a2;

                h2 = h2 - hlist[x];
            }
            else
            {
                hlist[x] = h2;

                break;
            }

        }

        x += 1;
    }

    sort(hlist, hlist + x, greater());

    cout << hlist[0];

}

break之前要把x+1,不然排序時不會算到最後一個加入的

 
#44174: Re: 菜鳥發問,大老救命,為甚麼這樣有問題><


leeguanhan0909@gmail.com (李冠翰)

學校 : 高雄市苓雅區復華高級中學國中部
編號 : 276558
來源 : [36.238.157.177]
最後登入時間 :
2024-11-13 23:08:53
o711. 1. 裝飲料 -- 2024年10月APCS | From: [36.238.159.108] | 發表日期 : 2024-11-09 20:20

檔案

#include

using namespace std;

int main()
{
    int n, w1 ,w2, h1, h2;

    cin >> n >> w1 >> w2 >> h1 >> h2;

    float water[n];

    for(int i = 0 ; i < n ; i++ )
    {
            cin >> water[i];
    }

    int block = 0; //現在在哪塊

    float a1 = w1 * w1, a2 = w2 * w2;

    int hlist[n] , x = 0 ; //x為現在哪杯水,哪個hlist

    while(true)
    {

        if(x == n) break;

        if(block == 0)
        {
            if( h1 + (water[x] / a1 - h1) * a1 / a2 > h1 + h2)
            {
                hlist[x] = h1 + h2;

                break;
            }
            else if(water[x] / a1 < h1)
            {
                hlist[x] = water[x] / a1;

                h1 = h1 - hlist[x];
            }
            else
            {
                hlist[x] = h1 + ( (water[x] / a1 - h1) * a1 / a2 );

                h2 = h2 - ( hlist[x] - h1 );

                block = 1;
            }
        }
        else
        {
            if(water[x] / a2 < h2)
            {
                hlist[x] = water[x] / a2;

                h2 = h2 - hlist[x];
            }
            else
            {
                hlist[x] = h2;

                break;
            }

        }

        x += 1;
    }

    sort(hlist, hlist + x, greater());

    cout << hlist[0];

}

break之前要把x+1,不然排序時不會算到最後一個加入的


不包含x==n的break

 
ZeroJudge Forum