Submission #69074
ソースコード
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 | /* #region header */ #include <bits/stdc++.h> using namespace std; using ll = long long ; #define rep(i, n) for(int i = 0;i < (int)(n);++i) #define MS(x) memset((x), -1, sizeof((x))) #define ALL(x) x.begin(), x.end() template < class T> bool chmax(T &a, const T &b) { if (a<b) { a=b; return 1; } return 0; } template < class T> bool chmin(T &a, const T &b) { if (b<a) { a=b; return 1; } return 0; } bool is_npos(string::size_type x) { return x == string::npos; } using PI = pair< int , int >; template < class T>ostream &operator<<(ostream &os, const vector<T>&v){ if (v.size() > 0){ os << v[0]; for ( int i = 1;i < v.size();i++) os << " " << v[i]; } return os; } /* #endregion */ #define MOD 998244353 template <int64_t mod> struct Modint{ int64_t val; Modint(): val(0) {} Modint(int64_t x) : val(x >= 0 ? x % mod : (mod - (-x) % mod) % mod) {} Modint inv(){ return pow (mod-2); } Modint &operator+=( const Modint &x){ if ((val += x.val) >= mod) val -= mod; return * this ; } Modint &operator-=( const Modint &x){ if ((val -= x.val) < 0) val += mod; return * this ; } Modint &operator*=( const Modint &x){ val = (val * x.val) % mod; return * this ; } Modint &operator/=( const Modint &x){ val = (val * x.inv().val) % mod; return * this ; } Modint operator-() const noexcept{ return Modint(-val); } Modint operator+( const Modint &x) const noexcept{ return Modint(* this ) += x; } Modint operator-( const Modint &x) const noexcept{ return Modint(* this ) -= x; } Modint operator*( const Modint &x) const noexcept{ return Modint(* this ) *= x; } Modint operator/( const Modint &x) const noexcept{ return Modint(* this ) /= x; } Modint operator+( const int &x) const noexcept{ return Modint(* this ) += x; } Modint operator-( const int &x) const noexcept{ return Modint(* this ) -= x; } Modint operator*( const int &x) const noexcept{ return Modint(* this ) *= x; } Modint operator/( const int &x) const noexcept{ return Modint(* this ) /= x; } Modint operator++( int ) { if ((++val)==mod) val = 0; return * this ; } Modint operator--( int ) { if ((++val)==mod) val = 0; return * this ; } friend ostream& operator<<(ostream &os, Modint x) noexcept { os << x.val; return os; } friend istream& operator>>(istream &is, Modint &x) noexcept { int64_t t; is >> t; x = Modint<mod>(t); return is; } Modint pow_e(int64_t n){ Modint mul(val); Modint vtmp(1); while (n > 0){ if (n & 1) vtmp *= mul; mul *= mul; n >>= 1; } return (* this = vtmp); } Modint pow (int64_t n) { return Modint(* this ).pow_e(n); } static int64_t get_mod() { return mod; } operator int () const { return ( int )val; } }; using mint = Modint<MOD>; int n; int a[210]; int memo[210][2][40010]; mint dp( int i, int sum){ if (i == n){ return sum == 0; } if (~memo[i][sum >= 0][ abs (sum)]) return memo[i][sum >= 0][ abs (sum)]; mint ans = dp(i+1, sum+a[i]) + dp(i+1, sum-a[i]); return memo[i][sum >= 0][ abs (sum)] = ans; } int main(){ cin >> n; rep(i, n){ cin >> a[i]; } MS(memo); cout << dp(0, 0) << endl; return 0; } |
ステータス
項目 | データ |
---|---|
問題 | 1529 - Red Black Balls |
ユーザー名 | ei1719 |
投稿日時 | 2021-12-05 23:42:43 |
言語 | C++14 |
状態 | Accepted |
得点 | 3 |
ソースコード長 | 3153 Byte |
最大実行時間 | 74 ms |
最大メモリ使用量 | 66488 KB |
セット
セット | 得点 | Cases | |
---|---|---|---|
1 | ALL | 3 / 3 | * |
テストケース
ファイル名 | 状態 | 実行時間 | メモリ使用量 | # |
---|---|---|---|---|
in01.txt | AC | 50 ms | 66268 KB |
1
|
in02.txt | AC | 28 ms | 66132 KB |
1
|
in03.txt | AC | 28 ms | 66132 KB |
1
|
in04.txt | AC | 31 ms | 66132 KB |
1
|
in05.txt | AC | 32 ms | 66128 KB |
1
|
in06.txt | AC | 32 ms | 66252 KB |
1
|
in07.txt | AC | 41 ms | 66248 KB |
1
|
in08.txt | AC | 29 ms | 66116 KB |
1
|
in09.txt | AC | 40 ms | 66244 KB |
1
|
in10.txt | AC | 52 ms | 66240 KB |
1
|
in11.txt | AC | 31 ms | 66108 KB |
1
|
in12.txt | AC | 38 ms | 66100 KB |
1
|
in13.txt | AC | 51 ms | 66096 KB |
1
|
in14.txt | AC | 34 ms | 66216 KB |
1
|
in15.txt | AC | 46 ms | 66208 KB |
1
|
in16.txt | AC | 47 ms | 66204 KB |
1
|
in17.txt | AC | 37 ms | 66196 KB |
1
|
in18.txt | AC | 29 ms | 66192 KB |
1
|
in19.txt | AC | 49 ms | 66188 KB |
1
|
in20.txt | AC | 48 ms | 66184 KB |
1
|
in21.txt | AC | 30 ms | 66304 KB |
1
|
in22.txt | AC | 41 ms | 66420 KB |
1
|
in23.txt | AC | 29 ms | 66284 KB |
1
|
in24.txt | AC | 43 ms | 66400 KB |
1
|
in25.txt | AC | 34 ms | 66396 KB |
1
|
in26.txt | AC | 67 ms | 66392 KB |
1
|
in27.txt | AC | 69 ms | 66384 KB |
1
|
in28.txt | AC | 74 ms | 66372 KB |
1
|
in29.txt | AC | 30 ms | 66368 KB |
1
|
in30.txt | AC | 47 ms | 66236 KB |
1
|
in31.txt | AC | 60 ms | 66360 KB |
1
|
in32.txt | AC | 30 ms | 66488 KB |
1
|
in33.txt | AC | 30 ms | 66480 KB |
1
|
in34.txt | AC | 53 ms | 66476 KB |
1
|
in35.txt | AC | 56 ms | 66464 KB |
1
|
in36.txt | AC | 57 ms | 66464 KB |
1
|
in37.txt | AC | 32 ms | 66456 KB |
1
|
in38.txt | AC | 34 ms | 66452 KB |
1
|
in39.txt | AC | 31 ms | 66448 KB |
1
|
in40.txt | AC | 32 ms | 66440 KB |
1
|
sample01.txt | AC | 37 ms | 66440 KB |
1
|
sample02.txt | AC | 32 ms | 66432 KB |
1
|