P1433 本地 AC 提交 WA 求助

P1433 吃奶酪

@[JuRuoOIer](/user/476093) 实锤了,dp初始值不够大
by ljlbj_fengyuwuzu @ 2023-11-26 11:56:17


@[JuRuoOIer](/user/476093) ```cpp #include<iostream> #include<cstdio> #include<algorithm> #include<queue> #include<cmath> #include<vector> #include<map> #include<set> #include<cstring> #include<string> #define ll long long #define ull unsigned long long #define lf double #define ld long double using namespace std; ll n; lf x[20],y[20],dp[20][(1<<15)+10],ans=0x3f3f3f3f3f3f3f3f; //dp[s] 为在 s 状态下的最优解 lf getdis(lf a,lf b,lf c,lf d){ return sqrt((c-a)*(c-a)+(d-b)*(d-b)); } int main(){ memset(dp,127,sizeof(dp)); cin>>n; for(int i=0;i<n;i++){ cin>>x[i]>>y[i]; dp[i][(1<<i)]=getdis(0,0,x[i],y[i]); } for(int s=1;s<(1<<n);s++){ for(int i=0;i<n;i++){ if(!(s&(1<<i)))continue; for(int j=0;j<n;j++){ if(i==j||(!(s&(1<<j))))continue; dp[i][s]=min(dp[i][s],dp[j][s-(1<<i)]+getdis(x[i],y[i],x[j],y[j])); } } } for(int i=0;i<n;i++){ ans=min(ans,dp[i][(1<<n)-1]); } printf("%.2lf",ans); return 0; } ``` 这样就A了
by ljlbj_fengyuwuzu @ 2023-11-26 11:57:12


|