8786:方格取数 (多线程dp)
【题目描述】
设有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)相关推荐
- hihocoder #1617 : 方格取数(dp)
题目链接:http://hihocoder.com/problemset/problem/1617 题解:一道递推的dp题.这题显然可以考虑两个人同时从起点出发这样就不会重复了设dp[step][i] ...
- hdu2167 方格取数 状态压缩dp
题意: 方格取数,八个方向的限制. 思路: 八个方向的不能用最大流了,四个的可以,八个的不能抽象成二分图,所以目测只能用dp来跑,dp[i][j]表示的是第i行j状态的最优,具体看 ...
- hdu 1565 方格取数(1)(状态压缩dp)
方格取数(1) Time Limit: 10000/5000 MS (J ...
- Java实现 蓝桥杯VIP 算法训练 方格取数
问题描述 设有NN的方格图(N<=10),我们将其中的某些方格中填入正整数,而其他的方格中则放入数字0. 某人从图的左上角的A 点(1,1)出发,可以向下行走,也可以向右走,直到到达右下角的B点 ...
- Codevs 1043 方格取数
1043 方格取数 2000年NOIP全国联赛提高组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题解 查看运行结果 题目描述 Descriptio ...
- dp4--codeVs1043 方格取数
dp4--codeVs1043 方格取数 一.心得 二.题目 1043 方格取数 2000年NOIP全国联赛提高组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Dia ...
- XTU 二分图和网络流 练习题 C. 方格取数(1)
C. 方格取数(1) Time Limit: 5000ms Memory Limit: 32768KB 64-bit integer IO format: %I64d Java class ...
- 洛谷1004方格取数
P1004 方格取数 题目描述 设有N*N的方格图(N<=9),我们将其中的某些方格中填入正整数,而其他的方格中则放 人数字0.如下图所示(见样例): A0 0 0 0 0 0 0 00 0 1 ...
- CSP2020-J2 题解 —— D题:方格取数
题目相关 题目链接 目前还没有官方的题目,本题目来自洛谷,https://www.luogu.com.cn/problem/P7074?contestId=37027. 题目描述 设有 n×m 的方格 ...
最新文章
- mysql性能优化1
- python基于tpot训练模型并抑制输出stackingestimator、而是输出单模型例如xgboost设置
- 想起linux关机命令
- ssl2293-暗黑游戏【dp练习题】
- 超全!嵌入式必懂的CAN总线一文讲通了
- book1复习 使用java理解程序逻辑
- 诗与远方:无题(四十八)
- mysql操作json优点和缺点_mysql之使用json
- MAC安装mysql和navicat
- 熊孩子倾家荡产玩游戏、打赏主播有救了!最高法:无效,可退还
- VS Code 新扩展,面向 Web 开发人员调试 DOM
- 在ubuntu上安装Avant Window Navigator (AWN)
- 航拍+AI︱paddlepaddle图像分割实现天空风格迁移(换天、漂浮城堡、宇宙飞船)
- ORA-24761: transaction rolled back
- android波浪动画简书,Android Path绘制贝塞尔曲线波浪动画
- C++ Deque的使用
- matlab:人脸识别
- DAPLink简单移植
- 数据分析与挖掘实战-电子商务网站用户行为分析及服务推荐
- win10装ubuntu双系统
热门文章
- 不是计算机专业学python能找到工作吗-python学习难不难?非计算机专业也能学吗?...
- python分析excel数据-总结:像Excel一样使用python进行数据分析
- python基础第三章选择结构答案-零基础学Python--------第3章 流程控制语句
- python pip-python的pip安装以及使用教程
- python绘图实例-Python中turtle绘图学习笔记和实例
- python界面设计实例-Python GUI项目实战:主窗体的界面设计与实现
- python第一次使用教程-Python考试_第一次
- python散点图拟合曲线-python – 将曲线拟合到散点图的边界
- python读取txt文件代码-python批量处理txt文件的实例代码
- python怎么画条形图-python使用Matplotlib画条形图