记某次codeforces考试 B. Levko and Array
2016-07-27 21:18
148 查看
又无奈的去看了黄学长的代码。
(吐槽,黄学长的代码没有注释......
表示看了好久才懂 好久....
附代码
#include<cstdio>
#include<cstring>
#include<iostream>
#include<cmath>
#include<algorithm>
using namespace std;
typedef long long ll;
ll N,M,a[2005],f[2005];
bool check(ll mid)
{
for (int i=1;i<=N;i++)
{
f[i]=i-1;
for (int j=1;j<i;j++)
{
if (abs(a[i]-a[j])<=(i-j)*mid)
f[i]=min(f[i],f[j]+(i-j-1));
}
if (f[i]+N-i<=M)return true;
}
return false;
}
int main()
{
scanf("%I64d%I64d",&N,&M);
for (int i=1;i<=N;i++)
{
scanf("%I64d",&a[i]);
//if (i!=1) hehe[i]=abs(hehe[i]-hehe[i-1]);
}
ll l=0,r=2000000000;
while(l<=r)
{
ll mid=(l+r)>>1;
if (check(mid)) r=mid-1;
else l=mid+1;
}
printf("%I64d\n",l);
return 0;
}
(吐槽,黄学长的代码没有注释......
表示看了好久才懂 好久....
附代码
#include<cstdio>
#include<cstring>
#include<iostream>
#include<cmath>
#include<algorithm>
using namespace std;
typedef long long ll;
ll N,M,a[2005],f[2005];
bool check(ll mid)
{
for (int i=1;i<=N;i++)
{
f[i]=i-1;
for (int j=1;j<i;j++)
{
if (abs(a[i]-a[j])<=(i-j)*mid)
f[i]=min(f[i],f[j]+(i-j-1));
}
if (f[i]+N-i<=M)return true;
}
return false;
}
int main()
{
scanf("%I64d%I64d",&N,&M);
for (int i=1;i<=N;i++)
{
scanf("%I64d",&a[i]);
//if (i!=1) hehe[i]=abs(hehe[i]-hehe[i-1]);
}
ll l=0,r=2000000000;
while(l<=r)
{
ll mid=(l+r)>>1;
if (check(mid)) r=mid-1;
else l=mid+1;
}
printf("%I64d\n",l);
return 0;
}
相关文章推荐
- JavaWeb基础知识:Tomcat服务器和http协议
- JAVA多线程易错点
- git和svn的区别
- 八皇后
- HDU-1426 Sudoku Killer
- 你应该知道的 RPC 原理
- vs 2015 运行安卓报错
- ES6 学习笔记(1)
- link与import导入方式的区别
- 计算机专业名词解释以评论的方式追加
- srs wiki 小结
- Android 监听双卡信号强度(附完整代码)
- mongodb c++ API
- Red packet 二分算法
- masm汇编伪指令
- css中具有继承性的属性
- 从头学android_minSdkVersion、targetSdkVersion、maxSdkVersion、target API level的区别
- ASP.NET--Razor-model-compare属性用法
- 第三方---百度地图的使用
- JQuery学习之旅(5)