#8319: 嗚厄,我盡力了,測資點4 TLE


t1ina2003 (walking)

學校 : 國立中山大學
編號 : 33312
來源 : [114.137.131.210]
最後登入時間 :
2018-05-12 19:01:26
a014. 夾娃娃 | From: [140.117.164.148] | 發表日期 : 2013-10-12 14:17

 

希望各位前輩可以指點一下,我的演算法還不夠好

或者各部分的寫法哪裡可以再更好,也都懇請高手指教了>< 

 

/*************************************************************

Author: walking

Date: 2013_10_09

Description: lucky dip game

Input:  N(amount) Y(range) A(toy_start) B(toy_end)

Output: max_count(best localtions) tmp(maximum dip amount)

*************************************************************/

#include <iostream>

#include <stdlib.h>

#include <stdio.h>

#include <string.h>

using namespace std;

 

int main(){

    int N,Y,A,B;

    while(cin >> N >> Y){

        int A[N],B[N];                          //宣告存放A,B座標陣列

        memset(A, 0, sizeof(int)*N);

        memset(B, 0, sizeof(int)*N);

        int max_A = 0 ,tmp1=0;

 

        for(int i=0;i<N;i++){                   //輸入各娃娃座標

            cin>>A[i]>>B[i];

            tmp1=A[i];

            if(tmp1>max_A)

                max_A=tmp1;                     //找出最大A值

        }

        

        max_A++;                                //要創建的array為最大A值加1

        int left[max_A];                        //省下每次宣告10萬大小array的空間

        memset(left, 0, sizeof(int)*max_A);

 

        for(int i=0;i<N;i++){                   //將所有娃娃的AB值讀入

            if((B[i]-A[i])<=Y)                  //若娃娃不會大於夾子

                for(int j=B[i]-Y;j<=A[i];j++){  //則在left陣列內投票可以此娃娃可以夾起的點

                    if(j>0)

                        left[j]++;}

        }

 

 

        int max_count=0;                        //最佳的夾取地點的個數

        int maximum=left[0];                    //夾到的最多的娃娃個數

 

        for(int k=1;k<max_A;k++)           

        {

            if(left[k]==maximum)

                max_count++;

 

            if(left[k]>maximum)

            {

                maximum=left[k];

                max_count=1;

            }

        }

 

        cout <<max_count<<" "<<maximum<<endl;

    }

 

}


 

 
#38654: Re: 嗚厄,我盡力了,測資點4 TLE


blocker_nagnto (淵空)

學校 : 臺北市立大安高級工業職業學校
編號 : 252870
來源 : [210.70.131.241]
最後登入時間 :
2024-01-04 10:11:01
a014. 夾娃娃 | From: [210.70.131.211] | 發表日期 : 2023-12-13 11:37

 

希望各位前輩可以指點一下,我的演算法還不夠好

或者各部分的寫法哪裡可以再更好,也都懇請高手指教了>< 

 

/*************************************************************

Author: walking

Date: 2013_10_09

Description: lucky dip game

Input:  N(amount) Y(range) A(toy_start) B(toy_end)

Output: max_count(best localtions) tmp(maximum dip amount)

*************************************************************/

#include

#include

#include

#include

using namespace std;

 

int main(){

    int N,Y,A,B;

    while(cin >> N >> Y){

        int A[N],B[N];                          //宣告存放A,B座標陣列

        memset(A, 0, sizeof(int)*N);

        memset(B, 0, sizeof(int)*N);

        int max_A = 0 ,tmp1=0;

 

        for(int i=0;i

            cin>>A[i]>>B[i];

            tmp1=A[i];

            if(tmp1>max_A)

                max_A=tmp1;                     //找出最大A值

        }

        

        max_A++;                                //要創建的array為最大A值加1

        int left[max_A];                        //省下每次宣告10萬大小array的空間

        memset(left, 0, sizeof(int)*max_A);

 

        for(int i=0;i

            if((B[i]-A[i])<=Y)                  //若娃娃不會大於夾子

                for(int j=B[i]-Y;j<=A[i];j++){  //則在left陣列內投票可以此娃娃可以夾起的點

                    if(j>0)

                        left[j]++;}

        }

 

 

        int max_count=0;                        //最佳的夾取地點的個數

        int maximum=left[0];                    //夾到的最多的娃娃個數

 

        for(int k=1;k

        {

            if(left[k]==maximum)

                max_count++;

 

            if(left[k]>maximum)

            {

                maximum=left[k];

                max_count=1;

            }

        }

 

        cout <

    }

 

}

 

 

我弄出來的答案

暫時找不到弄輸入的方法

#0: 19% WA (line:1)

您的答案為: 0
正確答案為: 1 8263

#1: 20% WA (line:1)

您的答案為: 0
正確答案為: 2 3904

#2: 30% WA (line:1)

您的答案為: 0
正確答案為: 1 69

#3: 30% WA (line:1)

您的答案為: 0
正確答案為: 16 2784

#4: 1% WA (line:1)

您的答案為: 0
正確答案為: 3104 9

試試把數字套進測資?

 
ZeroJudge Forum