程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> HDU2452 Navy maneuvers 記憶化搜索

HDU2452 Navy maneuvers 記憶化搜索

編輯:C++入門知識

HDU2452 Navy maneuvers 記憶化搜索


這題目意思能忍?讀了半年,亂七八糟的

記憶化搜索 拖拖的,dp[i][0]代表以獲得最小值為目標的船以i為起點,dp[i][1]代表以獲得最大值為目標的船以i為起點,接下來暴力枚舉入度為0的點為起點,開始記憶化搜索,


const int N = 100000 + 55;

int dp[N][2];
int value[N];
int degree[N];

vector G[N];

int n,m,f;

void init() {
	memset(dp,-1,sizeof(dp));
	memset(value,0,sizeof(value));
	memset(degree,0,sizeof(degree));
	for(int i=0;i>n>>m>>f) {
		for(int i=1;i<=n;i++)scanf("%d",&value[i]);
		int q = m;
		while(q--) {
			int u,v;
			scanf("%d %d",&u,&v);
			G[u].push_back(v);
			degree[v]++;
		}
		return false;
	} 
	return true;
}

int dfs(int pos,int mark) {
	if(dp[pos][mark&1] != -1)return dp[pos][mark&1];
	if(G[pos].size() == 0)return dp[pos][mark&1] = value[pos];
	dp[pos][mark&1] = 0;
	int maxn = -1,minn = inf;
	for(int i=0;i

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved