#include <iostream>
using namespace std;
int cnt;
int dfs(int u){
if(u<3) return cnt;
dfs(u-2);
cnt++;
}
int main(){
int n;
cin>>n;
cout<<dfs(n)+n;
return 0;
}
#include[HTML_REMOVED]
using namespace std;
typedef long long ll;
typedef pair[HTML_REMOVED] pii;
typedef unsigned long long ull;
const int N=5010,M=110,P=13331,inf=0x3f3f3f3f;
const int mod=1e8;
const double eps=1e-8;
int n,m;
int a,l,r;
int main() {
cin>>n;
if(n>2)
cout<<n+(n-3)/2+1<<endl;//原来n瓶 + 去掉初始3瓶后 以后每2瓶 和刚换的1瓶可以换一瓶 +最后换的一瓶
else cout<<n<<endl;
按照你的思路优化到O(1)了
牛逼
%%%
666
orz
题主本质上就是把数学的形式写成while循环减法形式了😂
一个思路
牛
找的就是你
代码简洁,但是时间复杂度高一些,不过这都不是问题
%%%
#include[HTML_REMOVED]
using namespace std;
typedef long long ll;
typedef pair[HTML_REMOVED] pii;
typedef unsigned long long ull;
const int N=5010,M=110,P=13331,inf=0x3f3f3f3f;
const int mod=1e8;
const double eps=1e-8;
int n,m;
int a,l,r;
int main() {
cin>>n;
if(n>2)
cout<<n+(n-3)/2+1<<endl;//原来n瓶 + 去掉初始3瓶后 以后每2瓶 和刚换的1瓶可以换一瓶 +最后换的一瓶
else cout<<n<<endl;
}
牛
这样时间复杂度高一些
天才
妙啊
憋出新菜
#女少
这个思路好!
原来是可以剩下瓶盖的,我想复杂了,以为不能剩瓶盖。样例都没凑出来