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.
  • FV ≤ 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的更多相关文章

  1. sgu 104 Little shop of flowers 解题报告及测试数据

    104. Little shop of flowers time limit per test: 0.25 sec. memory limit per test: 4096 KB 问题: 你想要将你的 ...

  2. 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 ...

  3. SGU 104 Little shop of flowers【DP】

    浪(吃)了一天,水道题冷静冷静.... 题目链接: http://acm.sgu.ru/problem.php?contest=0&problem=104 题意: 给定每朵花放在每个花盆的值, ...

  4. 动态规划(方案还原):SGU 104 Little shop of flowers

    花店橱窗布置问题 时间限制:3000 ms 问题描述(Problem)    假设你想以最美观的方式布置花店的橱窗,你有F束花,每束花的品种都不一样,同时,你至少有同样数量的花瓶,被按顺序摆成一行.花 ...

  5. 【SGU 104】Little shop of flowers

    题意 每个花按序号顺序放到窗口,不同窗口可有不同观赏值,所有花都要放上去,求最大观赏值和花的位置. 分析 dp,dp[i][j]表示前i朵花最后一朵在j位置的最大总观赏值. dp[i][j]=max( ...

  6. sgu 104 Little Shop of Flowers

    经典dp问题,花店橱窗布置,不再多说,上代码 #include <cstdio> #include <cstring> #include <iostream> #i ...

  7. Little shop of flowers - SGU 104 (DP)

    题目大意:把 M 朵花插入 N 个花瓶中,每个花插入不同的花瓶都有一个价值A[Mi][Nj],要使所有的花都插入花瓶,求出来最大的总价值(花瓶为空时价值是0). 分析:dp[i][j]表示前i朵花插入 ...

  8. SGU刷题之路开启

    VJ小组:SGU---48h/题 每道做出的题目写成题解,将传送门更新在这里. SGU:101 - 200 SGU - 107 水题 解题报告 SGU - 105 找规律水题 解题报告 SGU - 1 ...

  9. SGU 乱搞日志

    SGU 100 A+B :太神不会 SGU 101 Domino: 题目大意:有N张骨牌,两张骨牌有两面有0到6的数字,能相连当且仅当前后数字相同,问能否有将N张骨牌连接的方案?思路:裸的欧拉回路,注 ...

随机推荐

  1. SAP CRM 项目笔记(一) SOW(工作说明书)讨论

    前记 前两天在搜索资料时,看到一个网友在博客里面记录下了自己参于项目中的所有笔记.我觉得这个想法很不错,所以决定开笔记录下SAP CRM整个项目的实施和开发过程. 之前参加集团的SAP ERP(FI/ ...

  2. Linux下mysql自动备份

    #!/bin/bashDATE=`date +%Y-%m-%d-%H:%M -d -3minute`USER=rootPASSWORD=mayboBACKUP_DIR='/home/mysqlbak/ ...

  3. 贵州大学iPhone、Android(安卓)项目助跑计划!!!

    该计划旨在帮助同学们将各种脑中稀奇古怪的想法借助互联网/移动互联网相关的技术变成真实的项目. 谱写你的故事,从此刻开始! 我们帮助你提高编程(Java.C++.Objective-C.Android. ...

  4. 霍夫变换(hough transform)

    x-y轴坐标:y=kx+b k-b轴坐标:b=-xk+y θ-r轴坐标:

  5. 理解JavaScript中的事件路由冒泡过程及委托代理机制

    当我用纯CSS实现这个以后.我开始用JavaScript和样式类来完善功能. 然后,我有一些想法,我想使用Delegated Events (事件委托)但是我不想有任何依赖,插入任何库,包括jQuer ...

  6. P1233: [Usaco2009Open]干草堆tower

    这道题,首先想到的就两个,一是贪心,二是动规,然而 1<=N<=100000;1<=w_i<=10000 的数据范围实在不敢恭维,所以说第一想法是错的.仔细一想,首先,我们需要 ...

  7. 微软职位内部推荐-SDEII for Windows Phone Apps

    微软近期Open的职位: Job title: Software Design Engineer II Location: China, Beijing Division: Operations Sy ...

  8. 项目结队开发---NABC分析(成员)

    一.简介 项目名称:校园导航 特点:手机app,简便易用,适合对铁大地形不了解.路痴者使用. 二.NABC分析 N(need):对于新生报到,学生家长参观校园等想要了解校园路线者,本app软件将带给你 ...

  9. Careercup - Microsoft面试题 - 5700293077499904

    2014-05-12 00:02 题目链接 原题: For a given map (ie Bing map) given longitude/latitude/ how would you desi ...

  10. 面向对象版js分页

    基于前一个js分页,我将代码改成一个面向对象版的js分页,代码如下 http://peng666.github.io/blogs/pageobj <!DOCTYPE html> <h ...