这是一道水题,写这个Bolg的目的就是记录自己的sb,,,竟然有一个bug一直都没发现,好久才改出来,emmmm…
附上AC代码
#include <bits/stdc++.h>
#define FOPI freopen("INPUT.TXT", "r", stdin)
#define DOPI freopen("OUTPUT.TXT", "w", stdout)
#define FOR(i, x, y) for(int i = x; i <= y; i ++)
#define ROF(i, x, y) for(int i = x; i >= y; i --)
using namespace std;
typedef long long int ll;
const int ind=0x3f3f3f3f,N=17000;
const ll inlld=0x3f3f3f3f3f3f3f3f,mod=998244353;
int a[N][9];int b[N];
int main()
{
int n;
int num=1;
while(scanf("%d",&n)&&n){
printf("Case %d: ",num++);
int cnt=5000000;
memset(a,0,sizeof(a));
memset(b,0,sizeof(b));
for(int i=1;i<=n;i++){
double x,y,z;
cin>>x>>y>>z;
// scanf("%lf%lf%lf",&x,&y,&z);
a[i][1]=(int)round(x*100);
a[i][2]=(int)round(y*100);
a[i][3]=(int)round(z*100);
if(a[i][1]>a[i][2])swap(a[i][1],a[i][2]);
if(a[i][2]>a[i][3])swap(a[i][2],a[i][3]);
if(a[i][1]>a[i][2])swap(a[i][1],a[i][2]);
}
for(int i=1;i<=n;i++){
a[i][4]=a[i][1]+a[i][2];
a[i][5]=a[i][1]+a[i][3];
a[i][6]=a[i][2]+a[i][3];
a[i][7]=a[i][1]+a[i][2]+a[i][3];
}
for(int i=1;i<=n;i++){
if(a[i][4]<a[i][3])swap(a[i][3],a[i][4]);
}
for(int i=1;i<=n;i++)scanf("%d",&b[i]);
cnt=a[b[1]][7];int fg=1;
for(int i=2;i<=n;i++){
int j=b[i];int tp=0;
if(b[i]>b[i-1]){
for(int k=7;k>=1;k--){
if(a[j][k]<=cnt){
tp=1;cnt=a[j][k];break;
}
}
}
else {
for(int k=7;k>=1;k--){
if(a[j][k]<cnt){
tp=1;cnt=a[j][k];break;
}
}
}
if(!tp){
fg=0;cout << "No solution" << endl;break;
}
}
if(fg)printf("%.2f\n",(double)cnt/100.0);
}
return 0;
}
/*
3
100 200 300
100 200 300
100 200 300
1 2 3
3
100 200 300
100 200 300
100 200 300
3 2 1
0
*/