답안 #673367

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
673367 2022-12-20T11:47:26 Z Carmel_Ab1 별자리 3 (JOI20_constellation3) C++17
0 / 100
1 ms 980 KB
/*
#pragma GCC target ("avx2")
#pragma GCC optimization ("O3")
#pragma GCC optimization ("unroll-loops")
 */
#include<bits/stdc++.h>
//#include <ext/pb_ds/assoc_container.hpp>
//#include <ext/pb_ds/tree_policy.hpp>

//using namespace __gnu_pbds;
using namespace std;

typedef long double ld;
typedef long long ll;
typedef unsigned long long ull;
typedef vector<int>vi;
typedef vector<vector<int>>vvi;
typedef vector<ll>vl;
typedef vector<vl> vvl;
typedef pair<int,int>pi;
typedef pair<ll,ll> pl;
typedef vector<pl> vpl;
typedef vector<ld> vld;
typedef pair<ld,ld> pld;
typedef vector<pi> vpi;

//typedef tree<ll, null_type, less_equal<ll>,rb_tree_tag,tree_order_statistics_node_update> ordered_set;
template<typename T> ostream& operator<<(ostream& os, vector<T>& a){os<<"[";for(int i=0; i<ll(a.size()); i++){os << a[i] << ((i!=ll(a.size()-1)?" ":""));}os << "]\n"; return os;}

#define all(x) x.begin(),x.end()
#define YES out("YES")
#define NO out("NO")
#define out(x){cout << x << "\n"; return;}
#define outfl(x){cout << x << endl;return;}
#define GLHF ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL)
#define print(x){for(auto ait:x) cout << ait << " "; cout << "\n";}
#define pb push_back
#define umap unordered_map


template<typename T>
void read(vector<T>& v){
    int n=v.size();
    for(int i=0; i<n; i++)
        cin >> v[i];
}
template<typename T>
vector<T>UNQ(vector<T>a){
    vector<T>ans;
    for(T t:a)
        if(ans.empty() || t!=ans.back())
            ans.push_back(t);
    return ans;
}



void solve();
int main(){
    GLHF;
    int t=1;
    //cin >> t;
    while(t--)
        solve();
}
void solve() {
    int n;
    cin >> n;
    vi a(n+1);
    for(int i=1; i<=n; i++)
        cin >> a[i];
    int m;
    cin >> m;

    vector<vpi>b(n+1);
    for(int i=0; i<m; i++){
        int x,y,c;
        cin >> x >> y >> c;
        b[x].pb({y,c});
    }

    for(int i=1; i<=n; i++){
        b[i].pb({0,0});
        sort(all(b[i]));
    }

    vvl dp(n+1,vl(m+1,1e18));
    dp[0] = vl(m+1,0);
    //dp[i][j] = min price to pay when considering a[1..i-1] + b[i][1..j] towers

    dp[1][0] = 0;

    for(int i=1; i<=n; i++){

        if(i>1)
            dp[i][0] = dp[i-1][b[i-1].size()-1];


        for(int j=1; j<b[i].size(); j++){
            dp[i][j] = dp[i][j-1] + b[i][j].second;

            ll sum_others=0,mx=0;
            ll lst=0;

            for(int p=i; p>=1; p--) {
                mx=max(mx,a[p]+0ll);
                if(a[p] >= b[i][j].first){
                    lst = dp[p][b[p].size()-1];
                    break;
                }
                for (int jp=(i==p)?j:b[p].size()-1; jp>=1; jp--)
                    if(min(b[p][jp].first,b[i][j].first) > mx) {
                        sum_others += b[p][jp].second;
                        lst = dp[p][jp-1];
                    }
            }
            dp[i][j] = min(dp[i][j],sum_others+lst-b[i][j].second);
        }
    }


    out(dp[n][b[n].size()-1])
}

Compilation message

constellation3.cpp: In function 'void solve()':
constellation3.cpp:99:23: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::pair<int, int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   99 |         for(int j=1; j<b[i].size(); j++){
      |                      ~^~~~~~~~~~~~
# 결과 실행 시간 메모리 Grader output
1 Incorrect 1 ms 980 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 1 ms 980 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 1 ms 980 KB Output isn't correct
2 Halted 0 ms 0 KB -