Loading

AT_agc010_d [AGC010D] Decrementing

有迹可循的思维题,切完之后感觉很爽!

考虑慢慢想一些性质:

  1. 可以注意到只会除以 loggcd
  2. 只要存在了一个数字 1,那么之后胜负只与奇偶性有关。对于一名玩家尽可能要在达到存在一个 1 之前调整好奇偶性。
  3. 发现大多数操作也改变不了奇偶性,只有所有数字都为偶数之后除一次才有奇偶性变化。
  4. 想除一次 gcd 是很困难的,而阻止对方除一次 gcd 是简单的。

那么现在如果当前玩家急需调整一次奇偶性,只有可能在最开始只存在一个奇数的时候做除法。因为对方肯定不希望你调整。不难发现如果先手处于奇偶性的优势则先手必胜,因为先手可以保证后手永远无法调整奇偶性。而先手如要调整则会不断调整,直到当前先手处于奇偶性优势或者存在不止两个奇数为止,而顶多只会进行 log 次除法,那么我们就用优美的做法完成了一道优美的题。

代码:

#include <bits/stdc++.h>
#define int long long
#define ls (p << 1)
#define rs (ls | 1)
#define rep(i, l, r) for (int i = l; i <= r; ++ i)
#define rrp(i, l, r) for (int i = r; i >= l; -- i)
#define pii pair <int, int>
#define eb emplace_back
#define x first
#define y second
#define inf 1000000000
#define linf 1000000000000000000
using namespace std;
typedef long long ll;
constexpr int N = 1e5 + 5, P = 998244353;
inline int rd () {
	int x = 0, f = 1;
	char ch = getchar ();
	while (! isdigit (ch)) { if (ch == '-') f = -1; ch = getchar (); }
	while (isdigit (ch)) { x = (x << 1) + (x << 3) + ch - 48; ch = getchar (); }
	return x * f;
}
int n, a[N];
int32_t main () {
  // freopen ("1.in", "r", stdin);
  // freopen ("1.out", "w", stdout);
  n = rd ();
  int s = 0;
  rep (i, 1, n) {
    a[i] = rd ();
    s ^= a[i] & 1;
  }
  if (s ^ (n & 1)) {
    puts ("First");
  } else {
    bool win = 0, now = 0;
    while (1) {
      if (win ^ now) {
        break;
      }
      rep (i, 1, n) if (a[i] > 1 && (a[i] & 1)) {
        -- a[i]; break;
      }
      int g = 0, sum = 0;
      rep (i, 1, n) g = __gcd (g, a[i]), sum += a[i];
      if (g == 1) break; sum /= g;
      rep (i, 1, n) a[i] /= g;
      if ((sum & 1) == (n & 1)) win ^= 1; now ^= 1;
    }
    puts (win ? "First" : "Second");
  }
}

作者:lalaouye

出处:https://www.cnblogs.com/lalaouyehome/p/18566463

版权:本作品采用「114514」许可协议进行许可。

posted @   lalaouye  阅读(4)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· Vue3状态管理终极指南:Pinia保姆级教程
more_horiz
keyboard_arrow_up dark_mode palette
选择主题
点击右上角即可分享
微信分享提示