[題解]luogu_P1854 花店櫥窗佈置
來源:題解
一開始看不懂題目,一萬年了終於看懂
f [ i ] [ j ] 表示第i朵花放在第j個花瓶中最大美學值,(花是必須用完嗎?)
顯然放i-1朵花至少要放到前i-1個瓶子里,最多放到前j-1個瓶子里(因為這個要放到第j個瓶子)
所以就遍歷一下 (i-1,j-1)這個區間轉移一下
f [ i ] [ j ]=max( f [ i ] [ j ] , f [ i-1 ] [ k ]+w[ i ] [ j ] ) ( i-1<=k<=j-1 )
輸出方案只要選擇 g [ i ] [ j ]記錄f [ i ] [ j ]放到了哪個瓶子,然後遞歸輸出,應該是比較常用的,
千萬注意最後可行的答案在 f [ n ] [ n ] ~ f [ n ] [ m ]都有可能,要找一個最大的(類似于->過河)
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int n,m,w[][];
int f[][],g[][];
inline void print(int i,int k)
{
if(!i)return ;
print(i-,g[i][k]);
printf("%d ",k);
}
int main()
{
scanf("%d%d",&n,&m);
for(int i=;i<=n;i++)
for(int j=;j<=m;j++)
scanf("%d",&w[i][j]); for(int i=;i<=m;i++)f[][i]=w[][i]; for(int i=;i<=n;i++)//第i朵花
for(int j=i;j<=m;j++)//第j個花瓶
for(int k=i-;k<=j-;k++){//從前面k狀態轉移
if(f[i][j]<f[i-][k]+w[i][j]){
f[i][j]=f[i-][k]+w[i][j];
g[i][j]=k;
}
}
int ans=,ansi;
for(int i=n;i<=m;i++){
if(ans<f[n][i])
ans=f[n][i],ansi=i;
}
printf("%d\n",ans);
print(n,ansi);
}
題目明明說的輸出 f 行每行兩個數啊,為什麼這樣輸出就可以???
PS.自然可以壓掉 i 維
[題解]luogu_P1854 花店櫥窗佈置的更多相关文章
- [題解](水/數學)luogu_P1147連續自然數和
尺取法a掉 然而數學解法為 等差數列求和公式: sum(L,R)=(L+R)(R-L+1)/2=M 即(L+R)(R-L+1)=2M 可以把2M分解成两个数之积,假设分成了两个数K1,K2,且K1&l ...
- [題解](單調隊列dp)【2016noip福建夏令營】探險
P1917 -- 探险 时间限制:1000MS 内存限制:131072KB 题目描述(explore.cpp) π+e去遗迹探险,遗迹里有 N 个宝箱,有的装满了珠宝,有的装着废品. π+e ...
- [題解](最小生成樹/LCA)luogu_P1967貨車運輸
一道好題不出所料又抄的題解 1.首先對於這張圖肯定要考慮走哪些邊不走哪些邊,發現我們想要的肯定那些邊權最大的邊,所以想到最大生成樹 這樣能保證選到盡量大的邊 2.跑完最大生成樹后每兩點之間就有唯一路徑 ...
- [題解](最小生成樹)luogu_P1265
首先考虑最小生成树的模型,唯一不同的是第二种情形. 即“三个或三个以上的城市申请修建的公路成环” 考虑该情形,因为修路的申请是申请离它最近的城市,所以上述条件实质上为 “存在三个或三个以上的城市,他们 ...
- [題解](二分答案/單調隊列)luogu_P1419尋找段落
果然又抄的題解... 顯然答案具有單調性,而對于平均數計算的式子我們移一下項, 若s[l..r]>mid*(r-l+1)无解, 於是我們把每個數都減去一個mid,看和的正負即可,如果為正就可能有 ...
- [題解]luogu_P1120小木棍(搜索)
好久以前抄的題解,現在重新抄題解做一下 1.對所有木棍從大到小排序,後用小的比較靈活 2.限制加入的木棍單調遞減,因為先/后用長/短木棍等價,反正就是那兩根 3.預處理出重複木棍的位置,防止重複搜索相 ...
- [題解](最短路)luogu_P1119災後重建
一道好題,然而看題解做的...... floyed的實質:只經過前k個點i到j的最短路,原狀態轉移方程為 f [ k ] [ i ] [ j ]=min( f[ k-1 ] [ i ] [ j ],f ...
- [題解]luogu_P1052 過河
來源:題解 不發題面 因為 l 範圍太大,而石子數卻很少,步數也僅僅在1~10之間, 也就是說兩個石子之間很有可能間隔很大的距離,不管怎麼跳都能跳過去,那麼中間那些怎麼樣都能跳過去的區間和沒有等價, ...
- [題解]luogu_P3205/BZOJ_1996 合唱隊
前言:基本上發題解的都是抄的題解所以 來源:題解 题目描述 为了在即将到来的晚会上有更好的演出效果,作为AAA合唱队负责人的小A需要将合唱队的人根据他们的身高排出一个队形.假定合唱队一共N个人,第i个 ...
随机推荐
- Zookeeper实现负载均衡原理
先玩个正常的,好玩的socket编程: 服务端: 首先公共的这个Handler: package com.toov5.zkDubbo; import java.io.BufferedReader; i ...
- 理解数学公式与numpy矩阵运算
1.矩阵的初始化 (1)创建一个 3*5的全0矩阵和全1矩阵 import numpy as np myzero = np.zeros([3,5]) print myzero myones = np. ...
- windows 下python搭建环境
一.python安装 1,首先访问https://www.python.org/downloads/windows/去下载python版本. 2. 选择3.5版本,installer文件类型(因为3. ...
- nginx开发_ngx_palloc源码解析
功能简介 ngx_pool_t是nginx开发中最经常使用到的内存容器.对动态内存的封装,由框架进行创建与释放,模块开发过程中仅需要进行内存申请,不需要关注何时释放.常见的pool对象有: 1. ng ...
- bzoj3676
后缀自动机+manacher 听说本质不同的回文串只有O(n)个 那么用manacher求出所有回文串,然后在sam上查找出现了几次就行了 sam的性质又忘了... manacher也忘了... #i ...
- JQ实现图片上传预览功能
<input type="file" name="img" id="test1"> <img src="&quo ...
- python -m json.tool 中文乱码 Format JSON with python
现在以 json 为数据传输格式的 RESTful 接口非常流行.为调试这样的接口,一个常用的办法是使用 curl 命令: curl http://somehost.com/some-restful- ...
- IIS 部署 SSAS
转自:http://blog.csdn.net/jinjazz/article/details/4058368 1.首先到分析服务器的SQLServer安装目录中找到如下目录和文件 2.然后为IIS建 ...
- Java int与String互相转化大全
int -> String //int 转化才 string int num = 123456; //方法一 会产生两个String对象 String s1 = num+"" ...
- 前端学习之——js解析json数组
** 前端学习之——js解析json数组** 解析json数组即对JSONArray的遍历 一.对于标准的json数组如: var result=[{"flag":1," ...