由于是随机数据,用分块加乱搞就可以水过。
详情参见大佬的博客:题解
贴个代码:

#include<cstdio>
#include<cstring>
#include<vector>
#include<cmath>
#include<algorithm>
using namespace std;
#define MAXN 50500
#define MAXM 250
int A[MAXN],n,k;
const int inf=0x3c3c3c3c;
void _r(int& x)
{ char c=getchar(); while(c<'0'||c>'9') { c=getchar(); } for(x=0;c>='0'&&c<='9';c=getchar()) { x=(x<<1)+(x<<3)+c-'0'; } return ;
}
#define lowbit(x) (x&-x)
int tr[MAXN];
void modify(int x,int d)
{ for(;x<=n;x+=lowbit(x)) { tr[x]=min(tr[x],d); } return ;
}
int get(int x)
{ int an=inf; for(;x;x-=lowbit(x)) { an=min(an,tr[x]); } return an;
}
int size,dis[MAXN][MAXM],st[MAXN],top,num;
int F[MAXN][MAXM*4+50];
vector<int>P[MAXN];
int cc=0;
void work(int pos,int nn,int lim,int& an)
{ int up=min(nn*size,n),tmp; for(int i=lim;i<=up;i++) { tmp=abs(A[pos]-A[i]); if(tmp>0&&tmp<an) { an=tmp; if(an<get(i)) { modify(i,an); //printf("%d  %d  %d\n",++cc,pos,i);P[i].push_back(pos); } } } return ;
}
int main()
{   freopen("r.in","r",stdin);freopen("w.out","w",stdout);_r(n); _r(k); for(size=1;size*size<=n;++size); num=(n-1)/size+1; for(int i=1;i<=n;i++) { _r(*(A+i)); } memset(tr,0x3c,(n+1)<<2); memset(dis,0x3c,sizeof(dis)); int l,r; for(int i=1;i<=num;i++) { l=(i-1)*size+1; r=min(i*size,n); top=0; for(int j=l;j<=r;j++) { *(st+(++top))=A[j]; } sort(st+1,st+1+top); l=0; r=1; for(int j=1;j<=n;j++) { while(l<top&&*(st+l+1)<j) { ++l; } while(r<=top&&*(st+r)<=j) { ++r; } if(l>0) { dis[j][i]=min(dis[j][i],j-st[l]); } if(r<=top) { dis[j][i]=min(dis[j][i],st[r]-j); } } } int pos,tmp; for(int i=n;i>=1;i--) { pos=(i-1)/size+1; tmp=inf; for(int j=pos;j<=num;j++) { if(dis[A[i]][j]<tmp) { work(i,j,max(i,(pos-1)*size+1),tmp); } } } memset(F,0x3c,sizeof(F)); F[0][0]=0;for(int i=1;i<=n;i++) { F[i][0]=0; for(int j=1;j<=k;j++) { F[i][j]=F[i-1][j]; for(int p=0;p<(int)P[i].size();p++) { F[i][j]=min(F[i][j],F[P[i][p]-1][j-1]+abs(A[i]-A[P[i][p]])); } /*if(F[i][j]==inf) { break; } */} } printf("%d\n",F[n][k]); return 0;
}

bzoj4167 永远亭的竹笋采摘相关推荐

  1. BZOJ4167: 永远亭的竹笋采摘 分块

    题意:给定一个序列,将其分成K段,每段元素不得全相同,求sigma(每段中不同元素差值的最小值)的最小值 n<=50000,k<=1000,序列中元素<=n,序列随机生成 既然序列是 ...

  2. HN2015集训 永远亭的竹笋采摘

    第一反应肯定是dp啦,然后就会愉快的T成一头象拔蚌. 那么,说说正解吧. 显然,选取的区间一定可以是两头为差值最小的.那就好办了,只需要预处理出所有的这样的区间,再dp即可,由于数据是随机生成的,所以 ...

  3. BZOJ4167 : 永远的竹笋采摘

    首先枚举出所有可能成为区间最小差值的点对$(j,i)$. 枚举每个位置作为右端点$i$,假设$a[j]>a[i]$. 找到第一个这样的$j$,那么可以将下一个$a[j]$的范围缩小到$(a[i] ...

  4. 数据分析与预测(二)——pandas 函数read_csv解析

    ​ 一. 前言 使用pandas做数据处理的第一步就是读取数据,数据源可以来自于各种地方,csv文件便是其中之一.而读取csv文件,pandas也提供了非常强力的支持,参数有四五十个.这些参数中,有的 ...

  5. 东方mmd巨大化_有什么东方mmd非常值得一看?

    1.月之头脑是处方(月の頭脳は処方せん):以铃仙·优昙华院前往红魔馆送药的旅程为起点,穿插魔理沙误捡药物产生的误会,以及比那名居 天子/射命丸 文的煽动,当然结尾众人都获得一个圆满结局. 2.魔理沙的 ...

  6. codevs2830 蓬莱山辉夜

    2830 蓬莱山辉夜 题目描述 Description 在幻想乡中,蓬莱山辉夜是月球公主,居住在永远亭上,二次设定说她成天宅在家里玩电脑,亦称NEET姬 一天,她要她帮忙升级月球的网络服务器,应为注册 ...

  7. codevs 2830 蓬莱山辉夜

    codevs 2830 蓬莱山辉夜 在幻想乡中,蓬莱山辉夜是月球公主,居住在永远亭上,二次设定说她成天宅在家里玩电脑,亦称NEET姬 一天,她要她帮忙升级月球的网络服务器,应为注册用户过多(月兔和地球 ...

  8. 【codevs 2830】蓬莱山辉夜

    作为一个有图的题,竟然描述如此不清楚,表示愤慨 其实就是个堆--可这是个语文题啊语文题!!!! 题目描述 在幻想乡中,蓬莱山辉夜是月球公主,居住在永远亭上,二次设定说她成天宅在家里玩电脑,亦称NEET ...

  9. 2830 蓬莱山辉夜 优先队列的简单应用

    在幻想乡中,蓬莱山辉夜是月球公主,居住在永远亭上,二次设定说她成天宅在家里玩电脑,亦称NEET姬 一天,她要她帮忙升级月球的网络服务器,应为注册用户过多(月兔和地球上的巫女都注册了--),所以作为代理 ...

最新文章

  1. 2009下半年网络管理员试题及答案
  2. 年度盛宴——2012年最精彩的15个 CSS3 教程
  3. php install with mysql on w2k3 and IIS mannually
  4. 关于word插入特殊符号不显示的问题及解决
  5. PurdueUCLA提出梯度Boosting网络,效果远好于XGBoost模型!
  6. 汇编语言(十一)之统计非数字字符个数
  7. TCP/IP 网络协议
  8. 计算机导论中如何求模,计算机导论作业答案
  9. CE教程第八关——搜索4级指针
  10. 计算机控制总线传输的是,总线,地址总线,数据总线和控制总线
  11. 必须收藏的文档:IronPython脚本在TIBCO Spotfire中的使用
  12. python弹幕点歌_GitHub - smilecc/blive-raspberry: 完全重构的树莓派B站直播弹幕点播台...
  13. Charles软件怎样解决SSL安全证书过期问题
  14. 关于手机QQ-好友的秘密 发送秘密者的位置信息获取
  15. 双卡手机管理短信通知 | 屏蔽短信通知
  16. unity应用实例——从头撸一个全新的FPS游戏(1)
  17. 会员通系统:如何利用微信公众号/个人号做线上线下整合营销?
  18. Oracle中根据中文获取拼音首字母
  19. Python游戏末日丧尸
  20. 云卷云舒:2022 数据库总结从Gartner到IDC

热门文章

  1. 什么是抖音小店飞鸽3分钟人工回复率?了解客服回复问题以及解决方案
  2. 获取行政边界经纬度数据
  3. oracle 临时表空间语句,oracle的临时表空间
  4. 水果店节日活动营销方案,水果店如何做营销活动
  5. 用C语言算两个数的商和
  6. 关于MP4视频在浏览器上无法播放的问题(没有找到支持的视频格式和mime类型)
  7. 【私藏】开发APP必须知道的API集合
  8. 本人重装后的一些操作需求
  9. web常见的 HTTP 5xx 状态汇总
  10. 王阳明:<二> 立志,勤学,改过,责善