分析

设\(dp[i][j][x]\)表示当前区间为\([i,j]\),最小值为\(x\)的最大总分,

状态转移方程可以用后缀最大值优化到\(O(n^3m)\),主要难点是输出方案

后缀最大值需要记录是在哪个位置取得最大值


代码

#include <cstdio>
#include <cctype>
#include <algorithm>
#define rr register
using namespace std;
const int N = 4011, M = 61;
int n, m, tot, c[N], a[N], b[N], L[N], R[N];
int dp[M][M][N], f[M][M][N], p[M][M][N], pf[M][M][N];
inline signed iut() {
rr int ans = 0;
rr char c = getchar();
while (!isdigit(c)) c = getchar();
while (isdigit(c)) ans = (ans << 3) + (ans << 1) + (c ^ 48), c = getchar();
return ans;
}
inline void print(int ans) {
if (ans > 9)
print(ans / 10);
putchar(ans % 10 + 48);
}
inline void calc(int l, int mid, int r) {
for (rr int i = 1; i <= tot; ++i) c[i] = 0;
for (rr int i = 1; i <= m; ++i)
if (l <= L[i] && L[i] <= mid && mid <= R[i] && R[i] <= r)
++c[a[i]];
}
inline void dfs(int l, int r, int now) {
rr int mid = p[l][r][now];
if (l < mid)
dfs(l, mid - 1, pf[l][mid - 1][now]);
printf("%d ", b[now]);
if (mid < r)
dfs(mid + 1, r, pf[mid + 1][r][now]);
}
signed main() {
freopen("baddream.in", "r", stdin);
freopen("baddream.out", "w", stdout);
n = iut(), m = iut();
for (rr int i = 1; i <= m; ++i) L[i] = iut(), R[i] = iut(), b[i] = a[i] = iut();
sort(b + 1, b + 1 + m), tot = unique(b + 1, b + 1 + m) - b - 1;
for (rr int i = 1; i <= m; ++i) a[i] = lower_bound(b + 1, b + 1 + tot, a[i]) - b;
for (rr int i = n; i >= 1; --i)
for (rr int j = i; j <= n; ++j) {
for (rr int k = i; k <= j; ++k) {
calc(i, k, j);
for (rr int o = tot, sum = 0; o; --o) {
sum += c[o];
rr int now = dp[i][k - 1][o] + dp[k + 1][j][o] + sum * b[o];
if (now >= f[i][j][o])
f[i][j][o] = now, p[i][j][o] = k;
}
}
for (rr int o = tot; o; --o)
if (f[i][j][o] >= dp[i][j][o + 1])
dp[i][j][o] = f[i][j][o], pf[i][j][o] = o;
else
dp[i][j][o] = dp[i][j][o + 1], pf[i][j][o] = pf[i][j][o + 1];
}
printf("%d\n", dp[1][n][1]);
dfs(1, n, pf[1][n][1]);
return 0;
}

