bzoj1650: [Usaco2006 Dec]River Hopscotch 跳石子
2015-09-29 19:36
501 查看
当看到最小值最大或者最大值最小的时候,还是要先考虑二分啊。
#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
typedef long long ll;
ll l,n,k;
ll a[55000],s[55000];
ll cmp(int x,int y)
{
return x<y;
}
bool check(ll x)
{
ll cnt=0;
for(ll i=1;i<=n+1;i++)
{
if(s[i]-s[i-1]<x)
{
cnt++;
s[i]=s[i-1];
}
if(cnt>k)return 0;
}
return 1;
}
int main()
{
scanf("%lld %lld %lld",&l,&n,&k);
for(ll i=1;i<=n;i++)
{
scanf("%lld",&a[i]);
}
sort(a+1,a+1+n,cmp);
a[0]=0;
a[n+1]=l;
ll l=0,r=1000000000;
while(l<=r)
{
for(ll i=0;i<=n+1;i++)
{
s[i]=a[i];
}
ll mid=(l+r)>>1;
if(check(mid))
{
l=mid+1;
}else
{
r=mid-1;
}
}
printf("%lld",r);
}
#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
typedef long long ll;
ll l,n,k;
ll a[55000],s[55000];
ll cmp(int x,int y)
{
return x<y;
}
bool check(ll x)
{
ll cnt=0;
for(ll i=1;i<=n+1;i++)
{
if(s[i]-s[i-1]<x)
{
cnt++;
s[i]=s[i-1];
}
if(cnt>k)return 0;
}
return 1;
}
int main()
{
scanf("%lld %lld %lld",&l,&n,&k);
for(ll i=1;i<=n;i++)
{
scanf("%lld",&a[i]);
}
sort(a+1,a+1+n,cmp);
a[0]=0;
a[n+1]=l;
ll l=0,r=1000000000;
while(l<=r)
{
for(ll i=0;i<=n+1;i++)
{
s[i]=a[i];
}
ll mid=(l+r)>>1;
if(check(mid))
{
l=mid+1;
}else
{
r=mid-1;
}
}
printf("%lld",r);
}
相关文章推荐
- 快速排序里的学问:从猜数字开始
- HDU 4898 The Revenge of the Princess’ Knight ( 2014 Multi-University Training Contest 4 )
- Search Insert Position,Search for a Range,Pow(x, n),Sqrt(x)
- Find Minimum in Rotated Sorted Array II
- [LeetCode] Sqrt(x)
- [LeetCode] Pow(x, n)
- [LeetCode] Search Insert Position
- [LeetCode] Search for a Range
- [LeetCode] Search in Rotated Sorted Array
- PAT 1057 Stack (30)
- int sqrt(int x)
- Pow(x, n)
- Find Minimum in Rotated Sorted Array
- Divide Two Integers
- acm解题报告 HDU 2141 Can you find it?
- acm解题报告 HDU 2199 Can you solve this equation?
- acm解题报告 HDU 2899 Strange fuction
- acm解题报告 HDU 1969 Pie
- acm解题报告 HDU 1061 Rightmost Digit
- acm解题报告 POJ 2366 Sacrament of the sum