【CF 1190B】 Tokitsukaze, CSL and Stone Game

本文深入探讨了一款基于博弈论的策略游戏算法实现,详细分析了游戏中的胜负判断逻辑及特判条件,通过代码示例展示了如何运用奇偶判断及特判处理确保游戏公平性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Biu
啊啊啊啊啊啊啊啊啊啊啊我好激动啊终于AC这题了!!!(虽然这题较水
首先讲讲大概思路吧。可以得出,当一个人面前的石子是0—n-1的话,这个人必输。因为每人都绝( )顶( )聪( )明( ),所以总会到这种情况(例外下文分析),此时用奇偶判断就行了。
另外有其他情况:总和比0—n-1都小,此时其实是必有重复的!而这些已经被特判掉了。至于特判很多,我就不一一讲解,甩个代码就行了。

#include<cstdio>
#include<algorithm>
using namespace std;
const int N = 100002;
int n, a[N], tmp = -1, tot, b[N], cnt;
long long sum, Sum;
int main() {
 scanf("%d", &n);
 for(int i = 1; i <= n; i ++) {
  scanf("%d", &a[i]);
  sum += a[i];
  if(! a[i])
   cnt ++;
 }
 if(cnt >= 2)
  return ! printf("cslnb\n");
 Sum = n * (n - 1) >> 1;
 sort(a + 1, a + n + 1);
 if(a[2] == 1 && a[3] == 1 && a[1] == 0)
  return ! printf("cslnb\n");
 a[0] = -2;
 for(int i = 1; i <= n; i ++) {
  if(tmp == a[i]) {
   tot ++;
   if(tot >= 3)
    return ! printf("cslnb\n");
   if(tot == 2 && a[i - 2] == tmp - 1)
    return ! printf("cslnbppp\n");
  }
  else {
   b[tot] ++;
   if(tot == 2 && b[tot] >= 2)
    return ! printf("cslnb\n");
   tot = 1;
   tmp = a[i];
  }
 }
 b[tot] ++;
 if(tot == 2 && b[tot] >= 2)
  return ! printf("cslnb\n");
 if((sum - Sum) & 1)
  return ! printf("sjfnb\n");
 else
  return ! printf("cslnb\n");
 return 0;
}

写得挺丑,希望大佬在评论区指出错误。谢谢。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值