#区间dp,离散#D 弱者对决的更多相关文章

  1. [BZOJ 1032][JSOI 2007]祖玛 题解(区间DP)

    [BZOJ 1032][JSOI 2007]祖玛 Description https://www.lydsy.com/JudgeOnline/problem.php?id=1032 Solution ...

  2. [JSOI2007] 祖玛 (区间DP)

    题目描述 这是一个流行在Jsoi的游戏,名称为祖玛. 精致细腻的背景,外加神秘的印加音乐衬托,彷佛置身在古老的国度里面,进行一个神秘的游戏——这就是著名的祖玛游戏.祖玛游戏的主角是一只石青蛙,石青蛙会 ...

  3. 区间dp专题练习

    区间dp专题练习 题意 1.Equal Sum Partitions ? 这嘛东西,\(n^2\)自己写去 \[\ \] \[\ \] 2.You Are the One 感觉自己智力被吊打 \(dp ...

  4. [USACO2005 nov] Grazing on the Run【区间Dp】

    Online Judge:bzoj1742,bzoj1694 Label:区间Dp 题目描述 John养了一只叫Joseph的奶牛.一次她去放牛,来到一个非常长的一片地,上面有N块地方长了茂盛的草.我 ...

  5. 浙工大新生赛莫队处理+区间DP+KMP+分析题

    题目描述 读入一个长度为n的整数数列a1,a2,…,an,以及一个整数K. q组询问. 每组询问包含一个二元组(l, r), 其中1≤l≤r≤ n, 求所有满足以下条件的二元组(l2, r2)的数目: ...

  6. 【BZOJ-4380】Myjnie 区间DP

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

  7. 【POJ-1390】Blocks 区间DP

    Blocks Time Limit: 5000MS   Memory Limit: 65536K Total Submissions: 5252   Accepted: 2165 Descriptio ...

  8. 区间DP LightOJ 1422 Halloween Costumes

    http://lightoj.com/volume_showproblem.php?problem=1422 做的第一道区间DP的题目,试水. 参考解题报告: http://www.cnblogs.c ...

  9. BZOJ1055: [HAOI2008]玩具取名[区间DP]

    1055: [HAOI2008]玩具取名 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 1588  Solved: 925[Submit][Statu ...

  10. poj2955 Brackets (区间dp)

    题目链接:http://poj.org/problem?id=2955 题意:给定字符串 求括号匹配最多时的子串长度. 区间dp,状态转移方程: dp[i][j]=max ( dp[i][j] , 2 ...

随机推荐

  1. ASP.NET Core 微信支付(一)【统一下单 APIV3】

    官方参考资料 签名:https://pay.weixin.qq.com/wiki/doc/apiv3/wechatpay/wechatpay4_0.shtml 签名生成:https://wechatp ...

  2. .NET 链接数据库:证书链是由不受信任的颁发机构颁发的

    错误信息 证书链是由不受信任的颁发机构颁发的 错误环境 .NET web.config链接数据库(发布到服务)时报错 解决方法 下面配置标红部分在你的代码配置中增加或者修改 <add name= ...

  3. C#多线程(11):线程等待

    目录 前言 volatile 关键字 三种常用等待 再说自旋和阻塞 SpinWait 结构 属性和方法 自旋示例 新的实现 SpinLock 结构 属性和方法 示例 等待性能对比 前面我们学习了很多用 ...

  4. 主流开源分布式图计算框架 Benchmark

    本文由美团 NLP 团队高辰.赵登昌撰写,首发于 Nebula Graph Community 公众号 前言 随着近年来数据的爆炸式增长,如何高效地分析处理数据,在业界一直备受关注.现实世界中的数据往 ...

  5. 没想到,JDBC 驱动会偷偷修改 sql_mode 的会话值

    最近碰到一个 case,值得分享一下. 现象就是一个 update 操作,在 mysql 客户端中执行提示 warning,但在 java 程序中执行却又报错. 问题重现 mysql> crea ...

  6. Python-Json异常:Object of type Decimal is not JSON serializable

    源起: 使用python分离出一串文本,因为是看起来像整数,结果json转换时发生异常:TypeError: Object of type Decimal is not JSON serializab ...

  7. 11、mysql的SQL执行顺序

    编写顺序 SELECT DISTINCT <select list> FROM <left_table> <join_type> JOIN <right_ta ...

  8. Linux系统查看主机性能

    查看主机的CPU性能: cat  /proc/cpuinfo cat /proc/meminfo |grep MemTotal    内存信息 查看物理cpu个数:cat /proc/cpuinfo ...

  9. 2024-03-09:用go语言,我们把无限数量的栈排成一行,按从左到右的次序从 0 开始编号, 每个栈的的最大容量 capacity 都相同。实现一个叫「餐盘」的类 DinnerPlates, Di

    2024-03-09:用go语言,我们把无限数量的栈排成一行,按从左到右的次序从 0 开始编号, 每个栈的的最大容量 capacity 都相同.实现一个叫「餐盘」的类 DinnerPlates, Di ...

  10. Nginx-负载均衡系列

    综合架构-负载均衡系列 目录 综合架构-负载均衡系列 一个新的开始 一 代理模块 proxy 2.1 概述 2.2 正向代理用户 2.3 反向代理 2.4 反向代理环境准备 2.5 反正代理指令 二 ...