zoukankan      html  css  js  c++  java
  • 方格取数

    dp(记忆化搜索qwq)

    这道题目本想练一下记忆化搜索,但是发现自己漏洞百出。

    主要存在的问题:1、如果已经判断过边界了就没必要在终点位置return;
    2、访问标记要注意用法qwq

    CODE:

    #include<iostream>
    #include<cstdio>
    #include<queue>
    #include<algorithm>
    #include<cstring>
    #include<cmath>
    #include<set>
    #include<map>
    #include<vector>
    #define maxn 101
    #define int long long
    #define SZJ signed
    #include<time.h>
    #define AK main
    #define half (l+r)>>1
    #define SDOI () 
    using namespace std;
    #define rep(i,a,b) for (int i=a;i<=b;++i) 
    #define erpe (i,a) for (int i=head[a];i!=-1;i=e[i].next)
    int n,m,val[maxn][maxn],dp[20][20][20][20];
    bool vis[maxn][maxn];
    inline int MAX(int a,int b,int c,int d){ return max(max(max(a,b),c),d);}
    inline int dfs(int fx,int fy,int sx,int sy)
    {
    	
    	if (fx>n||fy>n||sx>n||sy>n) return 0;
    	if (~dp[fx][fy][sx][sy]) return dp[fx][fy][sx][sy];
    	int mx=0,tmp=0,flag1=0,flag2=0;
    	if (!vis[fx][fy])
    	{
    		vis[fx][fy]=1;
    		tmp+=val[fx][fy];
    		flag1=1;
    	}
    	if (!vis[sx][sy])
    	{
    		vis[sx][sy]=1;
    		tmp+=val[sx][sy];
    		flag2=1;
    	}
    	mx=MAX(dfs(fx+1,fy,sx+1,sy),dfs(fx+1,fy,sx,sy+1),dfs(fx,fy+1,sx+1,sy),dfs(fx,fy+1,sx,sy+1));注意转移
    	mx+=tmp;
    	dp[fx][fy][sx][sy]=mx;
    	if (flag1) vis[fx][fy]=0; //注意这样才能清空
    	if (flag2) vis[sx][sy]=0;
    	return mx;
    }
    SZJ AK SDOI
    {
    	cin>>n;
    	memset(dp,-1,sizeof(dp));
    	while (1)
    	{
    		int x,y,z;
    		scanf("%lld%lld%lld",&x,&y,&z);
    		if (x==0&&y==0&&z==0) break;
    		val[x][y]=z;
    	}
    	cout<<dfs(1,1,1,1);
    	return 0;
    }
    
  • 相关阅读:
    HGOI 20200724
    HGOI 20200722
    [USACO Open08]牛的邻居Cow Neighborhoods解题报告
    [USACO Jan07]考试Schul解题报告
    [CF 249D]Donkey and Start解题报告
    [CF 321D]Ciel and Flipboard解题报告
    [CF 294D]Shaass and Painter Robot解题报告
    [CF 297E]Mystic Carvings解题报告
    [CF 306E]Levko and Game题解翻译
    [CF 316F3]Suns and Rays解题报告
  • 原文地址:https://www.cnblogs.com/bullshit/p/9904647.html
Copyright © 2011-2022 走看看