二分+dp,在一个地方上卡了2小时
来源:互联网 发布:传奇霸业翅膀升级数据 编辑:程序博客网 时间:2024/05/01 07:21
https://www.bnuoj.com/v3/contest_show.php?cid=8095#problem/A
以为所以的dp[i]+n-i一定是dp[n]最小,但并不是
正确代码:
#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>using namespace std;typedef long long LL;const int N = 2000 + 100;LL arr[N], dp[N];int n,k;bool check(LL mid){ for(int i=1;i<=n;i++) { dp[i] = i-1; for(int j=1;j<i;j++) { if( abs(arr[i] - arr[j]) <= (i-j)*mid ) dp[i] = min(dp[i],dp[j] + (i-j-1)); } // if(dp[i] + n-i <= k) return true; } // return false; <span style="color:#ff0000;">//就是这个地方,卡了一万年</span> for(int i=1;i<=n;i++) if(dp[i]+n-i<=k) return 1; return 0;}int main(){ scanf("%d%d",&n,&k); LL L = 0, R = 0; for(int i=1;i<=n;i++) { scanf("%I64d",&arr[i]); if(i!=1) R = max(R,abs(arr[i]-arr[i-1])); } while( L+1 <= R ) { LL mid = (L + R) >> 1; if( check(mid) ) R = mid; else L = mid + 1; } printf("%I64d\n",R); return 0;}
0 0
- 二分+dp,在一个地方上卡了2小时
- 终于在csdn上安家了!这个博客将作为我学习java历程,记录我心得的一个地方
- PHP如何在原时间上加上一天?一个小时?
- PHP如何在原时间上加上一天?一个小时?.......
- 今天就要远离一个在了三年半年的地方
- 在一个地方摔倒3次就是大傻瓜了
- 发现了一个好地方
- 终于有了一个地方了
- 发现了一个好地方
- 在flickr上申请了一个帐号
- 在csdn上安了一个家
- 在一个页面上使用了frameset
- 今天坐骑年检的过程,2个小时跑了3个地方,真羡慕北京一站式办公
- oracle 在原有的时间上加一天,加一个小时,加一分钟
- oracle 在原有的时间上加一天,加一个小时,加一分钟
- 上财后勤服务网服务器落实,试运行开始。下午竟然和功缘兄站在国定门口聊了2个多小时,感触颇深,有远见的技术人员,万里挑一。
- 90%的计算机专家不能在2小时内写出完全正确的二分搜索算法
- 【教你在一个地方放2个同名文件夹】
- Hdu 5765 Bonds
- 人生十难
- vs2013编译FFMPEG. 连接错误问题.
- Java设计模式--单例模式
- ubuntu 下如何以root身份登录
- 二分+dp,在一个地方上卡了2小时
- 机器学习领域的五大流派
- 有两个32bit的数A、B,使用下面方式得到32bit的数C、D。哪一种可以使用C、D得到A、B的值?
- 多重背包模板
- openwrt 开机启动
- 模拟strstr函数
- Directx学习笔记【二】 将win32基本框架封装成类
- Java中的位运算机制详解
- Qt之国际化--多语言动态切换