转化题意

这题目乍一看十分玄学,完全不可做。

但实际上,假设我们在原序列从小到大排序之后,选择开的宝箱编号是\(p_{1\sim Z}\),则最终答案就是:

\[\sum_{i=1}^Za_{p_i}(p_{i+1}-p_i)
\]

其中\(p_{Z+1}=n+1\)。

有了这个式子,就可做了许多。

暴力\(DP\)

我们设\(f_{i,j}\)为在前\(i\)个宝箱中选择了\(j\)个宝箱的最小代价。

枚举一个转移点\(k\)表示上个选择的宝箱,就可以得到:

\[f_{i,j}=f_{k,j-1}+(a_k-a_i)(n-i+1)
\]

这虽然是\(O(n^3)\)的,但\(n\)才\(1000\),加上其常数很小,实际实现中又可以将枚举时除以个\(8\),所以能跑过。

斜率优化

比赛时调了一个多小时没调出来。。。加上暴力\(DP\)能过,就没再想了。。。

这里先占个坑吧。

代码(暴力\(DP\))

#include<bits/stdc++.h>
#define Tp template<typename Ty>
#define Ts template<typename Ty,typename... Ar>
#define Reg register
#define RI Reg int
#define Con const
#define CI Con int&
#define I inline
#define W while
#define N 1000
#define INF 2e9
#define LL long long
#define min(x,y) ((x)<(y)?(x):(y))
#define Gmin(x,y) (x>(y)&&(x=(y)))
using namespace std;
int n,m,a[N+5];
class BruteForceSolver
{
private:
int f[N+5][N+5];
public:
I void Solve()
{
RI i,j,k;for(i=0;i<=n;++i) for(j=0;j<=m;++j) f[i][j]=INF;//初始化
for(f[0][0]=0,j=1;j<=m;++j) for(i=j;i<=n;++i)//枚举i,j
for(k=j-1;k^i;++k) Gmin(f[i][j],f[k][j-1]+1LL*(a[i]-a[k])*(n-i+1));//枚举转移点k进行转移
RI ans=INF;for(i=0;i<=n;++i) Gmin(ans,f[i][m]);printf("%d",ans);//求答案
}
}B;
int main()
{
freopen("chest.in","r",stdin),freopen("chest.out","w",stdout);
RI i;for(scanf("%d%d",&n,&m),i=1;i<=n;++i) scanf("%d",a+i);sort(a+1,a+n+1);//注意排序
return B.Solve(),0;
}

