結果
問題 | No.2860 Heal Slimes |
ユーザー |
![]() |
提出日時 | 2024-07-15 13:29:08 |
言語 | Python3 (3.13.1 + numpy 2.2.1 + scipy 1.14.1) |
結果 |
AC
|
実行時間 | 579 ms / 2,000 ms |
コード長 | 976 bytes |
コンパイル時間 | 182 ms |
コンパイル使用メモリ | 12,672 KB |
実行使用メモリ | 32,820 KB |
最終ジャッジ日時 | 2024-07-15 13:29:30 |
合計ジャッジ時間 | 20,993 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 60 |
ソースコード
# divide (a[0] + a[1] * x + ... + a[n-1] * x^(n-1)) by (1 + x + ... + x^(k-1))def flat_division(n, a, k):b = [0] * (n+1)for i in range(n):b[i] -= a[i]b[i+1] += a[i]c = [0] * (n-k+1)for i in range(n-k, -1, -1):c[i] = b[i+k]b[i] += b[i+k]b[i+k] = 0return cdef solve(n, k, a):v = [0] * kfor i in range(n):v[i%k] += a[i]if n % k == 0:if v != [v[0]] * k:return Falseb = flat_division(n, a, k)return all(i % k == 0 or b[i] <= 0 for i in range(n-k+1))else:x = v[0] - v[-1]for i in range(k):if v[i] != (v[0] if i < n % k else v[-1]):return Falsefor i in range(n):a[i] -= xb = flat_division(n, a, k)return all(b[i] <= 0 for i in range(n-k+1))T = int(input())for _ in range(T):n, k, x = map(int, input().split())h = list(map(int, input().split()))if not all(h[i] % x == h[0] % x for i in range(n)):print('No')else:for i in range(n):h[i] //= xprint('Yes' if solve(n, k, h) else 'No')