浪(吃)了一天,水道题冷静冷静....


题目链接:

http://acm.sgu.ru/problem.php?contest=0&problem=104

题意:

给定每朵花放在每个花盆的值,编号大的花只能放在编号小的花的后面,每朵花都要放到花盆里,问如何放才能使得总值最大?

分析:

还是一道比较水的dp...

每个位置有两种情况:放与不放。

不放的话\(dp[i][j-1][0]\)就等于前面最近的放了花盆的值。

放的话,就更新\(dp[i][j][1]\)。

这样保证对于每个花盆\(i\)花\(j\),\(max(dp[i - 1][j - 1][0] ,dp[i - 1][j - 1][1])\)表示放置第\(j-1\)号花后得到的最大的值。

最后逆推一遍,获得路径即可。

代码:

#include<cstdio>
#include<iostream>
#include<stack>
#include<cstring>
using namespace std;
const int maxn = 100 + 5;
int dp[maxn][maxn][2];
int v[maxn][maxn];
stack<int>s;
int main (void)
{
int n, m;
scanf("%d%d", &m, &n);
for(int i = 1; i <= m; i++){
for(int j = 1; j <= n; j++){
scanf("%d", &v[i][j]);
}
}
memset(dp, -0x3f, sizeof(dp));
dp[0][0][0] = 0;
for(int i = 1; i <= n; i++){
for(int j = 1; j <= m; j++){
dp[i][j - 1][0] = max(dp[i - 1][j - 1][0] ,dp[i - 1][j - 1][1]);
dp[i][j][1] = max(dp[i - 1][j - 1][0], dp[i - 1][j - 1][1]) + v[j][i];
}
}
int ans = max(dp[n][m][1], dp[n][m][0]);
printf("%d\n", ans);
int sta = n;
for(int i = m; i >= 0; i--){
for(int j = sta; j >= 0; j--){
if(dp[j][i][1] == ans && ans){
s.push(j);
sta = j - 1;
ans -= v[i][j];
break;
}
}
}
while(!s.empty()){
int res =s.top();
s.pop();
printf("%d ", res);
}
printf("\n");
return 0;
}

最新文章

  1. Request.GetOwinContext()打不到
  2. html+css+javascript实现列表循环滚动示例代码
  3. Spring webapp - shutting down threads on Application stop
  4. GNU C 扩展(转)
  5. Spring和SpringMVC的区别
  6. Oracle中对表的操作
  7. 原生tab切换
  8. Azure WAF防火墙工作原理分析和配置向导
  9. bzoj 4815: [Cqoi2017]小Q的表格 [数论]
  10. thinkpad E480 用户初体验
  11. Python学习笔记【第三篇】:if判断、while循环、for循环
  12. python网络编程初识
  13. Confluence 6 系统运行信息中的 JVM 内存使用情况
  14. RabbitMQ中客户端的Channel类里各方法释义
  15. 记录Ubuntu &amp; Windows下安装PyV8
  16. vue 中使用iconfont Unicode编码线上字体图标的流程
  17. Windows 8.1 GetVersionEx返回6.2.9200 的问题!
  18. 关于$namespace$和重载运算符
  19. [转帖]Kubernetes及容器编排的总体介绍【译】
  20. 洛谷P4774 BZOJ5418 LOJ2721 [NOI2018]屠龙勇士(扩展中国剩余定理)

热门文章

  1. Android RxJava小结
  2. PMP项目管理学习笔记(9)——范围管理
  3. 位bit,字节byte,K,M,G(转)
  4. Database coalesce
  5. vueCode 常用代码总结 20190116
  6. 用Vue的方式实现复选框
  7. sqlserver 分页问题
  8. 通过java反射机制,获取对象的属性和值(包括所有继承的父类)
  9. 01matplotlib
  10. CF993E Nikita and Order Statistics 多项式卷积 快速傅里叶变换