设最优策略为第一步向左走

那么肯定是走到最左边最优

需要补一些步数

一种是最右边的连着选,多出一倍代价

一种是不连着选,多出两倍代价

#include<cstdio>
#include<algorithm>
#include<cstring>
using namespace std;
int cnt,n,lim,s,root,sz[10000005],a[1000005],ls[10000005],rs[10000005];
long long ans,tr[10000005];
void update(int x){
sz[x]=sz[ls[x]]+sz[rs[x]];
tr[x]=tr[ls[x]]+tr[rs[x]];
}
void insert(int &t,int l,int r,int x){
if (!t) t=++cnt;
if (l==r){
sz[t]++;
tr[t]+=x;
return;
}
int mid=(l+r)>>1;
if (x<=mid) insert(ls[t],l,mid,x);
else insert(rs[t],mid+1,r,x);
update(t);
}
long long query(int t,int l,int r,int x){
if (!x) return 0;
if (!t) return 0;
if (l==r) return 1ll*l*x;
int mid=(l+r)>>1;
if (sz[ls[t]]<=x) return query(rs[t],mid+1,r,x-sz[ls[t]])+tr[ls[t]];
else return query(ls[t],l,mid,x);
}
void solve(){
int Lim=lim;
if (Lim>n-2) return;
cnt=0;
root=0;
memset(ls,0,sizeof(ls));
memset(rs,0,sizeof(rs));
memset(tr,0,sizeof(tr));
memset(sz,0,sizeof(sz));
long long ANS=a[n]+a[s];
Lim-=s-1;
if (Lim<=0) ans=min(ans,ANS);
for (int i=s+1; i<n; i++){
insert(root,0,1e9,a[i+1]-a[i]);
long long ANS1=ANS+a[n]-a[i+1];
int l=Lim-(n-(i+1));
if (l>0) ANS1+=query(root,0,1e9,l)*2;
if (l>=0) ans=min(ans,ANS1);
}
}
int main(){
scanf("%d%d%d",&n,&lim,&s);
for (int i=1; i<=n; i++) scanf("%d",&a[i]);
ans=1ll<<60;
if (s!=n && n-2<lim || !lim || s==n && n-1<lim){
printf("-1\n");
return 0;
}
solve();
for (int i=1; i<=n/2; i++) swap(a[i],a[n-i+1]);
for (int i=n; i>=1; i--) a[i]=a[1]-a[i];
lim=n-lim-1;
s=n-s+1;
solve();
if (ans!=1ll<<60) printf("%lld\n",ans);
else printf("-1\n");
return 0;
}
/*
8 4 1
0 99 142 209 398 493 571 652 685
992 8 0 2
0 3 30 124 153 160 199 216 270
*/

  

