Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
Re:没过的试一试c++,真是服了 c++就过了 g++就过不了In Reply To:没过的试一试c++,真是服了 c++就过了 g++就过不了 Posted by:nka_kun at 2017-08-24 18:20:36 > #include<cstdio> > #include<iostream> > #include<algorithm> > #include<queue> > #include<stack> > #include<cstring> > #include<string> > #include<vector> > #include<cmath> > #include<map> > using namespace std; > typedef long long ll; > #define mem(a,b) memset(a,b,sizeof(a)) > const int maxn = 1e5+5; > const int ff = 0x3f3f3f3f; > int sx,sy,ex,ey; > > long long temp[205][2]; > double mp[205][205]; > double dis[205]; > int vis[205]; > int cnt = 2; > > void solve() > { > for(int i = 1;i<= cnt;i++) > dis[i] = mp[1][i]; > vis[1] = 0; > dis[1] = 0; > int num = 1; > while(num<= cnt) > { > double min_d = 9999999999999; > int min_v; > for(int i = 1;i<= cnt;i++) > { > if(!vis[i]&&dis[i]< min_d) > min_d = dis[i],min_v = i; > } > vis[min_v] = 1; > num++; > if(min_v == 2) > break; > for(int i = 1;i<= cnt;i++) > { > if(!vis[i]&&min_d+mp[min_v][i]< dis[i]) > { > dis[i] = min_d+mp[min_v][i]; > } > } > } > double ans = dis[2]*60; > printf("%.0lf\n",ans); > > } > > int main() > { > mem(vis,0); > scanf("%I64d %I64d %I64d %I64d",&temp[1][0],&temp[1][1],&temp[2][0],&temp[2][1]); > int t[202][2]; > ll x,y; > int l,r; > int flag = 0; > while(scanf("%I64d %I64d",&x,&y)!= EOF) > { > if(x == -1&&y == -1) > { > for(int i = l;i< r;i++) > { > for(int j = i+1;j<= r;j++) > { > double sum = 0; > for(int k = i;k< j;k++) > sum+= sqrt((double)(temp[k][0]-temp[k+1][0])*(double)(temp[k][0]-temp[k+1][0])+(double)(temp[k][1]-temp[k+1][1])*(double)(temp[k][1]-temp[k+1][1]))/(40000*1.0); > mp[i][j] = sum; > mp[j][i] = sum; > } > } > flag = 0; > continue; > } > temp[++cnt][0] = x; > temp[cnt][1] = y; > if(flag == 0) > { > flag = 1; > l = cnt; > } > r = cnt; > } > for(int i = 1;i< cnt;i++) > { > for(int j = i+1;j<= cnt;j++) > { > if(mp[i][j]!= 0) > { > mp[i][j] = min(mp[i][j],sqrt((double)(temp[i][0]-temp[j][0])*(double)(temp[i][0]-temp[j][0])+(double)(temp[i][1]-temp[j][1])*(double)(temp[i][1]-temp[j][1]))/(10000*1.0)); > mp[j][i] = mp[i][j]; > continue; > } > mp[i][j] = sqrt((double)(temp[i][0]-temp[j][0])*(double)(temp[i][0]-temp[j][0])+(double)(temp[i][1]-temp[j][1])*(double)(temp[i][1]-temp[j][1]))/(10000*1.0); > mp[j][i] = mp[i][j]; > } > } > solve(); > > return 0; > } Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator