#include<iostream>
#include<algorithm>
using namespace std;
int n,m;
int find(int x)
{
int sum = 0;//吃了多少
int a = 0; //棒子根数
int b = 1;
while(b<=x)//1 2
{
sum += 1;
a ++;
if(a%3==0)
{
a = 1; sum+=1;
}
b++;
}
return sum;
}
int main()
{
int n;
cin>>n;
int l = 0 , r = n;
while(l<r)
{
int mid = (l+r+1)/2;
if(find(mid)<=n) l = mid ;
else r = mid - 1;
}
cout<<l;
return 0;
}
为什么这样的二分会超时啊
函数单独拿出来改提交都可以过
#include<iostream>
#include<algorithm>
using namespace std;
int n;
int main()
{
int n;
cin>>n;
int sum = 0;
int a = 0;
int b = 0;
while(b<n)
{
sum ++;
a ++;
if(a%3==0)
{
a = 1; b++;
}
b++;
}
cout<< sum;
return 0;
}
在学二分想想明白二分,求大神指导,谢谢