先把题目意思说一下:

你有F束花,编号为\(1\)~\(F\)(\(1<=F<=100\)),\(V\)个花瓶,编号为\(1\) ~\(V\)(\(1<=V<=100\)),

一束花只能放到一个花瓶里,一个花瓶只能放一束花,并且花必须按编号放入花瓶,

即若编号为\(a\)的花放到编号为\(b\)的花瓶里,那么编号为\(a+1\) ~\(F\)的花只能放在编号为\(b+1\) ~\(V\)的花瓶里,

并且,第\(i\)束花放到第\(j\)个花瓶有一个美丽值\(a_{i,j}\)(\(-50<=a_{i,j}<=50\)),求将所有花放入花瓶的最大的美丽值.

解析

这题其实就和背包一样...

我们设\(f[i][j]\)表示将前\(i\)束花放入前\(j\)个花瓶里的最大美丽值,

那么考虑状态转移,

对于当前枚举到的\(i\),\(j\),

要么把\(i\)放入\(j\)中,即\(f[i][j]=f[i-1][j-1]+a[i][j]\),

要么就不放,即\(f[i][j]=f[i][j-1]\),

所以,两重循环扫一遍就行了(是不是感觉好简单)

上代码吧:

#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std; inline int read(){
int sum=0,f=1;char ch=getchar();
while(ch>'9' || ch<'0'){if(ch=='-')f=-1;ch=getchar();}
while(ch>='0' && ch<='9'){sum=sum*10+ch-'0';ch=getchar();}
return f*sum;
} int n,m;
int a[1001][1001];
int f[1001][1001]; int main(){
n=read();m=read();
memset(f,-0x3f,sizeof(f));
for(int i=0;i<=m;i++) f[0][i]=0;
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++) a[i][j]=read();
for(int i=1;i<=n;i++){
for(int j=i;j<=m;j++) f[i][j]=max(f[i][j-1],f[i-1][j-1]+a[i][j]);
}
printf("%d\n",f[n][m]);
return 0;
}

最新文章

  1. 自定义view(二)
  2. [修正] Firemonkey TSelection 控件等比缩放时,左下角拉动问题
  3. statusbarhidden stuff 状态栏的各种特性
  4. DotNetBar grid筛选 按时间筛选
  5. localhost访问错误Forbidden You don't have permission to access / on this server.解决办法(亲测)
  6. html的&lt;!DOCTYPE&gt;标签初窥
  7. Android 自动化测试 Emmagee
  8. innodb insert buffer 插入缓冲区的理解
  9. Java转义符\\|
  10. python基础——列表生成式
  11. Guava 9-I/O
  12. [转]WCF 4 安全性和 WIF 简介
  13. Android 中Notification的运用
  14. php多图合并
  15. Linux下安装Python3.3.0
  16. 函数遍历DOM树
  17. 新年放大招:Github 私库免费了!
  18. oracle 12c新特性 FETCH FIRST、WITH TIES 关键字详解
  19. python学习 day21 (3月28日)----(抽象类 多态 nametuple dump)
  20. 云计算背后的秘密:NoSQL诞生的原因和优缺点

热门文章

  1. iis实现方向代理
  2. 使用SecureCRT连接虚拟机中Linux系统 和 虚拟机网络配置
  3. Vuex的简单认识
  4. Jenkins+SVN持续环境搭建
  5. spring事务使用
  6. spark的安装步骤
  7. Iview 中 获取 Menu 导航菜单 选中的值
  8. Jmeter之Dummy Sampler
  9. 啥叫K8s?啥是k8s?
  10. 【原创】大数据基础之Oozie(4)oozie使用的spark版本升级