「FSLOI Round I」石子 题解
解题思路
Subtask 1
由于
Subtask 2
由于
设序列的平均数为
所以我们统计所有数与
Subtask 3 & 4 & 5
有了 Subtask 2 的铺垫,正解呼之欲出。
首先我们判断,如果存在一个
接下来考虑对局会在有限步后结束的情况。和 Subtask2 类似,我们这次记
代码示例
#include<bits/stdc++.h>
using namespace std;
#define int long long
int t,n,k,ave,a[200010];
signed main(){
cin>>t;
while(t--){
int sum=0;
cin>>n>>k;
for(int i=1;i<=n;i++) cin>>a[i],sum+=a[i];
ave=sum/n;//平均值
int flg=0;
for(int i=1;i<=n;i++) if(abs(a[i]-ave)%k!=0) flg=1;
if(flg){
cout<<"Draw"<<endl;
continue;
}//平局
int num=0;
for(int i=1;i<=n;i++) num+=abs(a[i]-ave)/k;
num/=2;
cout<<(num%2?"F":"L")<<endl;
}
return 0;
}