#30002: Py 轉 Cpp 求助


Williecraft (張哲維)

學校 : 國立臺中第一高級中學
編號 : 152427
來源 : [220.134.17.21]
最後登入時間 :
2023-12-24 18:01:04
g278. 4. 美食博覽會 -- 2021年9月APCS | From: [125.230.254.186] | 發表日期 : 2022-04-20 23:55

(第一次發文排版不順還請見諒)

我是寫Python的,非常不會用Cpp,但很想看到這題AC所以嘗試改了。

但系統給我全部RE 記憶體區段錯誤,不知道是什麼意思也不知從何改,自己測的時候答案都是對的,請求大神幫我看看程式碼QAQ

 

Cpp程式碼

#include <iostream>
using namespace std;

int main()
{
    int n,k;
    cin >> n >> k;
    int array[n],dp[k+1][n+1],lasti[n+1];
    lasti[n] = -1;

    for (int i=0 ; i<n ; i++)
    {
        cin >> array[i];
        lasti[i] = -1;

        for (int j=0 ; j<k ; j++)
        {
            dp[j+1][i+1] = 0;
        }
    }
   
    for (int i=0 ; i<n+1 ; i++)dp[0][i] = 0;
    for (int j=0 ; j<k+1 ; j++)dp[j][0] = 0;
   
    int left=-1;
   
    for (int i=0 ; i<n ; i++)
    {
       
        left = max(left,lasti[array[i]]+1);
        lasti[array[i]] = i;
        for (int j=0 ; j<k ; j++){
            dp[j+1][i+1] = max(dp[j+1][i],i-left+1 + dp[j][left]);
        }
    }

    cout << dp[k][n];
}

 

原本Python的

n,k = map(int,input().split())
array = list(map(int,input().split()))

lasti = [-1]*(n+1)
left = -1
dp = [[0]*n for i in range(k+1)]

for i in range(n):
    left = max(left,lasti[array[i]]+1)
    lasti[array[i]] = i
    for j in range(k):
        dp[j][i] = max(dp[j][i-1],i-left+1 + dp[j-1][left-1])

print(dp[-2][-1])
 
#30006: Re:Py 轉 Cpp 求助


cges30901 (cges30901)

學校 : 不指定學校
編號 : 30877
來源 : [39.9.74.255]
最後登入時間 :
2024-10-14 22:20:08
g278. 4. 美食博覽會 -- 2021年9月APCS | From: [110.26.168.226] | 發表日期 : 2022-04-21 09:26

(第一次發文排版不順還請見諒)

我是寫Python的,非常不會用Cpp,但很想看到這題AC所以嘗試改了。

但系統給我全部RE 記憶體區段錯誤,不知道是什麼意思也不知從何改,自己測的時候答案都是對的,請求大神幫我看看程式碼QAQ


    int array[n],dp[k+1][n+1],lasti[n+1];


改用vector就可以過了,大概是測資太大overflow了

 
#30009: Re:Py 轉 Cpp 求助


r1cky (hehe)

學校 : 國立臺灣師範大學
編號 : 158637
來源 : [49.217.199.25]
最後登入時間 :
2024-11-17 23:54:31
g278. 4. 美食博覽會 -- 2021年9月APCS | From: [1.34.88.173] | 發表日期 : 2022-04-21 10:31

(第一次發文排版不順還請見諒)

我是寫Python的,非常不會用Cpp,但很想看到這題AC所以嘗試改了。

但系統給我全部RE 記憶體區段錯誤,不知道是什麼意思也不知從何改,自己測的時候答案都是對的,請求大神幫我看看程式碼QAQ


    int array[n],dp[k+1][n+1],lasti[n+1];


改用vector就可以過了,大概是測資太大overflow了


這題題主已經改成2s(意思是py可以6秒),照理來說這題python沒寫錯應該可以通過

 
#30010: Re:Py 轉 Cpp 求助


Williecraft (張哲維)

學校 : 國立臺中第一高級中學
編號 : 152427
來源 : [220.134.17.21]
最後登入時間 :
2023-12-24 18:01:04
g278. 4. 美食博覽會 -- 2021年9月APCS | From: [1.200.142.212] | 發表日期 : 2022-04-21 10:37

(第一次發文排版不順還請見諒)

我是寫Python的,非常不會用Cpp,但很想看到這題AC所以嘗試改了。

但系統給我全部RE 記憶體區段錯誤,不知道是什麼意思也不知從何改,自己測的時候答案都是對的,請求大神幫我看看程式碼QAQ


    int array[n],dp[k+1][n+1],lasti[n+1];


改用vector就可以過了,大概是測資太大overflow了


這題題主已經改成2s(意思是py可以6秒),照理來說這題python沒寫錯應該可以通過


在#10 TLE了

9497230
Williecraft (張哲維)
g278. 4. 美食博覽會 -- 2021年9月APCSNA (score:50%) 
 
PYTHON

 

 
#30011: Re:Py 轉 Cpp 求助


Williecraft (張哲維)

學校 : 國立臺中第一高級中學
編號 : 152427
來源 : [220.134.17.21]
最後登入時間 :
2023-12-24 18:01:04
g278. 4. 美食博覽會 -- 2021年9月APCS | From: [1.200.142.212] | 發表日期 : 2022-04-21 10:59

(第一次發文排版不順還請見諒)

我是寫Python的,非常不會用Cpp,但很想看到這題AC所以嘗試改了。

但系統給我全部RE 記憶體區段錯誤,不知道是什麼意思也不知從何改,自己測的時候答案都是對的,請求大神幫我看看程式碼QAQ


    int array[n],dp[k+1][n+1],lasti[n+1];


改用vector就可以過了,大概是測資太大overflow了

謝謝過了!!!雖然0.7s好像蠻慢 總之過了好ㄟ!!

9497375
Williecraft (張哲維)
g278. 4. 美食博覽會 -- 2021年9月APCSAC (0.7s, 24.6MB) 
 
CPP

 

 
ZeroJudge Forum