HDU 2571
来源:互联网 发布:win10ie无法下载软件 编辑:程序博客网 时间:2024/06/05 14:16
#include<cstdio>#include<cstring>#include<algorithm>using namespace std;const int maxn=1050;const int INF=-99999999;int t,n,m;int k;int x[maxn][maxn],dp[maxn][maxn];int main(){ scanf("%d",&t); while(t--) { scanf("%d%d",&n,&m); memset(dp,INF,sizeof(dp)); for(int i=1;i<=n;i++) { for(int j=1;j<=m;j++) { scanf("%d",&x[i][j]); } } for(int i = 0; i<=n; i++) dp[i][0] = -99999999; for(int i = 0; i<=m; i++) dp[0][i] = -99999999; dp[0][1]=dp[1][0]=0; for(int i=1;i<=n;i++) { for(int j=1;j<=m;j++) { dp[i][j]=max(dp[i-1][j],dp[i][j-1]); for(int k=2;k<=m;k++) { if(j/k==(double)j/k) { dp[i][j]=max(dp[i][j],dp[i][j/k]); } } dp[i][j]+=x[i][j]; } } printf("%d\n",dp[n][m]); } return 0;}哈哈,这个题目还是很简单的DP了,其实DP的难点就是一开始的思考,对于如何解决问题的思考,如何设置状态转移方程,这个题目的话很容易就可以看出来直接设置成矩阵的形式就可以很轻松的解决了。但是还是要注意这种有点像矩阵啊 或者是这种方阵一般都不以0作为存储的开始 ,而是把1作为开始,并且把0初始化,这样 就便于操作计算了。
0 0
- hdu 2571
- HDU 2571
- hdu 2571
- hdu 2571
- hdu 2571
- HDU 2571
- hdu 2571
- hdu 2571
- hdu-2571
- hdu 2571
- HDU 2571
- HDU 2571
- hdu 2571
- HDU 2571
- hdu 2571
- HDU 2571
- hdu 2571 命运
- HDU 2571 命运
- 2016"百度之星" - 初赛(Astar Round2A)解题报告
- Clime Cross GFW
- IOCP例子二
- 菜鸟的第一篇C博:希望成长
- ORA-01157 错误解决,原因DBWR锁定产生
- HDU 2571
- 如何解决Tomcat启动时重复出现Socket accept failed错误
- Android打造ListView万能适配器
- 60. Permutation Sequence
- Block如何避免self retain
- LINUX 新增的磁盘不建立分区,直接建立文件系统并挂载怎么办?
- centos6.5配置静态ip
- 封装类似jQuery的ajax函数
- android studio创建assets目录并且利用webView加载其html(by 星空武哥)