[POI2015]Myjnie

Time Limit: 40 Sec  Memory Limit: 256 MBSec  Special Judge
Submit: 368  Solved: 185
[Submit][Status][Discuss]

Description

有n家洗车店从左往右排成一排,每家店都有一个正整数价格p[i]。
有m个人要来消费,第i个人会驶过第a[i]个开始一直到第b[i]个洗车店,且会选择这些店中最便宜的一个进行一次消费。但是如果这个最便宜的价格大于c[i],那么这个人就不洗车了。
请给每家店指定一个价格,使得所有人花的钱的总和最大。

Input

第一行包含两个正整数n,m(1<=n<=50,1<=m<=4000)。
接下来m行,每行包含三个正整数a[i],b[i],c[i](1<=a[i]<=b[i]<=n,1<=c[i]<=500000)

Output

第一行输出一个正整数,即消费总额的最大值。
第二行输出n个正整数,依次表示每家洗车店的价格p[i],要求1<=p[i]<=500000。
若有多组最优解,输出任意一组。

Sample Input

7 5
1 4 7
3 7 13
5 6 20
6 7 1
1 2 5

Sample Output

43
5 5 13 13 20 20 13

HINT

 

Source

 
出题人https://www.cnblogs.com/clrs97/p/5271139.html
ysy 

 #include<cmath>
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm> #define N 55
#define M 4007
#define maxc 500007
using namespace std; int n,m;
int f[N][N][M],g[N][N][M],h[N][M];
int p[N][N][M],val[N];
int C[M],lsh[maxc],LSH[M],K; inline void up(int &x,const int &y)
{
if(x<y)x=y;
}
struct node
{
int a,b,c;
}a[M];
inline bool cmp(node x,node y)
{
return x.b==y.b?x.a<y.a:x.b<y.b;
}
void pre()
{
sort(a+,a+m+,cmp); sort(C+,C+m+); K=;
for(int i=;i<=m;i++)
if(C[i]!=C[i-]) LSH[++K]=C[i],lsh[C[i]]=K;
for(int i=;i<=m;i++) a[i].c=lsh[a[i].c];
}
void search(int l,int r,int k)
{
if(l>r) return ;
if(!g[l][r][k])
{
for(int i=l;i<=r;i++) val[i]=LSH[k];
return ;
}
for(int i=k;i<=K;i++) if(g[l][r][k]==f[l][r][i])
{
const int pos=p[l][r][i];
val[pos]=LSH[i];
search(l,pos-,i); search(pos+,r,i);
break;
}
}
int main()
{
scanf("%d%d",&n,&m);
for(int i=;i<=m;i++)
scanf("%d%d%d",&a[i].a,&a[i].b,&a[i].c),C[i]=a[i].c;
pre();
for(int l=n;l>=;l--)
for(int r=l;r<=n;r++)
{
for(int i=l;i<=r;i++)
for(int j=;j<=K;j++) h[i][j]=;
for(int i=;i<=m&&a[i].b<=r;i++)
{
if(a[i].a<l) continue;
for(int j=a[i].a;j<=a[i].b;j++)
h[j][a[i].c]++;
}
for(int i=l;i<=r;i++)
for(int j=K-;j>=;j--)
h[i][j]+=h[i][j+];
for(int i=l;i<=r;i++)
for(int j=K;j>=;j--)
{
int tmp=g[l][i-][j]+g[i+][r][j]+h[i][j]*LSH[j];
if(f[l][r][j]<tmp) f[l][r][j]=tmp,p[l][r][j]=i;
g[l][r][j]=g[l][r][j+]>f[l][r][j]?g[l][r][j+]:f[l][r][j];
}
}
printf("%d\n",g[][n][]);
search(,n,);
for(int i=;i<=n;i++)
printf("%d ",val[i]);
}

