【题目描述】

    设有N*N的方格图(N<=10),我们将其中的某些方格中填入正整数,而其他的方格中则放入数字0。某人从图的左上角的A 点出发,可以向下行走,也可以向右走,直到到达右下角的B点。在走过的路上,他可以取走方格中的数(取走后的方格中将变为数字0)。 此人从A点到B 点共走两次,试找出2条这样的路径,使得取得的数之和为最大。

【题目链接】

    http://noi.openjudge.cn/ch0206/8786/

【算法】

    醉了,一开始以为很简单分成两次呗,走完一遍第一次路径经过的点记为0,但是感觉有点不对劲,因为第一次走过路可能会影响第二次,也就是有后效性,分开计算状态空间中有很多种情况并没有遍历到。然后看书。。。。所以要多线程dp,设dp【a】【b】【c】【d】表示第一次走到【a】【b】点第二次走到【c】【d】点状态下获得的最大分数,状态方程倒是不难。

【代码】

 1 #include <bits/stdc++.h>
 2 using namespace std;
 3 int n,i,j,tmp,a,b;
 4 int puz[20][20],dp[20][20][20][20];
 5 int main()
 6 {
 7     scanf("%d",&n);
 8     while(scanf("%d%d%d",&i,&j,&tmp)&&i)
 9         puz[i][j]=tmp;
10     for(i=1;i<=n;i++)
11     for(j=1;j<=n;j++)
12     for(a=1;a<=n;a++)
13     for(b=1;b<=n;b++) {
14         dp[i][j][a][b]=max(max(dp[i-1][j][a-1][b],dp[i][j-1][a][b-1]),
15                            max(dp[i-1][j][a][b-1],dp[i][j-1][a-1][b]))+puz[i][j];
16         if(i!=a||j!=b) dp[i][j][a][b]+=puz[a][b];
17     }
18     printf("%d\n",dp[n][n][n][n]);
19     return 0;
20 }

转载于:https://www.cnblogs.com/Willendless/p/9382407.html

8786:方格取数 (多线程dp)相关推荐

  1. hihocoder #1617 : 方格取数(dp)

    题目链接:http://hihocoder.com/problemset/problem/1617 题解:一道递推的dp题.这题显然可以考虑两个人同时从起点出发这样就不会重复了设dp[step][i] ...

  2. hdu2167 方格取数 状态压缩dp

    题意:      方格取数,八个方向的限制. 思路:      八个方向的不能用最大流了,四个的可以,八个的不能抽象成二分图,所以目测只能用dp来跑,dp[i][j]表示的是第i行j状态的最优,具体看 ...

  3. hdu 1565 方格取数(1)(状态压缩dp)

    方格取数(1)                                                                 Time Limit: 10000/5000 MS (J ...

  4. Java实现 蓝桥杯VIP 算法训练 方格取数

    问题描述 设有NN的方格图(N<=10),我们将其中的某些方格中填入正整数,而其他的方格中则放入数字0. 某人从图的左上角的A 点(1,1)出发,可以向下行走,也可以向右走,直到到达右下角的B点 ...

  5. Codevs 1043 方格取数

    1043 方格取数 2000年NOIP全国联赛提高组  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 钻石 Diamond 题解  查看运行结果 题目描述 Descriptio ...

  6. dp4--codeVs1043 方格取数

    dp4--codeVs1043 方格取数 一.心得 二.题目 1043 方格取数 2000年NOIP全国联赛提高组  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 钻石 Dia ...

  7. XTU 二分图和网络流 练习题 C. 方格取数(1)

    C. 方格取数(1) Time Limit: 5000ms Memory Limit: 32768KB 64-bit integer IO format: %I64d      Java class ...

  8. 洛谷1004方格取数

    P1004 方格取数 题目描述 设有N*N的方格图(N<=9),我们将其中的某些方格中填入正整数,而其他的方格中则放 人数字0.如下图所示(见样例): A0 0 0 0 0 0 0 00 0 1 ...

  9. CSP2020-J2 题解 —— D题:方格取数

    题目相关 题目链接 目前还没有官方的题目,本题目来自洛谷,https://www.luogu.com.cn/problem/P7074?contestId=37027. 题目描述 设有 n×m 的方格 ...

最新文章

  1. mysql性能优化1
  2. python基于tpot训练模型并抑制输出stackingestimator、而是输出单模型例如xgboost设置
  3. 想起linux关机命令
  4. ssl2293-暗黑游戏【dp练习题】
  5. 超全!嵌入式必懂的CAN总线一文讲通了
  6. book1复习 使用java理解程序逻辑
  7. 诗与远方:无题(四十八)
  8. mysql操作json优点和缺点_mysql之使用json
  9. MAC安装mysql和navicat
  10. 熊孩子倾家荡产玩游戏、打赏主播有救了!最高法:无效,可退还
  11. VS Code 新扩展,面向 Web 开发人员调试 DOM
  12. 在ubuntu上安装Avant Window Navigator (AWN)
  13. 航拍+AI︱paddlepaddle图像分割实现天空风格迁移(换天、漂浮城堡、宇宙飞船)
  14. ORA-24761: transaction rolled back
  15. android波浪动画简书,Android Path绘制贝塞尔曲线波浪动画
  16. C++ Deque的使用
  17. matlab:人脸识别
  18. DAPLink简单移植
  19. 数据分析与挖掘实战-电子商务网站用户行为分析及服务推荐
  20. win10装ubuntu双系统

热门文章

  1. 不是计算机专业学python能找到工作吗-python学习难不难?非计算机专业也能学吗?...
  2. python分析excel数据-总结:像Excel一样使用python进行数据分析
  3. python基础第三章选择结构答案-零基础学Python--------第3章 流程控制语句
  4. python pip-python的pip安装以及使用教程
  5. python绘图实例-Python中turtle绘图学习笔记和实例
  6. python界面设计实例-Python GUI项目实战:主窗体的界面设计与实现
  7. python第一次使用教程-Python考试_第一次
  8. python散点图拟合曲线-python – 将曲线拟合到散点图的边界
  9. python读取txt文件代码-python批量处理txt文件的实例代码
  10. python怎么画条形图-python使用Matplotlib画条形图