SGU 104
104. Little shop of flowers
time limit per test: 0.25 sec.
memory limit per test: 4096
KB
PROBLEM
You want to arrange the window of your flower shop in a most pleasant way. You have F bunches
of flowers, each being of a different kind, and at least as many vases
ordered in a row. The vases are glued onto the shelf and are numbered
consecutively 1 through V, where V is the number of vases, from left to right so that the vase 1 is the leftmost, and the vase V is the rightmost vase. The bunches are moveable and are uniquely identified by integers between 1 and F.
These id-numbers have a significance: They determine the required order
of appearance of the flower bunches in the row of vases so that the
bunch i must be in a vase to the left of the vase containing bunch j whenever i < j.
Suppose, for example, you have bunch of azaleas (id-number=1), a bunch
of begonias (id-number=2) and a bunch of carnations (id-number=3). Now,
all the bunches must be put into the vases keeping their id-numbers in
order. The bunch of azaleas must be in a vase to the left of begonias,
and the bunch of begonias must be in a vase to the left of carnations.
If there are more vases than bunches of flowers then the excess will be
left empty. A vase can hold only one bunch of flowers.
Each vase has a distinct characteristic (just like
flowers do). Hence, putting a bunch of flowers in a vase results in a
certain aesthetic value, expressed by an integer. The aesthetic values
are presented in a table as shown below. Leaving a vase empty has an
aesthetic value of 0.
|
V A S E S |
||||||
|
1 |
2 |
3 |
4 |
5 |
||
|
Bunches |
1 (azaleas) |
7 |
23 |
-5 |
-24 |
16 |
|
2 (begonias) |
5 |
21 |
-4 |
10 |
23 |
|
|
3 (carnations) |
-21 |
5 |
-4 |
-20 |
20 |
|
According to the table, azaleas, for example, would look great in vase 2, but they would look awful in vase 4.
To achieve the most pleasant effect you have to
maximize the sum of aesthetic values for the arrangement while keeping
the required ordering of the flowers. If more than one arrangement has
the maximal sum value, any one of them will be acceptable. You have to
produce exactly one arrangement.
ASSUMPTIONS
- 1 ≤ F ≤ 100 where F is the number of the bunches of flowers. The bunches are numbered 1 through F.
- F ≤ V ≤ 100 where V is the number of vases.
- -50 £
Aij £
50 where Aij is the aesthetic value obtained by putting the flower bunch i into the vase j.
Input
- The first line contains two numbers: F, V.
- The following F lines: Each of these lines contains V integers, so that Aij is given as the j’th number on the (i+1)’st line of the input file.
Output
- The first line will contain the sum of aesthetic values for your arrangement.
- The second line must present the arrangement as a list of F numbers, so that the k’th number on this line identifies the vase in which the bunch k is put.
Sample Input
3 5
7 23 -5 -24 16
5 21 -4 10 23
-21 5 -4 -20 20
Sample Output
53
2 4 5 水dp,设dp[i][j]为当前第i种朵花放入第j个花瓶的最大价值,mx[i][j] 为 max(dp[i][k]) ( 1=<k<=j)
则状态方程为 dp[i][j] = a[i][j] + mx[i - 1][j - 1];
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstring> using namespace std; #define maxn 105 #define INF 100 int dp[maxn],mx[maxn],a[maxn][maxn],mxid[maxn],fa[maxn][maxn];
int ans[maxn];
int f,v,len = ; void solve() { for(int i = ; i <= f; i++) {
for(int j = i; j <= v; j++) {
dp[j] = a[i][j] + (j == ? : mx[j - ]);
fa[i][j] = j == ? : mxid[j - ];
}
for(int j = i; j <= v; j++) {
mx[j] = mx[j - ];
mxid[j] = mxid[j - ];
if(mx[j] < dp[j] || j == i) {
mx[j] = dp[j];
mxid[j] = j;
}
}
/*for(int j = 1; j <= v; j++) {
printf("%d ",mxid[j]);
}
printf("\n");*/
} } void output() {
int id = f,_max = dp[f];
for(int i = f + ; i <= v; i++) {
if(_max < dp[i]) {
_max = dp[i];
id = i;
}
} printf("%d\n",dp[id]);
len = f;
for(int u = id; len >= ; u = fa[len + ][u]) {
ans[len--] = u;
} printf("%d",ans[]);
for(int i = ; i <= f; i++) {
printf(" %d",ans[i]);
}
printf("\n");
} int main()
{
// freopen("sw.in","r",stdin); scanf("%d%d",&f,&v); for(int i = ; i <= f; i++) {
for(int j = ; j <= v; j++) {
scanf("%d",&a[i][j]);
}
} solve(); output(); //cout << "Hello world!" << endl;
return ;
}
SGU 104的更多相关文章
- sgu 104 Little shop of flowers 解题报告及测试数据
104. Little shop of flowers time limit per test: 0.25 sec. memory limit per test: 4096 KB 问题: 你想要将你的 ...
- SGU 104. Little shop of flowers (DP)
104. Little shop of flowers time limit per test: 0.25 sec. memory limit per test: 4096 KB PROBLEM Yo ...
- SGU 104 Little shop of flowers【DP】
浪(吃)了一天,水道题冷静冷静.... 题目链接: http://acm.sgu.ru/problem.php?contest=0&problem=104 题意: 给定每朵花放在每个花盆的值, ...
- 动态规划(方案还原):SGU 104 Little shop of flowers
花店橱窗布置问题 时间限制:3000 ms 问题描述(Problem) 假设你想以最美观的方式布置花店的橱窗,你有F束花,每束花的品种都不一样,同时,你至少有同样数量的花瓶,被按顺序摆成一行.花 ...
- 【SGU 104】Little shop of flowers
题意 每个花按序号顺序放到窗口,不同窗口可有不同观赏值,所有花都要放上去,求最大观赏值和花的位置. 分析 dp,dp[i][j]表示前i朵花最后一朵在j位置的最大总观赏值. dp[i][j]=max( ...
- sgu 104 Little Shop of Flowers
经典dp问题,花店橱窗布置,不再多说,上代码 #include <cstdio> #include <cstring> #include <iostream> #i ...
- Little shop of flowers - SGU 104 (DP)
题目大意:把 M 朵花插入 N 个花瓶中,每个花插入不同的花瓶都有一个价值A[Mi][Nj],要使所有的花都插入花瓶,求出来最大的总价值(花瓶为空时价值是0). 分析:dp[i][j]表示前i朵花插入 ...
- SGU刷题之路开启
VJ小组:SGU---48h/题 每道做出的题目写成题解,将传送门更新在这里. SGU:101 - 200 SGU - 107 水题 解题报告 SGU - 105 找规律水题 解题报告 SGU - 1 ...
- SGU 乱搞日志
SGU 100 A+B :太神不会 SGU 101 Domino: 题目大意:有N张骨牌,两张骨牌有两面有0到6的数字,能相连当且仅当前后数字相同,问能否有将N张骨牌连接的方案?思路:裸的欧拉回路,注 ...
随机推荐
- 《Prism 5.0源码走读》Bootstrapper
Prism框架需要在应用程序启动的时候进行一些初始化的工作,Bootstrapper就是来做这些的,是其切入点. Bootstrapper主要要做的事有:创建和配置module catalog,创建D ...
- poj 1564 Sum It Up
题目连接 http://poj.org/problem?id=1564 Sum It Up Description Given a specified total t and a list of n ...
- [转]va_start和va_end使用详解
转载地址:http://www.cnblogs.com/hanyonglu/archive/2011/05/07/2039916.html 本文主要介绍va_start和va_end的使用及原理. ...
- 数据库的编码浅谈(ZHS16GBK与US7ASCII)
数据库的编码浅谈(ZHS16GBK与US7ASCII) 2007-11-15 17:14:18 分类: Oracle SQL> SELECT RAWTOHEX('郭A军') from dual ...
- 与电子钱包相关的APDU指令
CLS:命令报文的类别字节,class byte(类别字节) of command message(命令报文) UranusPay ED/EP: UranusPay是HB公司开发的COS,而ED是电子 ...
- STL之multiset
参见http://www.cplusplus.com/reference/set/multiset/ template < class T, ...
- 在windows下使用vs2013编译和调试mysql源代码
1. 准备工作 1)OS:win10 + VS2013 2)mysql 源码(windows版):mysql-5.6.25.zip 3)perl tool:ActivePerl-5.16.3.1604 ...
- 20145120 《Java程序设计》第6周学习总结
20145120 <Java程序设计>第6周学习总结 教材学习内容总结 java.io.InputStream.java.io.OutputStream实例分别作为输入.输出串流的代表对象 ...
- js基础知识点(只有点)
转自:2015年12月的文章 http://blog.csdn.net/u014326381/article/details/50176339 JavaScript: 作用域链.闭包.运行时上下文.t ...
- elasticsearch查询之term,range,prefix
荒废了很久的博客园,现在又回来了.233333 最近在研究elasticsearch 日志查询: 1.term:代表完全匹配,即不进行分词器分析,文档中必须包含整个搜索的词汇 2.range:主要是对 ...