UVALive 4212 Candy
ACM ICPC South American Regional 2008
题目大意:给定一个矩阵,每个元素有一个值,每次取一个元素都会使得当前元素左右两个相邻项变为零,上下两行变为零,如图阴影部分所示,求最大能取到的值之和。
解法:我竟然没有看出来是双重动规,果然太久不做动规了。当时还脑残的写了个四维的(虽然有三维的取值范围都是0,1),最后降到三维,然后wa了一次改了改之后AC了。正确的解法应该是每列dp一次,算出当前行的最优值,然后再用这个值按行dp。f[i]=max{f[i-1],f[i-2]+a[i]}空间上其实可以优化很多,dp数组只要开到3就好了,滚动一下即可。我没有滚动,直接开了两个MAXN的一维数组,然后每次用之前习惯性的memset了一下,没想到居然超时了,取消memset之后就过了。看来要慎用memset,如果明显知道不会出现新旧值混用的情况,就不必要memset了。
1 #include <iostream> 2 #include <cstdio> 3 #include <vector> 4 #include <cmath> 5 #include <algorithm> 6 #include <utility> 7 #include <cstring> 8 #include <fstream> 9 #include <string> 10 using namespace std; 11 const int MAXN=100005; 12 int f[MAXN],g[MAXN],a[MAXN]; 13 int main(int argc, char* argv[]) 14 { 15 int m,n; 16 while(scanf("%d%d",&m,&n),(m!=0&&n!=0)) 17 { 18 //memset(g,0,sizeof(g)); 19 for(int i=1;i<=m;i++) 20 { 21 for(int j=1;j<=n;j++) 22 scanf("%d",&a[j]); 23 // memset(f,0,sizeof(f)); 24 f[1]=a[1]; 25 for(int j=2;j<=n;j++) 26 f[j]=max(f[j-1],f[j-2]+a[j]); 27 if(i==1) 28 g[1]=f[n]; 29 else 30 g[i]=max(g[i-1],g[i-2]+f[n]); 31 } 32 cout<<g[m]<<endl; 33 } 34 }
转载于:https://www.cnblogs.com/jzlikewei/archive/2012/05/02/2478413.html
UVALive 4212 Candy相关推荐
- [LeetCode]135.Candy
[题目] There are N children standing in a line. Each child is assigned a rating value. You are giving ...
- LeetCode之Candy
[题目] There areNchildren standing in a line. Each child is assigned a rating value. You are giving ca ...
- DP UVALive 6506 Padovan Sequence
题目传送门 /*题意:两行数字,相邻列一上一下,或者隔一列两行都可以,从左到右选择数字使和最大DP:状态转移方程:dp[i][j] = max (dp[i][j], dp[1-i][j-1] + a[ ...
- BZOJ 4212: 神牛的养成计划
4212: 神牛的养成计划 Time Limit: 10 Sec Memory Limit: 512 MB Submit: 142 Solved: 30 [Submit][Status][Disc ...
- The UVALIVE 7716 二维区间第k小
The UVALIVE 7716 二维区间第k小 /** 题意:给一个n * n的矩阵,有q个查询每次查询r,c,s,k表示已(r,c)为右上角 大小为s的正方形中 第k小的元素n <= 250 ...
- UVALive 8513 lovers 2017 西安区域赛 B 贪心+multiset
UVALive 8513 有2种人,每个人有自己的权值$A_i$ $B_i$ 当$A_i + B_i >=K$时 两个人可以配对 问最多多少人可以配对 解法 : 把$/{ A_i /}$ 排序 ...
- Animated Eye Candy for Programmers
作者采用vs2008编译,c#代码 Animated Eye Candy for Programmers By Phillip Piper | 17 Apr 2010 A class library ...
- 训练指南 UVALive - 3713 (2-SAT)
layout: post title: 训练指南 UVALive - 3713 (2-SAT) author: "luowentaoaa" catalog: true mathja ...
- 天题系列: Candy
排排坐分果果,这道题还是蛮难想的,答案忘了从哪里看的了 public int candy(int[] ratings) {if(ratings == null) return 0;int len = ...
最新文章
- 如何仅从SQL Server DateTime数据类型返回日期
- 爱奇艺大数据分析平台的演进之路
- openssh for windows
- 学习记录 php,PHP进阶篇学习专用记录
- script标签中defer和async的区别
- Singleton 与 MonoState 模式
- python excel图表 导出word模板_使用python将Excel数据填充Word模板并生成Word
- 【历史上的今天】8 月 31 日:人工智能起源;GPU诞生;Windows 98中文版来了
- 软件工程基础知识--需求分析
- 东财《组织行为学X》综合作业
- 高通CSRA6640单芯片DDFA放大器解决方案
- Airbnb短租房源数据分析
- ribbonmq超时配置_使用RabbitMQ实现订单超时取消(延迟队列)
- mybatis类型转换器处理PostGis数据库geometry类型转换
- 正方形里面两个扇形相交部分_边长为1的正方形内,两个扇形,一个半圆,求阴影面积....
- 美国国家信用合作社管理局(NCUA)发布RFI询问信用合作社加密相关问题
- 大幅提升冲浪效率,搜狗高速浏览器3.0
- Visual Studio 2010中国团队的研发内幕
- java.lang.IllegalStateException: getWriter() has already been called for this response问题解决
- 你的计划为什么执行不下去?怎么破?