BZOJ 2907: 拜访神犇的更多相关文章

  1. [BZOJ 4916]神犇和蒟蒻

    Description 很久很久以前,有一只神犇叫yzy; 很久很久之后,有一只蒟蒻叫lty; Input 请你读入一个整数N;1<=N<=1E9,A.B模1E9+7; Output 请你 ...

  2. 【刷题】BZOJ 4916 神犇和蒟蒻

    Description 很久很久以前,有一只神犇叫yzy; 很久很久之后,有一只蒟蒻叫lty; Input 请你读入一个整数N;1<=N<=1E9,A.B模1E9+7; Output 请你 ...

  3. 【BZOJ4916】神犇和蒟蒻(杜教筛)

    [BZOJ4916]神犇和蒟蒻(杜教筛) 题面 BZOJ 求 \[\sum_{i=1}^n\mu(i^2)\ \ 和\ \sum_{i=1}^n\phi(i^2)\] 其中\[n<=10^9\] ...

  4. 洛谷 P2300 合并神犇 解题报告

    P2300 合并神犇 题目背景 loidc来到了NOI的赛场上,他在那里看到了好多神犇. 题目描述 神犇们现在正排成一排在刷题.每个神犇都有一个能力值p[i].loidc认为坐在附近的金牌爷能力参差不 ...

  5. BZOJ4916: 神犇和蒟蒻【杜教筛】

    Description 很久很久以前,有一只神犇叫yzy; 很久很久之后,有一只蒟蒻叫lty; Input 请你读入一个整数N;1<=N<=1E9,A.B模1E9+7; Output 请你 ...

  6. 【BZOJ4916】神犇和蒟蒻 解题报告

    [BZOJ4916]神犇和蒟蒻 Description 很久很久以前,有一群神犇叫sk和ypl和ssr和hjh和hgr和gjs和yay和xj和zwl和dcx和lyy和dtz和hy和xfz和myh和yw ...

  7. DP——P2300 合并神犇

    题目背景 loidc来到了NOI的赛场上,他在那里看到了好多神犇. 题目描述 神犇们现在正排成一排在刷题.每个神犇都有一个能力值p[i].loidc认为坐在附近的金牌爷能力参差不齐非常难受.于是loi ...

  8. BZOJ4916 神犇和蒟蒻 【欧拉函数 + 杜教筛】

    题目 很久很久以前,有一只神犇叫yzy; 很久很久之后,有一只蒟蒻叫lty; 输入格式 请你读入一个整数N;1<=N<=1E9,A.B模1E9+7; 输出格式 请你输出一个整数A=\sum ...

  9. [BZOJ4916]神犇(Monster_Qi)和蒟蒻(SWHsz)

    很久很久以前,有一只神犇叫Monster_Qi; 很久很久之后,有一只蒟蒻叫SWHsz; 1<=N<=1E9,A.B模1E9+7; 求这个. 求μ的话直接输出1就行了因为除了1的平方外都有 ...

随机推荐

  1. centos 7中磁盘挂载重启后挂载失效

     在centos 7磁盘挂载成功后,关机重启,挂载磁盘失效,需要重新挂载,不用重新挂载的开机挂载方法如下: 1.先检验要挂载的磁盘是否已被挂载,有的话先卸除 2.修改 /etc/fstab 文件 ,最 ...

  2. TP5.1:连接数据库(全局配置、动态配置、DSN配置)

    前提: (1)在app\index\controller文件下新建一个名为Connect.php的控制器文件 (2)建立一个名为user_curd数据库,里面有一张user表,表内容为: 通过全局配置 ...

  3. 西门子触摸屏利用VBScript脚本创建csv文件

    功能描述:利用VBScript脚本创建csv/txt文件 有时需要将PLC或运动控制器Simotion中的数据写到SD卡或U盘上.一种实现方法是,如果使用的是精致面板(comfort panel),可 ...

  4. ring0 暴力枚举进程

    原理:遍历进程ID,然后openprocess,能打开的都枚举出来 ring0 : #include "EnumProcessByForce.h" extern char* PsG ...

  5. SQL-常用数据类型

    整数除了 INT 外,还有 TINYINT.SMALLINT.MEDIUMINT.BIGINT. CHAR 和 VARCHAR 的区别: CHAR 的长度是固定的,而 VARCHAR 的长度是可以变化 ...

  6. Selenium入门13 cookie的增删改查

    cookie的增删改查: 查询:get_cookies()查询所有cookie,get_cookie(cookie的name)获取单个cookie 删除:delete_cookie(cookie的na ...

  7. IOS GCD (事例下载图片)

    @interface HMViewController () @property (weak, nonatomic) IBOutlet UIImageView *imageView; @end @im ...

  8. 使用Axure管理团队项目图文教程 团队协作操作步骤

    Axure RP团队版和企业版都支持团队协作,可以创建和管理团队项目,即多人共同创作一个原型.本文通过图文教程的形式,讲解了如何基于Axure Share服务创建和管理团队项目.因为Axure Sha ...

  9. Poj(2421),Prim最小生成树

    题目链接:http://poj.org/problem?id=2421 最小生成树的变形,有的村庄已经连接了,就直接把他们的权值赋为0,一样的做最小生成树,Prim算法. #include <s ...

  10. 在vue中同时使用过渡和动画

    在上次的动画中,在显示和隐藏有动画效果,但是,刷新页面的时候,第一次的显示没有动画效果 需求:刷新页面的时候也有动画效果 <transition name='fade' appear enter ...