天天看點

51nod 1093 駱駝和香蕉 【貪心】

題目連結:​​1093​​

---暈暈的--

之前做這題的時候都是int----------會産生無解的可能---如果k大于2就一定有解--(每次都可以讓香蕉靠近終點)

是以下面的代碼中的i可以無限的打--- n / i 可以為實數--我也不知道為什就是可以了-------

#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
void solve()
{
  double n,k;scanf("%lf%lf",&n,&k);
  if(n<=k)
  printf("%lld\n",(long long)n);
  /*else if(k<3)
  {
    printf("-1\n");
  }*/
  else
  {
    double s=0,i=1.0;
    while (n)
    {
      s+=min((k/i),n)*i;
      n-=min((k/i),n);
      i+=2;
    }
    if (n)
    printf("-1\n");
    else
    {
      long long ss=s;
      if (s>ss) ss++;
      printf("%lld\n",ss);
    }
  }
}
int main()
{
  solve();
  return 0;
}