非官方题解 | 巅峰赛#37 T3
2026-08-17 14:08:34
发布于:天津
20阅读
0回复
0点赞
3.午枫的宝藏
思路:
这道题就一个公式。(不会用LaTex......)
那么是怎么推导出来的呢?
- 当n为偶数:争取n/2名水手支持,选择编号为偶数的水手每人分1金币。答案为n(n+2)/4(等差数列)。
- 当n为奇数:争取(n-1)/2名水手支持,选择编号为偶数的水手每人分1金币。答案(n+1)*(n-1)/4。(等差数列)
我的代码:
#include<iostream>
#include<cmath>
using namespace std;
int main(){
int t;cin>>t;
while(t--){
int num,k;
cin>>num>>k;
if(k%2==0){
num--;
long long n=floor((num-1.5*k)/k)+2;
long long ans=k*n*(n-1)/2+n*num-k*n*n+0.5*k*n+n;
cout<<ans<<endl;
}
else cout<<0<<endl;
}
return 0;
}
这里空空如也





有帮助,赞一个