結果
問題 | No.324 落ちてた閉路グラフ |
ユーザー |
![]() |
提出日時 | 2023-07-31 01:05:10 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 375 ms / 5,000 ms |
コード長 | 2,334 bytes |
コンパイル時間 | 493 ms |
コンパイル使用メモリ | 82,280 KB |
実行使用メモリ | 79,860 KB |
最終ジャッジ日時 | 2024-10-09 19:50:38 |
合計ジャッジ時間 | 6,966 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 4 |
other | AC * 34 |
ソースコード
n,m=map(int,input().split())A=list(map(int,input().split()))DP0=[-1<<60]*(n+1)# 1を使う, 直前の頂点を使うDP1=[-1<<60]*(n+1)# 1を使う, 直前の頂点を使わないDP2=[-1<<60]*(n+1)# 1を使わない, 直前の頂点を使うDP3=[-1<<60]*(n+1)# 1を使わない, 直前の頂点を使わないDP0[1]=0DP3[0]=0for i in range(n-1):NDP0=[-1<<60]*(n+1)NDP1=[-1<<60]*(n+1)NDP2=[-1<<60]*(n+1)NDP3=[-1<<60]*(n+1)if i!=n-2:for j in range(n):if DP0[j]!=-1<<60:# 次の頂点を使うNDP0[j+1]=max(NDP0[j+1],DP0[j]+A[i])# 使わないNDP1[j]=max(NDP1[j],DP0[j])if DP1[j]!=-1<<60:# 次の頂点を使うNDP0[j+1]=max(NDP0[j+1],DP1[j])# 使わないNDP1[j]=max(NDP1[j],DP1[j])if DP2[j]!=-1<<60:# 次の頂点を使うNDP2[j+1]=max(NDP2[j+1],DP2[j]+A[i])# 使わないNDP3[j]=max(NDP3[j],DP2[j])if DP3[j]!=-1<<60:# 次の頂点を使うNDP2[j+1]=max(NDP2[j+1],DP3[j])# 使わないNDP3[j]=max(NDP3[j],DP3[j])else:for j in range(n):if DP0[j]!=-1<<60:# 次の頂点を使うNDP0[j+1]=max(NDP0[j+1],DP0[j]+A[i]+A[i+1])# 使わないNDP1[j]=max(NDP1[j],DP0[j])if DP1[j]!=-1<<60:# 次の頂点を使うNDP0[j+1]=max(NDP0[j+1],DP1[j]+A[i+1])# 使わないNDP1[j]=max(NDP1[j],DP1[j])if DP2[j]!=-1<<60:# 次の頂点を使うNDP2[j+1]=max(NDP2[j+1],DP2[j]+A[i])# 使わないNDP3[j]=max(NDP3[j],DP2[j])if DP3[j]!=-1<<60:# 次の頂点を使うNDP2[j+1]=max(NDP2[j+1],DP3[j])# 使わないNDP3[j]=max(NDP3[j],DP3[j])DP0=NDP0DP1=NDP1DP2=NDP2DP3=NDP3print(max(DP0[m],DP1[m],DP2[m],DP3[m]))