标签:sof font 题解 oid 最小 namespace ring floyd def
6
107
5
#include<cstdio> #include<algorithm> #include<cstring> #define inf 1<<29 using namespace std; int a[710],map[710][710]; int link[710][710],b[710]; void floyd(int x) { for(int k=1 ; k<=x ; ++k) for(int i=1 ; i<=x ; ++i) for(int j=1 ; j<=x ; ++j) if(link[i][k]<link[i][j]&&link[k][j]<link[i][j]) link[i][j]=min(link[i][j],link[i][k]+link[k][j]); } int main() { memset(map,0x7f,sizeof(map)); for(int i=1 ; i<=700 ; ++i){a[i]=((i-1)%10)+1;b[i]=b[i-1]+a[i];} for(int i=1 ; i<=700 ; ++i) { map[i][i]=0; if(i<=5) { for(int j=i+1 ; j<=5 ; ++j) { int t=(i*j)%10+(i+j)%6+1; map[i][j]=map[j][i]=t; } } else { int t=(i*(i-1))%10+(i+i-1)%6+1; map[i][i-1]=map[i-1][i]=t; t=(i*(i-3))%10+(i+i-3)%6+1; map[i][i-3]=map[i-3][i]=t; } } for(int i=1 ; i<=700 ; ++i) { int ans=inf; for(int j=1 ; j<=i ; ++j) for(int k=1 ; k<=i ; ++k) link[j][k]=map[j][k]; floyd(i); for(int j=1 ; j<=i ; ++j) { int tmp=0; for(int k=1 ; k<=i ; ++k) { tmp+=link[j][k]*a[k]; } ans=min(ans,tmp+b[i]);
/* if(ans>tmp+b[i])
{
ans=tmp+b[i];
fu=j;
}
}
printf("%d,",fu);
}*/第二个表 printf("%d,",ans); } return 0; }
标签:sof font 题解 oid 最小 namespace ring floyd def
原文地址:http://www.cnblogs.com/fujudge/p/7507917.html