zoukankan      html  css  js  c++  java
  • ZOJ 3626 Treasure Hunt I

    题意:给定一颗无向树和点权值,问遍历树day次能得到的最大权

    n表示n个结点,下面一行表示所有点的权值

    下面n-1行给出边和边的花费

    最后一行给出起点和day

    一个树形dp 

    状态转移:

    dp[x][j]=Max( dp[v][k] + dp[x][ j-dis[x][v]-k ] , dp[ x ][ j ] );




    #include<stdio.h>
    #include<iostream>
    #include<math.h>
    #include<queue>
    #include<vector>
    #include<string.h>
    #include<algorithm>
    
    #define N 105
    #define M 300
    #define INF 1000000
    using namespace std;
    vector<int>G[N];
    int dis[N][N],a[N],day,n,m;
    bool vis[N];
    int dp[N][M];//dp[i][j]代表i点花了j天的最大值
    inline int Max(int a,int b){return a>b?a:b;}
    inline int Min(int a,int b){return a<b?a:b;}
    void Floyd(){
    	int i,j,k;
    	for(k=1;k<=n;k++)
    		for(i=1;i<=n;i++)
    			for(j=1;j<i;j++)
    				dis[j][i]=dis[i][j]=Min(dis[i][j],dis[i][k]+dis[k][j]);
    }
    void DFS(int x){
    	for(int i=0;i<G[x].size();i++)
    	{
    		int v=G[x][i];
    		if(!vis[v])
    		{
    			vis[v]=true;
    			DFS(v);
    			for(int j=day;j>=dis[x][v];j--)
    				for(int k=0;j-dis[x][v]-k>=0;k++)//k代表v点花的天数 k则为j-dis[x][v]剩下的天数
    					dp[x][j]=Max(dp[v][k]+dp[x][j-dis[x][v]-k] ,dp[x][j]);
    		}//dp[x][j]就是 在v点花了k天  +  在x点花了(j-k 再 - x走到v) 剩下天数的最大值 
    	}
    }
    int main(){
    	int i,j,k,s;
    	while(~scanf("%d",&n)){
    		for(i=1;i<=n;i++){scanf("%d",&a[i]);G[i].clear();}
    		memset(dp,0,sizeof(dp));
    		for(i=1;i<=n;i++)for(j=1;j<=n;j++)dis[j][i]=dis[i][j]=INF;
    		for(i=1;i<=n;i++)dis[i][i]=0;
    		for(i=1;i<n;i++)
    		{
    			int a,b,temp;scanf("%d%d%d",&a,&b,&temp);
    			dis[a][b]=dis[b][a]=temp;
    			G[a].push_back(b); G[b].push_back(a);
    		}
    		scanf("%d%d",&s,&day);
    		day/=2;
    		
    		Floyd();
    		memset(vis,0,sizeof(vis));
    		vis[s]=true;
    		for(i=1;i<=n;i++) for(j=0;j<=day;j++) dp[i][j]=a[i];  
    		DFS(s);
    		printf("%d
    ",dp[s][day]);
    	}
    	return 0;
    }
    


  • 相关阅读:
    1. MySQL的安装与配置
    18. SQL优化
    19. 优化数据库对象
    20. 锁问题
    21. 优化MySQL Server
    整合SSM基本配置
    第七周实验报告(五)&周总结
    Java作业-实验四
    Java实验三
    在IDEA中创建maven工程添加webapp
  • 原文地址:https://www.cnblogs.com/bbsno1/p/3258010.html
Copyright © 2011-2022 走看看