Submission #1166665

#TimeUsernameProblemLanguageResultExecution timeMemory
1166665SmuggingSpun즐거운 행로 (APIO20_fun)C++20
10 / 100
310 ms589824 KiB
#include<bits/stdc++.h>
#include "fun.h"
using namespace std;
const int INF = 1e9;
template<class T>bool maximize(T& a, T b){
    if(a < b){
        a = b;
        return true;
    }
    return false;
}
int n;
namespace sub1{
    vector<int>solve(){
        vector<vector<int>>d(n, vector<int>(n));
        for(int i = 0; i < n; i++){
            d[i][i] = 0;
            for(int j = i + 1; j < n; j++){
                d[i][j] = d[j][i] = hoursRequired(i, j);
            }
        }
        vector<vector<int>>dp(1 << n, vector<int>(n, -INF)), to(1 << n, vector<int>(n));
        for(int mask = 1; mask < (1 << n); mask++){
            vector<int>p;
            for(int i = 0; i < n; i++){
                if(1 << i & mask){
                    p.emplace_back(i);
                }
            }
            if(p.size() == 1){
                dp[mask][p[0]] = INF;
                continue; 
            }
            for(int& i : p){
                for(int& j : p){
                    if(i != j && d[i][j] <= dp[mask ^ (1 << i)][j] && maximize(dp[mask][i], d[i][j])){
                        to[mask][i] = j;
                    }
                }
            }
        }
        vector<int>ans;
        int state = (1 << n) - 1, i = -1;
        for(i = 0; i < n; i++){
            if(dp[state][i] > -1){
                break;
            }
        }
        for(int _ = 1; _ < n; _++){
            ans.emplace_back(i);
            int I = to[state][i];
            state ^= 1 << i;
            i = I;
        }
        ans.emplace_back(i);
        reverse(ans.begin(), ans.end());
        return ans;
    }
}
vector<int>createFunTour(int __n, int __q){
    if((n = __n) <= 17){
        return sub1::solve();
    }
}

Compilation message (stderr)

fun.cpp: In function 'std::vector<int> createFunTour(int, int)':
fun.cpp:64:1: warning: control reaches end of non-void function [-Wreturn-type]
   64 | }
      | ^
#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...