bzoj4380[POI2015]Myjnie dp的更多相关文章

  1. 2018.10.22 bzoj4380: [POI2015]Myjnie(区间dp)

    传送门 区间dp好题. f[i][j][k]f[i][j][k]f[i][j][k]表示区间[i,j][i,j][i,j]最小值为kkk时的最大贡献. 然后可以枚举端点转移. 当时口胡到这儿就不会了. ...

  2. BZOJ4380 : [POI2015]Myjnie

    将$c$离散化,设: $f[i][j][k]$为区间$[i,j]$最小值为$k$的最大收益. $g[i][j][k]$为$\max(g[i][j][k..m])$. $h[i][j]$为对于当前DP区 ...

  3. BZOJ 4380 [POI2015]Myjnie | DP

    链接 BZOJ 4380 题面 有n家洗车店从左往右排成一排,每家店都有一个正整数价格p[i]. 有m个人要来消费,第i个人会驶过第a[i]个开始一直到第b[i]个洗车店,且会选择这些店中最便宜的一个 ...

  4. 【BZOJ4380】[POI2015]Myjnie 区间DP

    [BZOJ4380][POI2015]Myjnie Description 有n家洗车店从左往右排成一排,每家店都有一个正整数价格p[i].有m个人要来消费,第i个人会驶过第a[i]个开始一直到第b[ ...

  5. 【BZOJ-4380】Myjnie 区间DP

    4380: [POI2015]Myjnie Time Limit: 40 Sec  Memory Limit: 256 MBSec  Special JudgeSubmit: 162  Solved: ...

  6. 【BZOJ 4380】4380: [POI2015]Myjnie (区间DP)

    4380: [POI2015]Myjnie Description 有n家洗车店从左往右排成一排,每家店都有一个正整数价格p[i].有m个人要来消费,第i个人会驶过第a[i]个开始一直到第b[i]个洗 ...

  7. [POI2015]Myjnie

    [POI2015]Myjnie 题目大意: 有\(n(n\le50)\)家洗车店从左往右排成一排,每家店都有一个正整数价格\(d_i\). 有\(m(m\le4000)\)个人要来消费,第\(i\)个 ...

  8. bzoj [POI2015]Myjnie

    [POI2015]Myjnie Time Limit: 40 Sec Memory Limit: 256 MBSec Special Judge Description 有n家洗车店从左往右排成一排, ...

  9. 【BZOJ】4380: [POI2015]Myjnie

    题解 区间dp,先离散化所有价值 \(f[i][j][k]\)表示\([i,j]\)区间里最小值为\(k\)的价值最大是多少 只考虑\(i <= a <= b <= j\)的区间,枚 ...

随机推荐

  1. 查询Linux下已安装软件的版本

    #rpm -qa | grep mysql

  2. C# StreamWriter对像

    用FileWriter来随机读取文件是个好主意,而用StreamWriter可以直接把字符串写入文件中,它处理重要的转换和向FileStream对像写入工作.创建StreamWriter有很多方法: ...

  3. 微服务SpringCloud+Docker入门到高级实战(教程详情)

    第一章 课程介绍和学习路线 1.微服务架构SpringCloud课程介绍 简介:课程介绍和课程大纲讲解,讲课风格和重点内容理解技巧 2.技术选型和学后水平 简介:课程所需基础和技术选型讲解,学完课程可 ...

  4. Oracle Analyze

    Analyze使用场景 之前很多次都说到,对表的索引等信息进行了增删改之后,需要对表进行analyze更新统计信息,才能使数据库做出最好的执行计划,没有注意到,即使是一张很小的空表,如果进行了字段的增 ...

  5. Oracle数据库学习(三)

    6.关于null 数据库中null是一个未知数,没有任何值:进行运算时使用nvl,但是结果仍为空:在聚集函数中只有全部记录为空才会返回null. 7.insert插入 (1)单行记录插入 insert ...

  6. Win 无法安装 python 包

    Win 上使用 pip install 安装出错 使用 wheel 安装 pip install wheel 下载 编译包 http://www.lfd.uci.edu/~gohlke/pythonl ...

  7. Mybatis 插入一条或批量插入 返回带有自增长主键记录

    首先讲一下,  插入一条记录返回主键的 Mybatis 版本要求低点,而批量插入返回带主键的 需要升级到3.3.1版本,3.3.0之前的都不行, <dependency> <grou ...

  8. nginx修改nginx.conf配置可以https访问

    修改nginx.conf,参照如下更改配置server { listen 443; server_name abc.com; // 访问域名 ssl on; root /var/www/bjubi.c ...

  9. 从Mixin到hooks,谈谈对React16.7.0-alpha中即将引入的hooks的理解

      为了实现分离业务逻辑代码,实现组件内部相关业务逻辑的复用,在React的迭代中针对类组件中的代码复用依次发布了Mixin.HOC.Render props等几个方案.此外,针对函数组件,在Reac ...

  10. 读书笔记-JavaScript面向对象编程(二)

    第5章 原型 5.1 原型属性(所有函数拥有一个prototype属性,默认为空对象) 5.1.1 利用原型添加方法和属性 function Gadget(name,color){ this.name ...