Submission #836232

#TimeUsernameProblemLanguageResultExecution timeMemory
836232maomao90Packing Biscuits (IOI20_biscuits)C++17
42 / 100
26 ms16364 KiB
// I can do all things through Christ who strengthens me // Philippians 4:13 #include "biscuits.h" #include <bits/stdc++.h> using namespace std; #define REP(i, j, k) for (int i = j; i < (k); i++) #define RREP(i, j, k) for (int i = j; i >= (k); i--) template <class T> inline bool mnto(T &a, const T b) {return a > b ? a = b, 1 : 0;} template <class T> inline bool mxto(T &a, const T b) {return a < b ? a = b, 1 : 0;} typedef long long ll; typedef long double ld; #define FI first #define SE second typedef pair<int, int> ii; typedef pair<ll, ll> pll; #define ALL(x) x.begin(), x.end() #define SZ(x) (int) x.size() #define pb push_back typedef vector<int> vi; typedef vector<ll> vll; typedef vector<ii> vii; typedef tuple<int, int, int> iii; typedef vector<iii> viii; #ifndef DEBUG #define cerr if (0) cerr #endif const int INF = 1000000005; const ll LINF = 1000000000000000005; const int MAXK = 62; int k; ll x; vll a; ll dp[MAXK][100005]; ll count_tastiness(ll _x, vll _a) { x = _x; a = _a; k = SZ(a); ll sm = 0; REP (i, 0, k) { sm += a[i] << i; } if (sm == 0 || x > 1e5) { return 1; } k = 64 - __builtin_clzll(sm); a.resize(k, 0); REP (i, 0, k) { if (a[i] < x) { continue; } ll ex = (a[i] - x) / 2; if (i + 1 == k) { assert(ex == 0); break; } a[i] -= ex * 2; a[i + 1] += ex; } REP (i, 0, k) { cerr << i << ": " << a[i] << '\n'; } dp[0][0] = 1; REP (i, 1, k + 1) { REP (j, 0, x + 1) { dp[i][j] = 0; } REP (j, 0, x + 1) { int ta = a[i - 1] + j; dp[i][ta / 2] += dp[i - 1][j]; if (ta >= x) { dp[i][(ta - x) / 2] += dp[i - 1][j]; } } } return dp[k][0]; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...