• POJ 2137


    水,dp【i】【j】【k】,设为当前为i个牛,在它喜欢的j个位置,而第一个牛在k个位置,很明显了,其实不过是枚举。

    #include <iostream>
    #include <cstdio>
    #include <cstring>
    #include <algorithm>
    #include <climits>
    #include <string.h>
    #include <queue>
    #include <cmath>
    #include <vector>
    using namespace std;
    struct Point {
    	int x,y;
    	Point(int xx,int yy){x=xx,y=yy;}
    };
    vector<Point>v[110];
    
    int n;
    double dp[110][45][45];	
    
    double dist(int x,int y,int xx,int yy){
    	double xt=x-xx; double yt=y-yy;
    	return sqrt(xt*xt+yt*yt);
    }
    
    int main(){
    	int k,x,y;
    	while(scanf("%d",&n)!=EOF){
    		memset(dp,0,sizeof(dp));
    		for(int i=1;i<=n;i++){
    			v[i].clear();
    			scanf("%d",&k);
    			for(int p=1;p<=k;p++){
    				scanf("%d%d",&x,&y);
    				v[i].push_back(Point(x,y));
    			}
    		}
    		int psz=v[1].size(),psw=v[2].size(),psy;
    		for(int i=0;i<psz;i++){
    			for(int k=0;k<psw;k++){
    				dp[2][k][i]=dist(v[1][i].x,v[1][i].y,v[2][k].x,v[2][k].y);
    			}
    		}
    		for(int i=3;i<=n;i++){
    			psy=v[i].size(); psw=v[i-1].size();
    			for(int k=0;k<psz;k++){
    				for(int p=0;p<psy;p++){
    					dp[i][p][k]=dist(v[i][p].x,v[i][p].y,v[i-1][0].x,v[i-1][0].y)+dp[i-1][0][k];
    					for(int t=1;t<psw;t++)
    					dp[i][p][k]=min(dp[i][p][k],dist(v[i][p].x,v[i][p].y,v[i-1][t].x,v[i-1][t].y)+dp[i-1][t][k]);
    				}
    			}
    		}
    		double ans=1e10;
    		psw=v[n].size();
    		for(int i=0;i<psw;i++){
    			for(int j=0;j<psz;j++){
    				ans=min(ans,dp[n][i][j]+dist(v[n][i].x,v[n][i].y,v[1][j].x,v[1][j].y));
    			}
    		}
    		printf("%d
    ",int(100*ans));
    	}
    }
    
    	
    

      

  • 相关阅读:
    集合Hashtable Dictionary Hashset
    ArrayList 排序Sort()方法扩展
    Visual Studio 2019使用Intel C++ Compiler
    Visual Studio工具 vcpkg简介
    PE结构学习
    netapi32的一些利用方式
    windows api和创建服务
    导出firfox保存的密码
    在Active Directory中滥用无约束Kerberos委派
    Service Principal Name (SPN)
  • 原文地址:https://www.cnblogs.com/jie-dcai/p/4296350.html
Copyright © 2020-2023  润新知