【2019.8.8 慈溪模拟赛 T1】开箱(chest)(暴力DP水过)的更多相关文章

  1. 【2019.8.15 慈溪模拟赛 T1】插头(plugin)(二分+贪心)

    二分 首先,可以发现,最后的答案显然满足可二分性,因此我们可以二分答案. 然后,我们只要贪心,就可以验证了. 贪心 不难发现,肯定会优先选择能提供更多插座的排插,且在确定充电器个数的情况下,肯定选择能 ...

  2. 【2019.8.9 慈溪模拟赛 T1】数论(a)(打表找规律)

    莫比乌斯反演 血亏! 比赛时看到这题先写了个莫比乌斯反演,然后手造了几组数据和暴力对拍的时候发现,居然答案就是\(nm\)... 吐槽数据范围太小... 下面给上出题人对此题的解释: 原式的物理意义, ...

  3. 【2019.8.12 慈溪模拟赛 T1】钥匙(key)(暴力DP)

    暴力\(DP\) 这题做法很多,有\(O(n^2)\)的,有\(O(n^2logn)\)的,还有徐教练的\(O(nlogn)\)的,甚至还有\(bzt\)的二分+线段树优化建图的费用流. 我懒了点,反 ...

  4. 【2019.8.14 慈溪模拟赛 T1】我不是!我没有!别瞎说啊!(notme)(BFS+DP)

    \(IDA^*\) 说实话,这道题我一开始没想出正解,于是写了一个\(IDA^*\)... 但神奇的是,这个\(IDA^*\)居然连字符串长度分别为\(2500,4000\)的数据都跑得飞快,不过数据 ...

  5. 【2019.7.20 NOIP模拟赛 T1】A(A)(暴搜)

    打表+暴搜 这道题目,显然是需要打表的,不过打表的方式可以有很多. 我是打了两个表,分别表示每个数字所需的火柴棒根数以及从一个数字到另一个数字,除了需要去除或加入的火柴棒外,至少需要几根火柴棒. 然后 ...

  6. 【2019.7.25 NOIP模拟赛 T1】变换(change)(思维+大分类讨论)

    几个性质 我们通过推式子可以发现: \[B⇒AC⇒AAB⇒AAAC⇒C\] \[C⇒AB⇒AAC⇒AAAB⇒B\] 也就是说: 性质一: \(B,C\)可以相互转换. 则我们再次推式子可以发现: \[ ...

  7. 【2019.10.7 CCF-CSP-2019模拟赛 T1】树上查询(tree)(思维)

    思维 这道题应该算是一道思维题吧. 首先你要想到,既然这是一棵无根树,就要明智地选择根--以第一个黑点为根(不要像我一样习惯性以\(1\)号点为根,结果直到心态爆炸都没做出来). 想到这一点,这题就很 ...

  8. 【2019.8.15 慈溪模拟赛 T2】组合数(binom)(卢卡斯定理+高维前缀和)

    卢卡斯定理 题目中说到\(p\)是质数. 而此时要求组合数向质数取模的结果,就可以用卢卡斯定理: \[C_x^y=C_{x\ div\ p}^{y\ div\ p}\cdot C_{x\ mod\ p ...

  9. 【2019.8.6 慈溪模拟赛 T2】树上路径(tree)(Trie)

    从暴力考虑转化题意 考虑最暴力的做法,我们枚举路径的两端,然后采用类似求树上路径长度的做法,计算两点到根的贡献,然后除去\(LCA\)到根的贡献两次. 即,设\(v_i\)为\(i\)到根路径上的边权 ...

随机推荐

  1. CF1248F Catowice City

    题目链接 problem 有\(n\)个人,每个人家有一只猫.每个人都认识一些猫(其中肯定包括自己家的猫).选出\(j\)个人和\(k\)只猫\((j,k\ge 1)\).使得\(j+k=n\)且选出 ...

  2. 【ECNU71】一个游戏(水题)

    点此看题面 大致题意: \(n\)种元素,有若干组将\(x\)元素转化为\(y\)元素的操作.问对于所有可能的元素拥有状况,改变转化操作的顺序,是否会影响转化后最终的结果. 水题 虽说是这么水的题,但 ...

  3. 关闭Chrome浏览器的广告

    生活没有绝对的对与错:代码就不一样了,错了就编译不过,也正是因为这样,编程的人思维有时也会陷入一种狭隘中,这就是把工作和生活没有分开.Win10 右下角的广告就像程序调试中的"警告" ...

  4. Codeforces Round #599 (Div. 2) B1. Character Swap (Easy Version) 水题

    B1. Character Swap (Easy Version) This problem is different from the hard version. In this version U ...

  5. 【文本处理命令】之sed命令详解

    sed行处理命令详解 一.简介 sed命令是一种在线编辑器.一个面向字符流的非交互式编辑器,也就是说sed不允许用户与它进行交互操作.sed是按行来处理文本内容的,它一次处理一行内容.处理时,把当前处 ...

  6. javaAPI操作Hbase

    package chapter04; import org.apache.commons.lang.StringUtils; import org.apache.hadoop.conf.Configu ...

  7. MySQL-8.0.18 引入了破坏性变更

    MySQL-8.0.18 引入了破坏性变更 变更日志里面有这样一项 When the server is run with --initialize, there is no reason to lo ...

  8. .Net ADO拼接带参数的SQL语句

    首先是在DAL数据访问层中的代码://数据更新的方法public static int shuxing_update(s_passnature model) { string sql = " ...

  9. 调试接口你还在用postman吗

    作者 | 陈凯玲 来源 | my.oschina.net/keking/blog/3104972 接口调试是每个软件开发从业者必不可少的一项技能,一个项目的的完成,可能接口测试调试的时间比真正开发写代 ...

  10. 用ASP.NET Core构建可检测的高可用服务--学习笔记

    摘要 随着现代化微服务架构的发展,系统故障的定位与快速恢复面临着诸多挑战,构建可检测的服务,帮助线上保障团队时刻掌控应用的运行状况越来越重要.本次分享会讲解如何让 ASP .NET Core 应用与现 ...