博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
bzoj1112 [POI2008]砖块Klo
阅读量:6918 次
发布时间:2019-06-27

本文共 1820 字,大约阅读时间需要 6 分钟。

分析

通过小学数学我们可以知道对于k个数,我们取它们的中位数x时可以使答案最优。所以我们枚举每一个连续的长度为k的区间,用treap维护,求出所有数都变成x的花费。注意在这里treap还需要记录它的子树的值的和以便最后计算答案的时候使用。具体实现见代码。记得开long long。

代码

#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;const long long inf = 1e13+7;long long siz[110000],sum[110000],son[2][110000],a[110000],rd[110000];long long n,m,cnt,root,b[110000];inline void up(long long x){ siz[x]=siz[son[0][x]]+siz[son[1][x]]+1; sum[x]=sum[son[0][x]]+sum[son[1][x]]+a[x];}inline void rot(long long &rt,long long p){ long long t=son[p][rt]; son[p][rt]=son[!p][t],son[!p][t]=rt;up(rt),up(t);rt=t;} inline void ins(long long &rt,long long x){ if(!rt){rt=++cnt;sum[rt]=x;siz[rt]=1;a[rt]=x;rd[rt]=rand();return;} siz[rt]++; sum[rt]+=x; if(x<=a[rt]){ins(son[0][rt],x);if(rd[son[0][rt]]
rd[son[1][rt]]){rot(rt,1);del(son[0][rt],x);} else {rot(rt,0);del(son[1][rt],x);} up(rt);return; } if(a[rt]>x)del(son[0][rt],x);else del(son[1][rt],x);up(rt);}long long res1,res2,s1,s2;inline long long fk(long long rt,long long k){ if(siz[son[0][rt]]==k-1){ s1+=siz[son[0][rt]],s2+=siz[son[1][rt]]; res1+=sum[son[0][rt]],res2+=sum[son[1][rt]];return a[rt]; } if(siz[son[0][rt]]>=k){ s2+=siz[son[1][rt]]+1,res2+=sum[son[1][rt]]+a[rt]; return fk(son[0][rt],k); }else { s1+=siz[son[0][rt]]+1,res1+=sum[son[0][rt]]+a[rt]; return fk(son[1][rt],k-1-siz[son[0][rt]]); }}inline long long getans(){ res1=res2=s1=s2=0; long long x=fk(root,(m-1)/2+1); return res2-s2*x+s1*x-res1;}int main(){ srand(time(0)+20021023); long long i,j,k,ans=inf; scanf("%lld%lld",&n,&m); for(i=1;i<=n;i++)scanf("%lld",&b[i]); for(i=1;i

转载于:https://www.cnblogs.com/yzxverygood/p/9506634.html

你可能感兴趣的文章
OOM
查看>>
LINUX中fdisk命令详解
查看>>
8月上旬全球域名解析服务商TOP15:万网排名第13
查看>>
1月第3周网络安全报告:发现放马站点1173个
查看>>
全球域名净增长量Top15:易名中国上榜 位居十四
查看>>
CentOS6.3 KVM下设置网卡为桥接模式
查看>>
Git 常用命令分享
查看>>
封装继承多态
查看>>
保障了罗振宇跨年演讲的PTS铂金版正式上线,产品体验全新升级
查看>>
离线批量数据通道Tunnel的最佳实践及常见问题
查看>>
使用MaxCompute Java SDK运行安全相关命令
查看>>
MySQL8.0 - 新特性 - 说说InnoDB Log System的隐藏参数
查看>>
【C语言】 字符串的内存拷贝处理函数
查看>>
Jodd Props - 超强的配置文件(一)
查看>>
【非递归】二叉树的建立及遍历
查看>>
性能测试案例模板 性能测试用例模板 测试案例 性能用例 模板 容我想想之性能测试系列培训...
查看>>
原码, 反码, 补码
查看>>
华众6.5虚拟主机管理系统SQL注入漏洞利用
查看>>
让进程管理更“霸道”
查看>>
微软安全管理解决方案
查看>>