【SGU】SGU每日练1·Little shop of flowers【DP】
题目大意:
给你n*m的矩形(m >= n)
每个节点mp[i][j]有一个权值,从第一行走到最后一行,每一行只准选择一个数且对于i行,所选数的列数要严格大于i-1行选择的列数
问你最大权值是多少,并输出选择的n个列数
思路:
DP方程非常好想:DP[i][j] = max(DP[i][j - 1], DP[i - 1][j - 1] + mp[i][j]);
找路径的话,可以每行可以从从i+1到m,也可以直接从i - 1开始找
也可以在DP里面做标记,状态转移的时候将此点记录!
但是不能想的太无脑,你懂的
附上代码;
#include <iostream> #include <stdio.h> #include <algorithm> #include <string.h> #include <string> #include <math.h> #include <stack> #include <queue> #include <vector> #include <map> #include <set> #pragma warning(disable:4996)#define Zero(a) memset(a, 0, sizeof(a)) #define Neg(a) memset(a, -1, sizeof(a)) #define All(a) a.begin(), a.end() #define PB push_back #define repf(i,a,b) for(int i = a;i <= b; i++) #define repff(i,a,b) for(int i = a; i < b; ++i) #define lson l,m,rt<<1 #define rson m+1,r,rt<<1|1 #define root 1,n,1 #define ld rt << 1 #define rd rt << 1 | 1 #define ll long long #define MAXN 105 #define INF 0x3f3f3f3f #define mod 10007 using namespace std; vector<int>go; int n, m, dp[MAXN][MAXN], gg[MAXN][MAXN], mp[MAXN][MAXN]; void init(){memset(gg, 0, sizeof(gg));for (int i = 1; i <= n; ++i)for (int j = 1; j <= m; ++j){scanf("%d", &mp[i][j]);if(i != 0)dp[i][j] = -INF;else dp[i][j] = 0;}for (int i = 0; i <= n; ++i)for (int j = 0; j <= m; ++j){if (i != 0)dp[i][j] = -INF;else dp[i][j] = 0;}go.clear(); }int main(){while (~scanf("%d%d", &n, &m)){init();for (int i = 1; i <= n; ++i)for (int j = 1; j <= m; ++j){if (dp[i - 1][j - 1] + mp[i][j] > dp[i][j - 1]){gg[i][j] = 1;//cout << "go" << endl;dp[i][j] = dp[i - 1][j - 1] + mp[i][j];}else{dp[i][j] = dp[i][j - 1];}}printf("%d\n", dp[n][m]);int nowx = n,nowy = m;while (nowx && nowy){if (gg[nowx][nowy] == 1){go.push_back(nowy);nowx--;nowy--;}else{nowy--;}}int len = go.size();for (int i = len - 1; i >= 0; --i){if (i != len - 1) printf(" ");printf("%d", go[i]);}puts("");}return 0; }
转载于:https://www.cnblogs.com/mashiroG/p/4663020.html
【SGU】SGU每日练1·Little shop of flowers【DP】相关推荐
- C语言3067答案,教师招聘《小学教育心理学》通关试题每日练(2020年03月03日-3067)...
1:将学习策略分为基本策略和支持策略的是( ). 单项选择题 A.丹瑟洛 B.尼斯比特 C.皮连生 D.鲍斯菲尔德 2:奠定儿童人格和心理健康基础的是( ). 单项选择题 A.社会 B.家庭 C.学校 ...
- 面试时为什么想当计算机老师,每日练·面试丨你为什么想当老师?
原标题:每日练·面试丨你为什么想当老师? 今天的问题不是老生常谈,每个想当教师的心里都该有自己的答案. 题目 你为什么想当老师? 参考答案 苏格拉底曾说过:世界上最快乐的事,莫过于为理想而奋斗.从我个 ...
- 每日练琴菜单 ---非常有效的古筝学习方法
1 .时间分配 弹古筝者,必须每天练琴.常言道:"一天不练自己知道,两天不练同行知道,三天不练老师知道,四天不练大家都知道."特别是学习古筝专业的学生,每天一定要保证3-5小时的练 ...
- 牛客算法周周练2 B Music Problem(DP,抽屉原理,二进制拆分)
链接:https://ac.nowcoder.com/acm/contest/5203/B 来源:牛客网 题目描述 Listening to the music is relax, but for o ...
- [CH5E02] A Little Shop of Flowers
问题描述 You want to arrange the window of your flower shop in a most pleasant way. You have F bunches o ...
- pku1157-------LITTLE SHOP OF FLOWERS(简单动态规划题:摆放鲜花使审美价值达到最高)...
328K 16MS GCC 566B 2009-01-12 12:55:30 设置一个best数组,两个用处: 1)存放输入数据 2)best[i][j]表示前i束花放到前j个花瓶中能得到的最大的审美 ...
- NO.1157 Litte Shop Of Flowers
动态规划 scanf和printf的确比cin和cout快得多,前者要16MS,而后者却要76MS. #include<iostream.h> #include<stdio.h> ...
- POJ 超详细分类
POJ 各题算法 1000 A+B Problem 送分题 49% 2005-5-7 1001 Exponentiation 高精度 ...
- POJ前面的题目算法思路【转】
1000 A+B Problem 送分题 49% 2005-5-7 1001 Exponentiation 高精度 85% 2005-5-7 1002 487-3279 n/a 90% 2005-5- ...
最新文章
- Coding-排序(sort)
- jd-gui的下载和使用
- ORACLE的ASM
- HTML5 Canvas 旋转
- Java写手机专题分析接口_jeesite学习文档API-内容管理模块
- 计算机控制读书报告心得,计算机控制系统读书报告
- Camel中的几个重要概念之 Components
- jQuery 输入框 在光标位置插入内容, 并选中
- POJ-2400 Supervisor, Supervisee 带权值匹配+枚举所有匹配情况
- android 键盘 自动消失,android 软键盘 回到键 消失事件 监听
- 设计模式之不简单的工厂模式(一)
- SQL_Server_2008完全学习之第六章数据查询和管理
- 【ArcGIS|空间分析】志愿者分配管理区域内共享单车(全国大学生GIS技能大赛试题)
- 覆写和重载 虚方法与抽象方法 (转)
- 打开浏览器网址方法(PyQt Qt for python)
- 怎么让联想计算机升级,如何刷bios,教您联想电脑如何刷bios
- 网络限速软件测试大乐,宽带测速谁靠谱?网速测试软件大对比
- 【C语言】pow函数的模拟实现(递归)
- windows WTS 服务与桌面交互
- java小组口号,小组口号霸气
热门文章
- html百度天气api,百度API 免费接口获取天气预报
- mysql 日志 设置 set_MySQL 慢查询日志的开启与配置
- 如何获取exception的target异常_三个好习惯,帮你写好Python里的异常处理
- C++笔记-二维棋盘数组转邻接表(使用QTL)
- Qt + Python + OpenCV图标替换工具 之 Python调用dll(三)
- 简单的反U盘病毒(删除不了的畸形文件夹)
- html 图片自由缩放_PS中的“缩放”
- oracle触发器无效且,oracle创建触发器成功但是插值失败
- ccf推荐期刊和会议目录_重磅快讯:大数据入选CCF推荐中文科技期刊目录!
- python调用高德地图api 可视化_Python:利用高德地图API实现找房