【wqs二分 决策单调性】HHHOJ#261. Brew
第一道决策单调性……
题目描述
题目分析
挺好的……模板题?
寄存了先。
#include<bits/stdc++.h>
typedef long long ll;
const int maxn = ; struct node
{
int x,l,r;
node(int a=, int b=, int c=):x(a),l(b),r(c) {}
};
int n,k,a[maxn],g[maxn];
ll s[maxn],mid,pos,ans,f[maxn];
std::deque<node> q; int read()
{
char ch = getchar();
int num = ;
bool fl = ;
for (; !isdigit(ch); ch=getchar())
if (ch=='-') fl = ;
for (; isdigit(ch); ch=getchar())
num = (num<<)+(num<<)+ch-;
if (fl) num = -num;
return num;
}
void clears(std::deque<node> &q)
{
std::deque<node> emt;
std::swap(q, emt);
}
ll val(int l, int r)
{
if (l >= r) return ;
int mid = (l+r)>>;
return 1ll*(mid-l+)*a[mid]-(s[mid]-s[l-])+(s[r]-s[mid-])-1ll*(r-mid+)*a[mid];
}
ll calc(int l, int r)
{
return f[l]+val(l+, r);
}
bool check(ll w)
{
clears(q), q.push_front(node(, , n));
for (int i=; i<=n; i++)
{
// printf("w:%lld i:%d\n",w,i);
node tt = q.front();
g[i] = g[tt.x]+, f[i] = calc(tt.x, i)+w;
int upd = -;
while (q.size())
{
node tt = q.back();
if (calc(tt.x, tt.l) > calc(i, tt.l))
upd = tt.l, q.pop_back();
else{
int lbd = tt.l, rbd = tt.r, fnd = -;
while (lbd <= rbd)
{
int mid = (lbd+rbd)>>;
if (calc(tt.x, mid) > calc(i, mid))
fnd = mid, rbd = mid-;
else lbd = mid+;
}
if (fnd!=-) upd = fnd, q.back().r = fnd-;
break;
}
}
if (upd!=-) q.push_back(node(i, upd, n));
if (q.size()){
q.front().l++;
if (q.front().l > q.front().r) q.pop_front();
}
}
return g[n] <= k;
}
int main()
{
n = read(), k = read();
if (k >= n) puts("");
else{
for (int i=; i<=n; i++) a[i] = read();
std::sort(a+, a+n+);
for (int i=; i<=n; i++) s[i] = s[i-]+a[i];
ll l = , r = 1e12;
for (; l<=r; )
{
mid = (l+r)>>;
if (check(mid))
ans = f[n]-mid*k, r = mid-;
else l = mid+;
}
printf("%lld\n",ans);
}
return ;
}
END
【wqs二分 决策单调性】HHHOJ#261. Brew的更多相关文章
- 【wqs二分 || 决策单调性】cf321E. Ciel and Gondolas
把状态看成层,每层决策单调性处理 题目描述 题目大意 众所周知,贞鱼是一种高智商水生动物.不过他们到了陆地上智商会减半.这不?他们遇到了大麻烦!n只贞鱼到陆地上乘车,现在有k辆汽车可以租用.由于贞鱼们 ...
- BZOJ5311 贞鱼(动态规划+wqs二分+决策单调性)
大胆猜想答案随k变化是凸函数,且有决策单调性即可.去粘了份fread快读板子才过. #include<iostream> #include<cstdio> #include&l ...
- P3515-[POI2011]Lightning Conductor【整体二分,决策单调性】
正题 题目链接:https://www.luogu.com.cn/problem/P3507 题目大意 \(n\)个数字的一个序列\(a\),对于每个位置\(i\)求一个\(p_i\)使得对于任意\( ...
- CF321E Ciel and Gondolas Wqs二分 四边形不等式优化dp 决策单调性
LINK:CF321E Ciel and Gondolas 很少遇到这么有意思的题目了.虽然很套路.. 容易想到dp \(f_{i,j}\)表示前i段分了j段的最小值 转移需要维护一个\(cost(i ...
- 决策单调性&wqs二分
其实是一个还算 trivial 的知识点吧--早在 2019 年我就接触过了,然鹅当时由于没认真学并没有把自己学懂,故今复学之( 1. 决策单调性 引入:在求解 DP 问题的过程中我们常常遇到这样的问 ...
- DP的各种优化(动态规划,决策单调性,斜率优化,带权二分,单调栈,单调队列)
前缀和优化 当DP过程中需要反复从一个求和式转移的话,可以先把它预处理一下.运算一般都要满足可减性. 比较naive就不展开了. 题目 [Todo]洛谷P2513 [HAOI2009]逆序对数列 [D ...
- Gym - 101981B Tournament (WQS二分+单调性优化dp)
题意:x轴上有n个人,让你放置m个集合点,使得每个人往离他最近的集合点走,所有人走的距离和最短. 把距离视为花费,设$dp[i][k]$表示前i个人分成k段的最小花费,则有递推式$dp[i][k]=m ...
- bzoj 2216 [Poi2011]Lightning Conductor——单调队列+二分处理决策单调性
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2216 那个关于位置的代价是带根号的,所以随着距离的增加而增长变慢:所以靠后的位置一旦比靠前的 ...
- bzoj 4709 [Jsoi2011]柠檬——单调栈二分处理决策单调性
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=4709 题解:https://blog.csdn.net/neither_nor/articl ...
随机推荐
- SVN Trunk Tag Branch
http://blog.csdn.net/vbirdbest/article/details/51122637
- 导出war包
1. 使用Eclipse 导出 右键web工程 -> export -> war file 将导出的war文件放到tomcat安装目录的webapps下,然后启动tomcat,就会发现在该 ...
- redis最佳实践
总结: String类型的value(string/list/set/hash)使用StringRedisTemplate 其他类型的value(string/list/set/hash/object ...
- MiniProfiler NET Core
MiniProfiler 来分析 ASP.NET Core 应用 它会把结果直接放在页面的左下角,随时可以点击查看:这样的话就可以感知出你的程序运行的怎么样:同时这也意味着,在你开发新功能的同时,可以 ...
- Net Core 2.0生态1
Net Core 2.0生态 阅读目录 前言:答读者问(time by:2017.8.19) 项目升级到ASP.NET Core 2.0 新增功能:Razor Pages介绍 模板更新 Entity ...
- Ubuntu下安装nginx及使用
首先介绍以下nginx.下图来自百科介绍:详细介绍地址:https://baike.baidu.com/item/nginx/3817705?fr=aladdin 在我们平时的开发娱乐中,也许并不会涉 ...
- MVC下载文件方式 包括网络地址文件
MVC下载文件方式 方式一: public FileStreamResult DownFile(string filePath, string fileName){ string absol ...
- DOCKER启动失败Job for docker.service failed because the control process exited with error code. See "syste mctl status docker.service" and "journalctl -xe" for details.
[root@localhost ~]# systemctl start docker Job for docker.service failed because the control process ...
- linux touch和vi建立的文件是什么文件类型的
都是acsii类型的文本文档,但是也可以建立其他格式的,比如vi newFile.c(c是c语言动态链接库格式)
- ABAP扫雷游戏
. INCLUDE <icon>. CONSTANTS: " >> board cell values blank_hidden ', blank_marked TY ...