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:1y的代码 我竟然跳了那么久 g++和c++就茶那么多吗? c++过,g++waIn Reply To:1y的代码 我竟然跳了那么久 g++和c++就茶那么多吗? c++过,g++wa Posted by:bluesunacm at 2012-09-21 13:29:37 又一个用lf输出的。。。 > #include<stdio.h> > #include<algorithm> > #include<string.h> > #include<math.h> > #include<stdlib.h> > #define N 9 > #define M 16 > long double dp[N][N][N][N][M]; > bool vi[N][N][N][N][M]; > long double s[N][N]; > int d[N][N]; > long double average_x; > inline long double MIN(long double x,long double y){ > if(x<y) return x; > return y; > } > long double dfs(int stx,int sty,int edx,int edy,int n){ > if(vi[stx][sty][edx][edy][n]){ > return dp[stx][sty][edx][edy][n]; > } > vi[stx][sty][edx][edy][n]=true; > if(n==1){ > long double total_x=s[edx][edy]-s[edx][sty-1]-s[stx-1][edy]+s[stx-1][sty-1]; > return dp[stx][sty][edx][edy][n]=pow(total_x-average_x,2); > } > > long double ret=1e18; > for(int i=stx;i<edx;i++){ > ret=MIN(dfs(stx,sty,i,edy,1)+dfs(i+1,sty,edx,edy,n-1),ret); > ret=MIN(dfs(stx,sty,i,edy,n-1)+dfs(i+1,sty,edx,edy,1),ret); > } > for(int i=sty;i<edy;i++){ > ret=MIN(dfs(stx,sty,edx,i,1)+dfs(stx,i+1,edx,edy,n-1),ret); > ret=MIN(dfs(stx,sty,edx,i,n-1)+dfs(stx,i+1,edx,edy,1),ret); > } > return dp[stx][sty][edx][edy][n]=ret; > } > int main() > { > int n; > while(scanf(" %d",&n)==1){ > for(int i=1;i<=8;i++){ > for(int j=1;j<=8;j++){ > scanf(" %d",&d[i][j]); > s[i][j]=s[i-1][j]+s[i][j-1]-s[i-1][j-1]+d[i][j]; > } > } > average_x = s[8][8]/n; > memset(vi,0,sizeof(vi)); > dfs(1,1,8,8,n); > printf("%.3lf\n",sqrt(dp[1][1][8][8][n]/n)); > } > > } Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator