結果
問題 | No.2672 Subset Xor Sum |
ユーザー | tktk_snsn |
提出日時 | 2024-04-07 00:22:07 |
言語 | C# (.NET 8.0.203) |
結果 |
AC
|
実行時間 | 148 ms / 2,000 ms |
コード長 | 5,843 bytes |
コンパイル時間 | 8,764 ms |
コンパイル使用メモリ | 166,648 KB |
実行使用メモリ | 188,220 KB |
最終ジャッジ日時 | 2024-10-01 04:15:20 |
合計ジャッジ時間 | 14,499 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge1 |
(要ログイン)
テストケース
テストケース表示入力 | 結果 | 実行時間 実行使用メモリ |
---|---|---|
testcase_00 | AC | 51 ms
29,184 KB |
testcase_01 | AC | 49 ms
29,184 KB |
testcase_02 | AC | 51 ms
29,696 KB |
testcase_03 | AC | 51 ms
29,184 KB |
testcase_04 | AC | 52 ms
29,312 KB |
testcase_05 | AC | 53 ms
29,696 KB |
testcase_06 | AC | 53 ms
29,696 KB |
testcase_07 | AC | 53 ms
29,568 KB |
testcase_08 | AC | 53 ms
29,312 KB |
testcase_09 | AC | 53 ms
29,416 KB |
testcase_10 | AC | 51 ms
29,696 KB |
testcase_11 | AC | 50 ms
29,440 KB |
testcase_12 | AC | 49 ms
29,440 KB |
testcase_13 | AC | 49 ms
29,440 KB |
testcase_14 | AC | 49 ms
29,440 KB |
testcase_15 | AC | 49 ms
29,312 KB |
testcase_16 | AC | 51 ms
31,508 KB |
testcase_17 | AC | 50 ms
29,440 KB |
testcase_18 | AC | 50 ms
29,568 KB |
testcase_19 | AC | 52 ms
29,416 KB |
testcase_20 | AC | 52 ms
29,440 KB |
testcase_21 | AC | 50 ms
29,696 KB |
testcase_22 | AC | 50 ms
29,440 KB |
testcase_23 | AC | 51 ms
29,696 KB |
testcase_24 | AC | 51 ms
29,440 KB |
testcase_25 | AC | 50 ms
29,184 KB |
testcase_26 | AC | 59 ms
33,920 KB |
testcase_27 | AC | 59 ms
33,896 KB |
testcase_28 | AC | 51 ms
29,568 KB |
testcase_29 | AC | 50 ms
29,440 KB |
testcase_30 | AC | 50 ms
29,416 KB |
testcase_31 | AC | 126 ms
54,784 KB |
testcase_32 | AC | 97 ms
53,632 KB |
testcase_33 | AC | 88 ms
50,048 KB |
testcase_34 | AC | 107 ms
54,272 KB |
testcase_35 | AC | 122 ms
54,784 KB |
testcase_36 | AC | 116 ms
54,400 KB |
testcase_37 | AC | 120 ms
54,784 KB |
testcase_38 | AC | 98 ms
53,632 KB |
testcase_39 | AC | 127 ms
54,784 KB |
testcase_40 | AC | 77 ms
40,832 KB |
testcase_41 | AC | 105 ms
54,016 KB |
testcase_42 | AC | 119 ms
54,400 KB |
testcase_43 | AC | 112 ms
54,144 KB |
testcase_44 | AC | 128 ms
54,784 KB |
testcase_45 | AC | 107 ms
54,144 KB |
testcase_46 | AC | 48 ms
28,288 KB |
testcase_47 | AC | 47 ms
28,544 KB |
testcase_48 | AC | 47 ms
28,544 KB |
testcase_49 | AC | 46 ms
28,416 KB |
testcase_50 | AC | 46 ms
28,288 KB |
testcase_51 | AC | 47 ms
28,544 KB |
testcase_52 | AC | 47 ms
28,416 KB |
testcase_53 | AC | 47 ms
28,264 KB |
testcase_54 | AC | 46 ms
28,160 KB |
testcase_55 | AC | 46 ms
28,672 KB |
testcase_56 | AC | 45 ms
28,544 KB |
testcase_57 | AC | 47 ms
28,012 KB |
testcase_58 | AC | 47 ms
28,160 KB |
testcase_59 | AC | 48 ms
27,648 KB |
testcase_60 | AC | 48 ms
28,032 KB |
testcase_61 | AC | 46 ms
27,700 KB |
testcase_62 | AC | 148 ms
52,224 KB |
testcase_63 | AC | 49 ms
28,416 KB |
testcase_64 | AC | 50 ms
28,288 KB |
testcase_65 | AC | 48 ms
27,776 KB |
testcase_66 | AC | 51 ms
28,160 KB |
testcase_67 | AC | 46 ms
188,220 KB |
コンパイルメッセージ
復元対象のプロジェクトを決定しています... /home/judge/data/code/main.csproj を復元しました (94 ms)。 MSBuild のバージョン 17.9.6+a4ecab324 (.NET) main -> /home/judge/data/code/bin/Release/net8.0/main.dll main -> /home/judge/data/code/bin/Release/net8.0/publish/
ソースコード
using System; using System.Text; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Numerics; using Compro.IO; using static Compro.Common.ComproUtils; namespace Compro { public class Program { public static void Main(string[] args) { var solver = new AtCoder.Solver(); solver.Solve(); } } } namespace AtCoder { public class Solver { private readonly StreamScanner scanner; public Solver() { scanner = new StreamScanner(Console.OpenStandardInput()); } public void Solve() { var n = scanner.NextInt(); var a = scanner.ScanIntArray(n); Console.WriteLine(check(n, a) ? "Yes": "No"); } private bool check(int n, int[] A) { var xor = A.Aggregate(0, (cur, nxt) => cur ^ nxt); if (xor != 0) { return false; } if (n > 5555 || A.Contains(0)) { return true; } int m = (1 << 13); var dp = Enumerable.Repeat(INF, m).ToArray(); dp[A[0]] = 1; foreach (var a in A[1..]) { var ndp = Enumerable.Repeat(INF, m).ToArray(); for (int i = 0; i < m; ++i) { ndp[i] = Math.Min(ndp[i], dp[i]); ndp[i ^ a] = Math.Min(ndp[i ^ a], dp[i] + 1); } dp = ndp; } return dp[0] != n; } } } namespace Compro.Common { public static class ComproUtils { public static readonly long LINF = long.MaxValue / 2; public static readonly int INF = int.MaxValue / 2; public static readonly int[] dr = new[] { 0, 1, 0, -1 }; public static readonly int[] dc = new[] { 1, 0, -1, 0 }; public const string ds = "RBLF"; public static long gcd(long x, long y) => y == 0 ? x : gcd(y, x % y); public static long lcm(long x, long y) => x * (y / gcd(x, y)); /// <summary> /// nの約数を列挙する /// </summary> /// <param name="n"></param> /// <returns></returns> public static IEnumerable<long> GenDivisor(long n) { for (long i = 1L; i * i <= n; ++i) { if (n % i == 0) { yield return i; if (i * i != n) yield return n / i; } } } /// <summary> /// aを素因数分解する Dict<long primeNumber, int count> /// </summary> /// <param name="a"></param> /// <returns></returns> public static Dictionary<long, int> PrimeFactorization(long a) { var dict = new Dictionary<long, int>(); if (a == 0) return dict; int cnt = 0; while (a % 2 == 0) { a /= 2; cnt++; } if (cnt > 0) { dict.Add(2, cnt); } for(long p = 3; p * p <= a; p += 2) { cnt = 0; while (a % p == 0) { cnt++; a /= p; } dict.Add(p, cnt); } if (a > 1) { dict.Add(a, 1); } return dict; } } } namespace Compro.IO { using System.IO; using System.Text; using System.Globalization; using System; public class StreamScanner { private readonly Stream stream; private readonly byte[] buffer = new byte[1024]; private int size, ptr; private bool isEOF = false; public StreamScanner(Stream stream) { this.stream = stream; ptr = 0; size = 0; } private byte read() { if (isEOF) return 0; if (ptr >= size) { ptr = 0; size = stream.Read(buffer, 0, 1024); if (size <= 0) { isEOF = true; return 0; } } return buffer[ptr++]; } public char Char() { byte b = 0; do { b = read(); } while ((b < 33 || 126 < b) && !isEOF); return (char)b; } public string Scan() { var sb = new StringBuilder(); for (var b = Char(); b >= 33 && b <= 126; b = (char)read()) sb.Append(b); return sb.ToString(); } public int NextInt() { return isEOF ? Int32.MinValue : Int32.Parse(Scan(), CultureInfo.InvariantCulture); } public long NextLong() { return isEOF ? Int64.MinValue : Int64.Parse(Scan(), CultureInfo.InvariantCulture); } public double NextDouble() { return isEOF ? Double.MinValue : Double.Parse(Scan(), CultureInfo.InvariantCulture); } public int[] ScanIntArray(int size) { var res = new int[size]; for (int i = 0; i < size; ++i) res[i] = NextInt(); return res; } public long[] ScanLongArray(int size) { var res = new long[size]; for (int i = 0; i < size; ++i) res[i] = NextLong(); return res; } public double[] ScanDoubleArray(int size) { var res = new double[size]; for (int i = 0; i < size; ++i) res[i] = NextDouble(); return res; } } }