제출 #1306076

#제출 시각아이디문제언어결과실행 시간메모리
1306076vtnoo메기 농장 (IOI22_fish)C++17
0 / 100
527 ms216476 KiB
#include <bits/stdc++.h> #define pb push_back #define fst first #define snd second #define fore(i,a,b) for(int i=a,pao=b;i<pao;++i) #define SZ(x) ((int)x.size()) #define ALL(x) x.begin(),x.end() #define mset(a,v) memset((a),(v),sizeof(a)) #define FIN ios::sync_with_stdio(0);cin.tie(0);cout.tie(0) using namespace std; typedef long long ll; const int MAXN=3005; const ll INF=1e18; ll dp[MAXN][MAXN][2],pref[MAXN][MAXN]; long long max_weights(int N, int M, std::vector<int> X, std::vector<int> Y, std::vector<int> W) { fore(i,0,M){ pref[X[i]+1][Y[i]+1]+=W[i]; } fore(i,0,N+1){ fore(j,1,N+1){ pref[i][j]+=pref[i][j-1]; } } fore(i,0,N+2)fore(j,0,N+2)fore(k,0,2)dp[i][j][k]=-INF; ll ans=0; dp[0][0][1]=0; fore(i,1,N+1){ ll ndp=-INF; vector<ll>prefMax(N+2,-INF),sufMax(N+2,-INF); fore(x,0,N+1){ ndp=max({ndp,dp[i-1][x][0],dp[i-1][x][1]}); prefMax[x]=max((x?prefMax[x-1]:-INF),dp[i-1][x][1]-pref[i-1][x]); } for(int x=N;x>=0;x--){ sufMax[x]=max(sufMax[x+1],max(dp[i-1][x][0],dp[i-1][x][1])+pref[i][x]); } fore(x,0,N+1){ if(x==0){ dp[i][x][0]=dp[i][x][1]=ndp; } dp[i][x][1]=pref[i-1][x]+prefMax[x]; dp[i][x][0]=sufMax[x]-pref[i][x]; ans=max({ans,dp[i][x][1],dp[i][x][0]}); } } return ans; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...