답안 #629570

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
629570 2022-08-14T15:50:27 Z arnold518 메기 농장 (IOI22_fish) C++17
3 / 100
88 ms 13988 KB
#include "fish.h"
#include <bits/stdc++.h>
using namespace std;

typedef long long ll;
typedef pair<int, int> pii;
typedef pair<ll, ll> pll;

const int MAXN = 3000;
const ll INF = 1e18;

int N, M;
vector<pii> V[MAXN+10];

ll dp1[MAXN+10][MAXN+10], dp2[MAXN+10][MAXN+10], P[MAXN+10];

ll max_weights(int _N, int _M, vector<int> _X, vector<int> _Y, vector<int> _W)
{
    N=_N; M=_M;
    ll ret=0;
    for(int i=0; i<M; i++)
    {
        //V[_X[i]+1].push_back({_Y[i]+1, _W[i]});
        ret+=_W[i];
    }
    return ret;

    for(int i=1; i<=N; i++)
    {
        sort(V[i].begin(), V[i].end());
    }
    
    for(int i=0; i<=N; i++) for(int j=0; j<=N; j++) dp1[i][j]=dp2[i][j]=-INF;
    for(int i=0; i<=N; i++) dp2[0][i]=0;
    dp1[0][0]=0; dp2[0][0]=0;

    for(int i=1; i<=N+1; i++)
    {
        int t=V[i].size()-1;
        P[N]=dp1[i-1][N];
        for(int j=N-1; j>=0; j--)
        {
            int tt=0;
            if(t>=0 && V[i][t].first==j+1) tt=V[i][t--].second;
            P[j]=max(P[j+1]+tt, dp1[i-1][j]);
        }
        for(int j=0; j<=N; j++) dp1[i][j]=max(dp2[i-1][j], P[j]);

        ll p=0, q=0;
        t=0;
        for(int j=0; j<=N; j++) 
        {
            int tt=0;
            if(t<V[i].size() && V[i][t].first==j) tt=V[i][t++].second;
            p=max(p, dp1[i-1][j]); q+=tt;
            P[j]=max(P[j], p)+q;
        }
        for(int j=0; j<=N; j++) dp2[i][j]=max(dp2[i][j], P[j]);

        t=0; P[0]=0;
        for(int j=1; j<=N; j++) 
        {
            int tt=0;
            if(t<V[i].size() && V[i][t].first==j) tt=V[i][t++].second;
            P[j]=max(P[j-1]+tt, dp2[i-1][j]);
        }
        for(int j=0; j<=N; j++) dp2[i][j]=max(dp2[i][j], P[j]);
    }

    for(int i=1; i<=N; i++)
    {
        for(int j=0; j<=N; j++) printf("%lld ", dp1[i][j]); printf("\n");
    }
    printf("\n");
    for(int i=1; i<=N; i++)
    {
        for(int j=0; j<=N; j++) printf("%lld ", dp2[i][j]); printf("\n");
    }

    return max(dp1[N+1][0], dp2[N+1][0]);
}

Compilation message

fish.cpp: In function 'll max_weights(int, int, std::vector<int>, std::vector<int>, std::vector<int>)':
fish.cpp:54:17: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::pair<int, int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   54 |             if(t<V[i].size() && V[i][t].first==j) tt=V[i][t++].second;
      |                ~^~~~~~~~~~~~
fish.cpp:64:17: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::pair<int, int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   64 |             if(t<V[i].size() && V[i][t].first==j) tt=V[i][t++].second;
      |                ~^~~~~~~~~~~~
fish.cpp:72:9: warning: this 'for' clause does not guard... [-Wmisleading-indentation]
   72 |         for(int j=0; j<=N; j++) printf("%lld ", dp1[i][j]); printf("\n");
      |         ^~~
fish.cpp:72:61: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'for'
   72 |         for(int j=0; j<=N; j++) printf("%lld ", dp1[i][j]); printf("\n");
      |                                                             ^~~~~~
fish.cpp:77:9: warning: this 'for' clause does not guard... [-Wmisleading-indentation]
   77 |         for(int j=0; j<=N; j++) printf("%lld ", dp2[i][j]); printf("\n");
      |         ^~~
fish.cpp:77:61: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'for'
   77 |         for(int j=0; j<=N; j++) printf("%lld ", dp2[i][j]); printf("\n");
      |                                                             ^~~~~~
# 결과 실행 시간 메모리 Grader output
1 Correct 23 ms 2228 KB Output is correct
2 Correct 26 ms 2712 KB Output is correct
3 Correct 0 ms 340 KB Output is correct
4 Correct 0 ms 340 KB Output is correct
5 Correct 80 ms 7344 KB Output is correct
6 Correct 88 ms 13988 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 340 KB Output is correct
2 Incorrect 43 ms 4084 KB 1st lines differ - on the 1st token, expected: '40604614618209', found: '80901044391025'
3 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 340 KB Output is correct
2 Correct 0 ms 340 KB Output is correct
3 Incorrect 14 ms 1536 KB 1st lines differ - on the 1st token, expected: '21261825233649', found: '26722970331638'
4 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 340 KB Output is correct
2 Correct 1 ms 340 KB Output is correct
3 Incorrect 0 ms 340 KB 1st lines differ - on the 1st token, expected: '4044', found: '6066'
4 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 340 KB Output is correct
2 Correct 1 ms 340 KB Output is correct
3 Incorrect 0 ms 340 KB 1st lines differ - on the 1st token, expected: '4044', found: '6066'
4 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 340 KB Output is correct
2 Correct 1 ms 340 KB Output is correct
3 Incorrect 0 ms 340 KB 1st lines differ - on the 1st token, expected: '4044', found: '6066'
4 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 340 KB Output is correct
2 Correct 0 ms 340 KB Output is correct
3 Incorrect 14 ms 1536 KB 1st lines differ - on the 1st token, expected: '21261825233649', found: '26722970331638'
4 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 23 ms 2228 KB Output is correct
2 Correct 26 ms 2712 KB Output is correct
3 Correct 0 ms 340 KB Output is correct
4 Correct 0 ms 340 KB Output is correct
5 Correct 80 ms 7344 KB Output is correct
6 Correct 88 ms 13988 KB Output is correct
7 Correct 0 ms 340 KB Output is correct
8 Incorrect 43 ms 4084 KB 1st lines differ - on the 1st token, expected: '40604614618209', found: '80901044391025'
9 Halted 0 ms 0 KB -