#13564: 還我AC


a0905070420@gmail.com (dgoogAqrhbk)

學校 : 國立嘉義高級中學
編號 : 68284
來源 : [180.217.68.227]
最後登入時間 :
2018-10-05 17:32:43
c435. MAX ! MAX ! MAX ! | From: [1.200.40.238] | 發表日期 : 2018-03-19 17:57

我被killed了!!原本已經AC了......

 
#13565: Re:還我AC


a0905070420@gmail.com (dgoogAqrhbk)

學校 : 國立嘉義高級中學
編號 : 68284
來源 : [180.217.68.227]
最後登入時間 :
2018-10-05 17:32:43
c435. MAX ! MAX ! MAX ! | From: [1.200.40.238] | 發表日期 : 2018-03-19 17:59

我被killed了!!原本已經AC了......

有沒有哪位大哥,可以提供減少時間的提示




 
#13567: Re:還我AC


asnewchien@gmail.com (david)

學校 : 不指定學校
編號 : 68108
來源 : [1.168.27.116]
最後登入時間 :
2024-03-31 17:58:15
c435. MAX ! MAX ! MAX ! | From: [61.223.47.203] | 發表日期 : 2018-03-19 19:52

我被killed了!!原本已經AC了......

有沒有哪位大哥,可以提供減少時間的提示





請問你的想法。

 
#13568: Re:還我AC


a0905070420@gmail.com (dgoogAqrhbk)

學校 : 國立嘉義高級中學
編號 : 68284
來源 : [180.217.68.227]
最後登入時間 :
2018-10-05 17:32:43
c435. MAX ! MAX ! MAX ! | From: [163.27.3.78] | 發表日期 : 2018-03-20 10:50

我被killed了!!原本已經AC了......

有沒有哪位大哥,可以提供減少時間的提示





請問你的想法。

2個for迴圈,f[i]-f[j]求max




 
#13569: Re:還我AC


asnewchien@gmail.com (david)

學校 : 不指定學校
編號 : 68108
來源 : [1.168.27.116]
最後登入時間 :
2024-03-31 17:58:15
c435. MAX ! MAX ! MAX ! | From: [61.223.47.125] | 發表日期 : 2018-03-20 11:24

我被killed了!!原本已經AC了......

有沒有哪位大哥,可以提供減少時間的提示





請問你的想法。

2個for迴圈,f[i]-f[j]求max




n <= 100000


 
#13570: Re:還我AC


a0905070420@gmail.com (dgoogAqrhbk)

學校 : 國立嘉義高級中學
編號 : 68284
來源 : [180.217.68.227]
最後登入時間 :
2018-10-05 17:32:43
c435. MAX ! MAX ! MAX ! | From: [163.27.3.78] | 發表日期 : 2018-03-20 11:39

我被killed了!!原本已經AC了......

有沒有哪位大哥,可以提供減少時間的提示





請問你的想法。

2個for迴圈,f[i]-f[j]求max




n <= 100000


想不到其他方法,所以求救啊!


 
#13571: Re:還我AC


andy89923 (CTFang)

學校 : 臺北市立第一女子高級中學
編號 : 60183
來源 : [140.113.127.186]
最後登入時間 :
2023-10-23 16:47:19
c435. MAX ! MAX ! MAX ! | From: [203.64.138.91] | 發表日期 : 2018-03-20 12:42

因為要求的是 a [ i ]  - a[ j ]  盡量大,可想而知前面的數字( a[ i ] ) 越大越好,又因為  i < j ,所以會有個蠻簡單的作法。

 
 
#13582: Re:還我AC


a0905070420@gmail.com (dgoogAqrhbk)

學校 : 國立嘉義高級中學
編號 : 68284
來源 : [180.217.68.227]
最後登入時間 :
2018-10-05 17:32:43
c435. MAX ! MAX ! MAX ! | From: [163.27.3.92] | 發表日期 : 2018-03-22 10:30

因為要求的是 a [ i ]  - a[ j ]  盡量大,可想而知前面的數字( a[ i ] ) 越大越好,又因為  i < j ,所以會有個蠻簡單的作法。

 

請問哪兒有問題,邏輯應該對吧‧...

#include <iostream>
using namespace std;

int main(int argc, char** argv) {
	
	int n;
    while(cin>>n)
    {
    	int f[n],max=-1,min=100001,t;
    	for(int i=0;i<n;i++)
    	{
    		cin>>f[i];
		}
		for(int i=0;i<n;i++)
		{
			if(f[i]>max)
    		{
    			max=f[i];
    			t=i;
			}
		}
		for(int i=t;i<n;i++)
		{
			if(f[i]<min)
			{
				min=f[i];
			}
		}
		cout<<max-min<<endl;
    }
	
	return 0;
}
 
#13583: Re:還我AC


justinO__o (夜貓)

