From e56d0ebcfdd74a74798f3f3ff59c322e2003bf28 Mon Sep 17 00:00:00 2001 From: subcrip Date: Wed, 20 Mar 2024 14:48:14 +0800 Subject: [PATCH] backup --- .../DLetterPicking/cpp.out | Bin 0 -> 50800 bytes .../DLetterPicking/input1 | 3 + .../DLetterPicking/input2 | 7 + .../DLetterPicking/output1 | 2 + .../DLetterPicking/output2 | 5 + .../DLetterPicking/solution.cpp | 320 ++++++++++++++++++ 6 files changed, 337 insertions(+) create mode 100755 Codeforces/EducationalCodeforcesRound135(RatedforDiv2)/DLetterPicking/cpp.out create mode 100644 Codeforces/EducationalCodeforcesRound135(RatedforDiv2)/DLetterPicking/input1 create mode 100644 Codeforces/EducationalCodeforcesRound135(RatedforDiv2)/DLetterPicking/input2 create mode 100644 Codeforces/EducationalCodeforcesRound135(RatedforDiv2)/DLetterPicking/output1 create mode 100644 Codeforces/EducationalCodeforcesRound135(RatedforDiv2)/DLetterPicking/output2 create mode 100644 Codeforces/EducationalCodeforcesRound135(RatedforDiv2)/DLetterPicking/solution.cpp diff --git a/Codeforces/EducationalCodeforcesRound135(RatedforDiv2)/DLetterPicking/cpp.out b/Codeforces/EducationalCodeforcesRound135(RatedforDiv2)/DLetterPicking/cpp.out new file mode 100755 index 0000000000000000000000000000000000000000..d9a84b10722231e0d19dfc9111094b4c48d8b501 GIT binary patch literal 50800 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 ap%6(`y9%9&n@r{Fe=0eywiU1?wf_gNV$AaZ literal 0 HcmV?d00001 diff --git a/Codeforces/EducationalCodeforcesRound135(RatedforDiv2)/DLetterPicking/input1 b/Codeforces/EducationalCodeforcesRound135(RatedforDiv2)/DLetterPicking/input1 new file mode 100644 index 0000000..46e3a71 --- /dev/null +++ b/Codeforces/EducationalCodeforcesRound135(RatedforDiv2)/DLetterPicking/input1 @@ -0,0 +1,3 @@ +2 +forces +abba diff --git a/Codeforces/EducationalCodeforcesRound135(RatedforDiv2)/DLetterPicking/input2 b/Codeforces/EducationalCodeforcesRound135(RatedforDiv2)/DLetterPicking/input2 new file mode 100644 index 0000000..a4e0aa0 --- /dev/null +++ b/Codeforces/EducationalCodeforcesRound135(RatedforDiv2)/DLetterPicking/input2 @@ -0,0 +1,7 @@ +5 + +ff +fe +ef +fefe +aaaa diff --git a/Codeforces/EducationalCodeforcesRound135(RatedforDiv2)/DLetterPicking/output1 b/Codeforces/EducationalCodeforcesRound135(RatedforDiv2)/DLetterPicking/output1 new file mode 100644 index 0000000..a23b009 --- /dev/null +++ b/Codeforces/EducationalCodeforcesRound135(RatedforDiv2)/DLetterPicking/output1 @@ -0,0 +1,2 @@ +Alice +Draw diff --git a/Codeforces/EducationalCodeforcesRound135(RatedforDiv2)/DLetterPicking/output2 b/Codeforces/EducationalCodeforcesRound135(RatedforDiv2)/DLetterPicking/output2 new file mode 100644 index 0000000..7289064 --- /dev/null +++ b/Codeforces/EducationalCodeforcesRound135(RatedforDiv2)/DLetterPicking/output2 @@ -0,0 +1,5 @@ +Draw +Alice +Alice +Alice +Draw diff --git a/Codeforces/EducationalCodeforcesRound135(RatedforDiv2)/DLetterPicking/solution.cpp b/Codeforces/EducationalCodeforcesRound135(RatedforDiv2)/DLetterPicking/solution.cpp new file mode 100644 index 0000000..2b23ce0 --- /dev/null +++ b/Codeforces/EducationalCodeforcesRound135(RatedforDiv2)/DLetterPicking/solution.cpp @@ -0,0 +1,320 @@ + +#pragma GCC optimize("Ofast") +///////////////////////////////////////////////////////// +/** + * Useful Macros + * by subcrip + * (requires C++17) + */ + +#include +using namespace std; + +/* macro helpers */ +#define __NARGS(...) std::tuple_size::value +#define __DECOMPOSE_S(a, x) auto x = a; +#define __DECOMPOSE_N(a, ...) auto [__VA_ARGS__] = a; +constexpr void __() {} +#define __AS_PROCEDURE(...) __(); __VA_ARGS__; __() +#define __as_typeof(container) decltype(container)::value_type + +/* type aliases */ +using ll = int64_t; +using ull = uint64_t; +using pii = pair; +using pil = pair; +using pli = pair; +using pll = pair; + +/* constants */ +constexpr int INF = 0x3f3f3f3f; +constexpr ll INFLL = 0x3f3f3f3f3f3f3f3fLL; +constexpr ll MDL = 1e9 + 7; +constexpr ll PRIME = 998'244'353; +constexpr ll MDL1 = 8784491; +constexpr ll MDL2 = PRIME; + +/* random */ + +mt19937 rd(chrono::duration_cast(chrono::system_clock::now().time_since_epoch()).count()); + +/* bit-wise operations */ +#define lowbit(x) ((x) & -(x)) +#define popcount(x) (__builtin_popcountll(ll(x))) +#define parity(x) (__builtin_parityll(ll(x))) +#define msp(x) (63LL - __builtin_clzll(ll(x))) +#define lsp(x) (__builtin_ctzll(ll(x))) + +/* arithmetic operations */ +#define mod(x, y) ((((x) % (y)) + (y)) % (y)) + +/* fast pairs */ +#define upair ull +#define umake(x, y) (ull(x) << 32 | (ull(y) & ((1ULL << 32) - 1))) +#define u1(p) ((p) >> 32) +#define u2(p) ((p) & ((1ULL << 32) - 1)) +#define ult std::less +#define ugt std::greater + +#define ipair ull +#define imake(x, y) (umake(x, y)) +#define i1(p) (int(u1(ll(p)))) +#define i2(p) (ll(u2(p) << 32) >> 32) +struct ilt { + bool operator()(const ipair& a, const ipair& b) const { + if (i1(a) == i1(b)) return i2(a) < i2(b); + else return i1(a) < i1(b); + } +}; +struct igt { + bool operator()(const ipair& a, const ipair& b) const { + if (i1(a) == i1(b)) return i2(a) > i2(b); + else return i1(a) > i1(b); + } +}; + +/* conditions */ +#define loop while (1) +#define if_or(var, val) if (!(var == val)) var = val; else +#define continue_or(var, val) __AS_PROCEDURE(if (var == val) continue; var = val;) +#define break_or(var, val) __AS_PROCEDURE(if (var == val) break; var = val;) + +/* hash */ +struct safe_hash { + // https://codeforces.com/blog/entry/62393 + static uint64_t splitmix64(uint64_t x) { + // http://xorshift.di.unimi.it/splitmix64.c + x += 0x9e3779b97f4a7c15; + x = (x ^ (x >> 30)) * 0xbf58476d1ce4e5b9; + x = (x ^ (x >> 27)) * 0x94d049bb133111eb; + return x ^ (x >> 31); + } + + size_t operator()(uint64_t x) const { + static const uint64_t FIXED_RANDOM = chrono::steady_clock::now().time_since_epoch().count(); + return splitmix64(x + FIXED_RANDOM); + } +}; + +struct pair_hash { + template + size_t operator()(const pair& a) const { + auto hash1 = safe_hash()(a.first); + auto hash2 = safe_hash()(a.second); + if (hash1 != hash2) { + return hash1 ^ hash2; + } + return hash1; + } +}; + +/* build data structures */ +#define unordered_counter(from, to) __AS_PROCEDURE(unordered_map<__as_typeof(from), size_t, safe_hash> to; for (auto&& x : from) ++to[x];) +#define counter(from, to, cmp) __AS_PROCEDURE(map<__as_typeof(from), size_t, cmp> to; for (auto&& x : from) ++to[x];) +#define pa(a) __AS_PROCEDURE(__typeof(a) pa; pa.push_back({}); for (auto&&x : a) pa.push_back(pa.back() + x);) +#define sa(a) __AS_PROCEDURE(__typeof(a) sa(a.size() + 1); {int n = a.size(); for (int i = n - 1; i >= 0; --i) sa[i] = sa[i + 1] + a[i];};) +#define adj(ch, n) __AS_PROCEDURE(vector> ch((n) + 1);) +#define edge(ch, u, v) __AS_PROCEDURE(ch[u].push_back(v), ch[v].push_back(u);) +#define Edge(ch, u, v) __AS_PROCEDURE(ch[u].push_back(v);) +template pair> discretize(Iterator __first, Iterator __last) { + set st(__first, __last); + size_t N = 0; + map mp; + for (auto&& x : st) mp[x] = ++N; + return {N, mp}; +} +template pair> unordered_discretize(Iterator __first, Iterator __last) { + set st(__first, __last); + size_t N = 0; + unordered_map mp; + for (auto&& x : st) mp[x] = ++N; + return {N, mp}; +} + +/* io */ +#define untie __AS_PROCEDURE(ios_base::sync_with_stdio(0), cin.tie(NULL)) +template void __read(T& x) { cin >> x; } +template void __read(T& x, U&... args) { cin >> x; __read(args...); } +#define read(type, ...) __AS_PROCEDURE(type __VA_ARGS__; __read(__VA_ARGS__);) +#define readvec(type, a, n) __AS_PROCEDURE(vector a(n); for (int i = 0; i < (n); ++i) cin >> a[i];) +#define putvec(a) __AS_PROCEDURE(for (auto&& x : a) cout << x << ' '; cout << endl;) +#define debug(x) __AS_PROCEDURE(cerr << #x" = " << (x) << endl;) +#define debugvec(a) __AS_PROCEDURE(cerr << #a" = "; for (auto&& x : a) cerr << x << ' '; cerr << endl;) +template ostream& operator<<(ostream& out, const pair& p) { + out << "{" << p.first << ", " << p.second << "}"; + return out; +} +template +void print_tuple_impl(std::basic_ostream& os, const Tuple& t, std::index_sequence) { + using swallow = int[]; // guaranties left to right order + (void)swallow { 0, (void(os << (Index == 0 ? "" : ", ") << std::get(t)), 0)... }; +} +template +decltype(auto) operator<<(std::basic_ostream& os, const std::tuple& t) { + os << "{"; + print_tuple_impl(os, t, std::index_sequence_for{}); + return os << "}"; +} +template ostream& operator<<(ostream& out, const vector& vec) { + for (auto&& i : vec) out << i << ' '; + return out; +} + +/* pops */ +#define poptop(q, ...) __AS_PROCEDURE(auto [__VA_ARGS__] = q.top(); q.pop();) +#define popback(q, ...) __AS_PROCEDURE(auto [__VA_ARGS__] = q.back(); q.pop_back();) +#define popfront(q, ...) __AS_PROCEDURE(auto [__VA_ARGS__] = q.front();q.pop_front();) + +/* math */ +constexpr inline int lg2(ll x) { return x == 0 ? -1 : sizeof(ll) * 8 - 1 - __builtin_clzll(x); } + +void __exgcd(ll a, ll b, ll& x, ll& y) { + if (b == 0) { + x = 1, y = 0; + return; + } + __exgcd(b, a % b, y, x); + y -= a / b * x; +} + +ll inverse(ll a, ll b) { + ll x, y; + __exgcd(a, b, x, y); + return mod(x, b); +} + +/* string algorithms */ +vector calc_next(string t) { // pi function of t + int n = (int)t.length(); + vector pi(n); + for (int i = 1; i < n; i++) { + int j = pi[i - 1]; + while (j > 0 && t[i] != t[j]) j = pi[j - 1]; + if (t[i] == t[j]) j++; + pi[i] = j; + } + return pi; +} +vector calc_z(string t) { // z function of t + int m = t.length(); + vector z; + z.push_back(m); + pair prev = {1, -1}; + for (int i = 1; i < m; ++i) { + if (z[i - prev.first] + i <= prev.second) { + z.push_back(z[i - prev.first]); + } else { + int j = max(i, prev.second + 1); + while (j < m && t[j] == t[j - i]) ++j; + z.push_back(j - i); + prev = {i, j - 1}; + } + } + return z; +} +vector kmp(string s, string t) { // find all t in s + string cur = t + '#' + s; + int sz1 = s.size(), sz2 = t.size(); + vector v; + vector lps = calc_next(cur); + for (int i = sz2 + 1; i <= sz1 + sz2; i++) { + if (lps[i] == sz2) v.push_back(i - 2 * sz2); + } + return v; +} +int period(string s) { // find the length of shortest recurring period + int n = s.length(); + auto z = calc_z(s); + for (int i = 1; i <= n / 2; ++i) { + if (n % i == 0 && z[i] == n - i) { + return i; + } + } + return n; +} +///////////////////////////////////////////////////////// + +// #define SINGLE_TEST_CASE +// #define DUMP_TEST_CASE 512 + +void dump() {} + +void prep() {} + +void solve() { + read(string, a); + int n = a.size(); + vector> dp(n, vector(n)); + auto check = [&] (int alice_now, int bob_now, int sub) -> pii { + int alice_enable = 0, draw_enable = 0; + if (alice_now < bob_now) { + if (sub >= 0) alice_enable += 1; + } else if (alice_now == bob_now) { + if (sub == 1) alice_enable += 1; + if (sub == 0) draw_enable += 1; + } else { + if (sub == 1) alice_enable += 1; + } + return {alice_enable, draw_enable}; + }; + for (int i = n - 1; ~i; --i) { + for (int j = i + 1; j < n; ++j) { + if ((j - i) % 2 == 0) continue; + // alice: left, bob: left + if (j == i + 1) { + if (a[i] == a[j]) dp[i][j] = 0; + else dp[i][j] = 1; + continue; + } + int alice_enable = 0, draw_enable = 0; + auto [a1, d1] = check(a[i], a[i + 1], dp[i + 2][j]); + auto [a2, d2] = check(a[i], a[j], dp[i + 1][j - 1]); + if (a1 | a2) { + if (d1 | d2) draw_enable = 1; + else alice_enable = 1; + } else { + if (d1 | d2) draw_enable = 1; + } + auto [a3, d3] = check(a[j], a[i], dp[i + 1][j - 1]); + auto [a4, d4] = check(a[j], a[j - 1], dp[i][j - 2]); + if (a3 | a4) { + if (d3 | d4) draw_enable = 1; + else alice_enable = 1; + } else { + if (d3 | d4) draw_enable = 1; + } + if (alice_enable) dp[i][j] = 1; + else if (draw_enable) dp[i][j] = 0; + else dp[i][j] = -1; + } + } + // debugvec(dp); + if (dp[0][n - 1] == 1) { + cout << "Alice\n"; + } else if (dp[0][n - 1] == 0) { + cout << "Draw\n"; + } else { + cout << "Bob\n"; + } +} + +int main() { + untie, cout.tie(NULL); + prep(); +#ifdef SINGLE_TEST_CASE + solve(); +#else + read(int, t); + for (int i = 0; i < t; ++i) { +#ifdef DUMP_TEST_CASE + if (i + 1 == (DUMP_TEST_CASE)) { + dump(); + } else { + solve(); + } +#else + solve(); +#endif + } +#endif +}