Compare commits

..

No commits in common. "b4e809156f38a0ed57e9519225504609aa1d964f" and "5e23f171330bbdf6cd9edf72db584f717933365b" have entirely different histories.

2 changed files with 0 additions and 110 deletions

View File

@ -1,55 +0,0 @@
/*
dp[i][j]=[1,j]
dp[i][j]=max(
dp[i][j],
dp[i][k]+dp[k+1][j]+i.m*k.n*j.n
)
dp[i][j]=0
*/
#include <algorithm>
#include <cstdint>
#include <iostream>
#include <vector>
using ll = int64_t;
#define pvp(v)do{\
std::cout<<#v<<":\n";\
for(const auto&i:(v)){\
std::cout<<i.first<<", "<<i.second<<"\n";\
}\
}while(0)
int main(){
ll n;
std::cin>>n;
std::vector<ll> h(2*n+1);
std::vector<std::vector<ll>> dp(2*n+1,std::vector<ll>(2*n+1));
for(ll i=1;i<=n;++i){
std::cin>>h[i];
h[n+i]=h[i];
}
// pvp(v);
for(ll len=2;len<=n;++len){
for(ll i=1;i<=2*n-len;++i){
ll j=i+len-1;
for(ll k=i;k<j;k++){
dp[i][j]=std::max(
dp[i][j],
dp[i][k]+dp[k+1][j]+h[i]*h[k+1]*h[j+1]
);
}
}
}
ll ans=0;
for(ll i=1;i<=n;i++){
ans=std::max(
ans,
dp[i][i+n-1]
);
}
std::cout<<ans<<"\n";
}

View File

@ -1,55 +0,0 @@
/*
*/
#include <algorithm>
#include <cstdint>
#include <iostream>
#include <istream>
#include <vector>
using ll = int64_t;
ll n;
std::vector<std::vector<ll>> edg,dp;
static inline void dfs(ll f,ll u){
for(ll v:edg[u]){
if(v==f)continue;
dfs(u,v);
dp[u][1]+=std::min(
dp[v][0],
dp[v][1]
);
dp[u][0]+=dp[v][1];
}
}
int main(){
std::iostream::sync_with_stdio(false);
std::cin.tie(nullptr);
std::cin>>n;
edg.resize(n);
dp.resize(n,std::vector<ll>(2,0));
for(ll i=1;i<=n;++i){
dp[i-1][1]=1;
ll u,k;
std::cin>>u>>k;
for(ll j=1;j<=k;++j){
ll v;
std::cin>>v;
edg[u].push_back(v);
edg[v].push_back(u);
}
}
dfs(0, 0);
// for(ll i=0;i<n;i++){
// for(ll j=0;j<2;j++){
// printf("dp[%lld][%lld]=%lld\n",i,j,dp[i][j]);
// }
// }
std::cout<<std::min(dp[0][0],dp[0][1])<<"\n";
}