學校 : 臺北市立成功高級中學
編號 : 51052
來源 : [61.216.80.115]
最後登入時間 :
2023-12-25 15:06:44
c435. MAX ! MAX ! MAX ! | From: [140.122.136.117] | 發表日期 : 2018-03-22 14:48

因為要求的是 a [ i ]  - a[ j ]  盡量大,可想而知前面的數字( a[ i ] ) 越大越好,又因為  i < j ,所以會有個蠻簡單的作法。

 

請問哪兒有問題,邏輯應該對吧‧...

#include 
using namespace std;

int main(int argc, char** argv) {
	
	int n;
    while(cin>>n)
    {
    	int f[n],max=-1,min=100001,t;
    	for(int i=0;i<n;i++)
    	{
    		cin>>f[i];
		}
		for(int i=0;i<n;i++)
		{
			if(f[i]>max)
    		{
    			max=f[i];
    			t=i;
			}
		}
		for(int i=t;i<n;i++)
		{
			if(f[i]<min)
			{
				min=f[i];
			}
		}
		cout<<max-min<<endl;
    }
	
	return 0;
}




你的for(int i = 0; i < n; i++)裏面有for (int i = 0; i < n; i++)欸

確定沒問題?

 
#13600: Re:還我AC


mmi366127 (unknown)

學校 : 嘉義市私立嘉華高級中學
編號 : 67582
來源 : [163.27.13.253]
最後登入時間 :
2024-03-13 16:14:39
c435. MAX ! MAX ! MAX ! | From: [61.227.237.91] | 發表日期 : 2018-03-28 18:57

因為要求的是 a [ i ]  - a[ j ]  盡量大,可想而知前面的數字( a[ i ] ) 越大越好,又因為  i < j ,所以會有個蠻簡單的作法。

 

請問哪兒有問題,邏輯應該對吧‧...

#include 
using namespace std;

int main(int argc, char** argv) {
	
	int n;
    while(cin>>n)
    {
    	int f[n],max=-1,min=100001,t;
    	for(int i=0;i<n;i++)
    	{
    		cin>>f[i];
		}
		for(int i=0;i<n;i++)
		{
			if(f[i]>max)
    		{
    			max=f[i];
    			t=i;
			}
		}
		for(int i=t;i<n;i++)
		{
			if(f[i]<min)
			{
				min=f[i];
			}
		}
		cout<<max-min<<endl;
    }
	
	return 0;
}




你的for(int i = 0; i < n; i++)裏面有for (int i = 0; i < n; i++)欸

確定沒問題?

 

 

#include<cstdio>

#include<algorithm>

using namespace std;

int n,mi,ans;

int main()

{

    scanf("%d",&n);

    int l[n];

    for(int i=0;i<n;i++) scanf("%d",&l[i]);

    mi=l[n-1];

    ans=l[n-2]-l[n-1];

    for(int i=n-2;i>=0;i--)

    {

        ans=max(ans,l[i]-mi);

        mi=min(mi,l[i]);

    }

    printf("%d\n",ans);

    return 0;

}

你可以這樣搞阿,不斷紀錄最小值然後往前算。

 

 
#13641: Re:還我AC


a0905070420@gmail.com (dgoogAqrhbk)

學校 : 國立嘉義高級中學
編號 : 68284
來源 : [180.217.68.227]
最後登入時間 :
2018-10-05 17:32:43
c435. MAX ! MAX ! MAX ! | From: [180.217.226.105] | 發表日期 : 2018-03-31 17:29

因為要求的是 a [ i ]  - a[ j ]  盡量大,可想而知前面的數字( a[ i ] ) 越大越好,又因為  i < j ,所以會有個蠻簡單的作法。

 

請問哪兒有問題,邏輯應該對吧‧...

#include 
using namespace std;

int main(int argc, char** argv) {
	
	int n;
    while(cin>>n)
    {
    	int f[n],max=-1,min=100001,t;
    	for(int i=0;i<n;i++)
    	{
    		cin>>f[i];
		}
		for(int i=0;i<n;i++)
		{
			if(f[i]>max)
    		{
    			max=f[i];
    			t=i;
			}
		}
		for(int i=t;i<n;i++)
		{
			if(f[i]<min)
			{
				min=f[i];
			}
		}
		cout<<max-min<<endl;
    }
	
	return 0;
}




你的for(int i = 0; i < n; i++)裏面有for (int i = 0; i < n; i++)欸

確定沒問題?

 沒啊,三個for是並列平行的喔!

 

#include

#include

using namespace std;

int n,mi,ans;

int main()

{

    scanf("%d",&n);

    int l[n];

    for(int i=0;i<n;i++) scanf("%d",&l[i]);

    mi=l[n-1];

    ans=l[n-2]-l[n-1];

    for(int i=n-2;i>=0;i--)

    {

        ans=max(ans,l[i]-mi);

        mi=min(mi,l[i]);

    }

    printf("%d\n",ans);

    return 0;

}

你可以這樣搞阿,不斷紀錄最小值然後往前算。

 




 
ZeroJudge Forum