专栏文章
题解:P11077 「FSLOI Round I」石子
P11077题解参与者 2已保存评论 2
文章操作
快速查看文章及其快照的属性,并进行相关操作。
- 当前评论
- 2 条
- 当前快照
- 1 份
- 快照标识符
- @minokokb
- 此快照首次捕获于
- 2025/12/02 05:48 3 个月前
- 此快照最后确认于
- 2025/12/02 05:48 3 个月前
//这道题十分好写但那些基础不能忘,比如计数器清零(本蒟蒻就是计数器没清零,所以这道题用了30多分钟........)
//先看题,作者大大说进行拿石子的操作
//如果小F赢,输出L
//如果小L赢,输出F
//我们要判断是否可以每次移动 k 个石子使每堆的石子数量都相等并求出操作步数
//因为每次操作要修两个数,所以求步数时要除以二
//mod2,得出余数
//如果最后的余数是奇数,小F赢
//或者最后的余数是偶数,小L赢
//那么上蒟蒻的代码了
CPP#include<iostream>
#include<math.h>//要用到abs函数
using namespace std;
long long t,n,k,pingjunshu,a[200100],o,sum;//pingjunshu这个变量十分简单易懂吧?
int main(){
cin.tie(0);cout.tie(0);//加快输入输出速度哦
cin>>t;
for(int w=0;w<t;w++){
o=0;pingjunshu=0;sum=0;//一定要清零 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
cin>>n>>k;
for(int i=1;i<=n;i++) cin>>a[i],pingjunshu+=a[i];//a数组的总数
pingjunshu/=n;//pingjunshu==平均数
for(int i=1;i<=n;i++)
if(abs(a[i]-pingjunshu)%k!=0) o=1;//只要有一个无法变到平均数 o=1
if(o==1){//输出平局
cout<<"Draw\n";
continue;
}
for(int i=1;i<=n;i++) sum+=abs(a[i]-pingjunshu);
sum/=k;//记得除以k
if((sum/2)%2==1) cout<<"F\n";//终于输出了
else cout<<"L\n";
}
}
/*
本蒟蒻第一次写题解,点点赞呗 ------写完题解还要写作业的蒟蒻
*/
相关推荐
评论
共 2 条评论,欢迎与作者交流。
正在加载评论...