cf D. Levko and Array
2024-10-19 00:26:12
http://codeforces.com/contest/361/problem/D
用二分搜索相邻两个数的差的绝对值,然后用dp记录数改变的次数。dp[i]表示在i之前改变的次数,如果|a[i]-a[j]|<=(i-j)*mid 需要改变。
#include <cstdio>
#include <cstring>
#include <algorithm>
#define LL __int64
using namespace std;
const LL inf=;
int dp[];
int n,k;
LL a[];
LL ABS(LL a)
{
if(a<) return -a;
return a;
}
bool ok(LL c)
{
memset(dp,,sizeof(dp));
for(int i=; i<=n; i++)
{
dp[i]=i;
for(int j=; j<i; j++)
{
if(ABS(a[i]-a[j])<=(LL)(i-j)*c)
dp[i]=min(dp[i],dp[j]+(i-j-));
}
if(dp[i]+(n-i-)<=k) return true;
}
return false;
} int main()
{
while(scanf("%d%d",&n,&k)!=EOF)
{
for(int i=; i<=n; i++)
{
scanf("%I64d",&a[i]);
}
LL l=,r=inf;
while(l<=r)
{
LL mid=(l+r)/;
if(ok(mid))
{
r=mid-;
}
else l=mid+;
}
printf("%I64d\n",l);
}
return ;
}
最新文章
- 台式电脑、笔记本快捷选择Boot(启动项快捷键)大全
- Chrome开发者工具不完全指南(五、移动篇)
- javaWeb开发小工具---MailUtils及其单元测试
- 怎样在myEclipse中使用debug调试程序?
- iframe 加载完成事件
- http1.1和http1.0区别
- kali2.0如何安装中文输入法
- MyEclipse过期激活方法
- Help Me with the Game
- JQuery初识
- webpack实用配置
- PHP条件语句if的使用
- Spring整合quartz框架实现任务定时调度
- JAVA在不确定具体 Annotation 类型时,获得注解参数
- Jsの练习-数组其他常用方法 -map() ,filter() ,every() ,some()
- 20175310 《Java程序设计》第8周学习总结
- document.all 在各浏览器中的支持不同
- 关于 Web Api 2 认证与授权
- springmvc 定时器 多数据源
- LCG(linear congruential generator): 一种简单的随机数生成算法