結果
問題 | No.1493 隣接xor |
ユーザー |
![]() |
提出日時 | 2021-05-03 14:04:03 |
言語 | Python3 (3.13.1 + numpy 2.2.1 + scipy 1.14.1) |
結果 |
AC
|
実行時間 | 425 ms / 2,000 ms |
コード長 | 1,094 bytes |
コンパイル時間 | 104 ms |
コンパイル使用メモリ | 12,800 KB |
実行使用メモリ | 64,952 KB |
最終ジャッジ日時 | 2024-07-22 04:18:28 |
合計ジャッジ時間 | 9,483 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 27 |
ソースコード
import sys def input(): return sys.stdin.readline().rstrip() """ Do not get stuck on a problem for more than 20 minutes Just check the editorial :) There should be something else to do insead """ MOD = int(1e9 + 7) from collections import defaultdict def slv(): n = int(input()) a = list(map(int,input().split())) for i in range(1,n): a[i]^=a[i - 1] ans = 0 d = defaultdict(list) for i,v in enumerate(a): d[v].append(i + 1) dp = [0]*(n + 10) sumdp = [0]*(n + 10) prev = [-1]*(n + 10) for v,li in d.items(): for i in range(1,len(li)): prev[li[i]] = li[i - 1] dp[0] = 1 sumdp[0] = 1 for i in range(1,n): previ = prev[i] if previ != -1: dp[i] = sumdp[i - 1] - sumdp[previ - 1] dp[i] %= MOD else: dp[i] = sumdp[i - 1] sumdp[i] = (sumdp[i - 1] + dp[i]) % MOD ans = sumdp[n - 1] % MOD print(ans) return def main(): t = 1 for i in range(t): slv() return if __name__ == "__main__": main()