【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 ...
随机推荐
- ThinkSNS+ 是如何计算字符显示长度的
什么是ThinkSNS+ ThinkSNS(简称TS),一款全平台综合性社交系统,目前最新版本为ThinkSNS+.ThinkSNS V4 ThinkSNS[简]. 今天我们来聊一下可能很多人都会头疼 ...
- python HTTP 状态码
404 Not Found 在HTTP请求的路径无法匹配任何RequestHandler类相对应的模式时返回404(Not Found)响应码. 400 Bad Request 如果你调用了一个没有默 ...
- centos虚拟机安装指定版本docker
环境: centos 7.6+ docker-ce 17.03.2 安装依赖包 yum -y install yum-utils device-mapper-persistent-data lvm2 ...
- C. An impassioned circulation of affection DP
http://codeforces.com/contest/814/problem/C 12ooyomioomioo21 o2 o 这题我是用dp解的,不过好像很慢,比赛的时候算了下不会mle,就没滚 ...
- (转)linux traceroute命令参数及用法详解--linux跟踪路由命令
linux traceroute命令参数及用法详解--linux跟踪路由命令 原文:http://blog.csdn.net/liyuan_669/article/details/25362505 通 ...
- 漫谈Code Review的错误实践
从刚开始工作时到现在,已经写了7年的代码,大部分代码都被人review过,自己也review了很多人的代码.在上一家公司的时候,我负责的一轮面试是专门进行Code Review的练习和经验谈. 通过在 ...
- 执行ng build --prod --aot命令报错
D:\git\**\src\main\iui>ng build --prod --aotHash: 257ab60feca43633b6f7Time: 25358mschunk {0} poly ...
- HTTP1.1中CHUNKED编码解析(转载)
HTTP1.1中CHUNKED编码解析 一般HTTP通信时,会使用Content-Length头信息性来通知用户代理(通常意义上是浏览器)服务器发送的文档内容长度,该头信息定义于HTTP1.0协议RF ...
- Fleet(集群管理器)
工作原理 fleet 是通过systemd来控制你的集群的,控制的任务被称之为unit(单元),控制的命令是fleetctl unit运行方式 unit的运行方式有两种: standard globa ...
- restful之http讲解
HTTP(HyperText Transfer Protocol)是一套计算机通过网络进行通信的规则.计算机专家设计出HTTP,使HTTP客户(如Web浏览器)能够从HTTP服务器(Web服务器)请求 ...