Hrbust 1214 方格取数 (双线程dp)
来源:互联网 发布:mac快捷键大全 编辑:程序博客网 时间:2024/06/06 02:24
题目链接:
Hrbust 1214
题解:
双线程
设
所以
代码:
#include <bits/stdc++.h>using namespace std;int dp[23][23][23];int mp[23][23];int n,ans;int main(){ while(~scanf("%d",&n)) { memset(mp,0,sizeof(mp)); memset(dp,0,sizeof(dp)); int a,b,c; while(~scanf("%d%d%d",&a,&b,&c),a&&b&&c) { mp[a][b]=c; } for(int k=1;k<2*n;k++) { for(int j=1;j<=k;j++) { dp[k][0][k-j+1]=mp[j][k-j+1]; } } ans=0; int tmp1,tmp2,tmp3,tmp4; for(int k=2;k< 2*n;k++) { for(int i=1;i<=k && i<=n;i++) { for(int j=i+1;j<=k && j<=n;j++) { tmp1 = dp[k-1][i][j-1] + mp[k-i+1][i] + mp[k-j+1][j]; tmp2 = dp[k-1][i-1][j] + mp[k-i+1][i] + mp[k-j+1][j]; tmp1 = max(tmp1,tmp2); tmp3 = dp[k-1][i][j] + mp[k-i+1][i] + mp[k-j+1][j]; tmp1 = max(tmp1,tmp3); tmp4 = dp[k-1][i-1][j-1] + mp[k-i+1][i] + mp[k-j+1][j]; tmp1=max(tmp1,tmp4); dp[k][i][j]=tmp1; if(tmp1>ans) { ans=tmp1; } } } } if(n==1) { cout<<mp[1][1]<<endl; } else cout<<ans<<endl; } return 0;}
阅读全文
1 0
- Hrbust 1214 方格取数 (双线程dp)
- 方格取数 双线DP
- HRBUST 1214取方格(DP)
- hrbust 1843 方格取数【状压dp】
- 洛谷 p1004 方格取数 双线dp
- hrbust 1214 哈理工oj 1214 方格取数【BFS广搜+dp】
- [DP]方格取数
- 方格取数问题:双线动态规划
- hebust 1214 方格取数 (多进程dp)
- 蓝桥杯 方格取数 (多线程DP)
- codevs 1043 方格取数 (DP)
- noip2000 方格取数(多重DP)
- 命运 (DP方格取数)
- [luogu1004]方格取数(dp,亚瑟)
- 方格取数(1) (状态dp)
- 【DP】[NOIP2000]方格取数
- OpenJudge_P8786 方格取数(DP)
- 51nod 1084 双线程dp 矩阵取数v2
- Coins
- markdown语法实例
- 四种常见的 POST 提交数据方式
- vi 和 vim 的基本用法
- 北大、方正与牵牛花
- Hrbust 1214 方格取数 (双线程dp)
- CopyOnWriteArrayList
- View的生命周期
- EXE与SYS通信(直接访问模式)
- 【java】批量上传图片并回显功能
- 矩阵表示的多项式和线性空间的关系
- mysql安装图解,mysql图文安装教程详细说明
- 微信小程序学习之路(一)
- [转]quick-cocos2d-x 从2.2.5升级到3.3的体会