![[CF1303B] National Project - 数学 [CF1303B] National Project - 数学](/default/index/img?u=L2RlZmF1bHQvaW5kZXgvaW1nP3U9YUhSMGNITTZMeTlwYldjeU1ERTRMbU51WW14dlozTXVZMjl0TDJKc2IyY3ZNVE14T0RJME5TOHlNREl3TURJdk1UTXhPREkwTlMweU1ESXdNREl5TWpFMk1UUXpORFEzTWkweE1qZ3pOVFl6TkRrMExuQnVadz09)
Solution
-
\(2a>n\),一次性结束,直接输出 \(n\)
-
\(a \geq b\),那么一直修即可,直接输出 \(n\)
- 否则,\(a\) 占弱势,我们考虑用 \(a\) 修一半需要的完整轮次数为 \([(n-1)/2a]\) ,那么这些轮中, \(a\) 修掉的个数为 \([n/2a]a\),而 \(b\) 修掉的个数则是 \([n/2], [n/2a]b\) 中的较小值。计算剩余量然后暴力修即可。
#include <bits/stdc++.h>
using namespace std;
#define int long long
int n,a,b;
signed main() {
int t;
cin>>t;
while(t--) {
cin>>n>>a>>b;
if(2*a>n || a>=b) {
cout<<n<<endl;
}
else {
int d=(n-1)/(2*a);
int xa=d*a;
int xb=min(n/2,d*b);
int r=n-xa-xb;
//cout<<d<<" "<<xa<<" "<<" "<<xb<<" "<<r<<endl;
cout<<d*(a+b)+r<<endl;
}
}
}
相关文章:
-
2021-10-02
-
2022-12-23
-
2021-12-27
-
2021-10-27
-
2021-11-27
-
2021-07-02
-
2022-12-23
-
2022-12-23