이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include "biscuits.h"
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef vector<ll> vll;
typedef vector<vll> vvll;
typedef vector<int> vi;
typedef vector<vi> vvi;
typedef pair<int, int> pi;
typedef pair<ll, ll> pll;
typedef vector<pi> vpi;
typedef vector<pll> vpll;
typedef vector<vpi> vvpi;
typedef vector<vpll> vvpll;
typedef vector<bool> vb;
typedef vector<vb> vvb;
typedef short int si;
typedef vector<si> vsi;
typedef vector<vsi> vvsi;
#define IOS ios_base::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr);
#define L(varll, mn, mx) for(ll varll = (mn); varll < (mx); varll++)
#define LR(varll, mx, mn) for(ll varll = (mx); varll > (mn); varll--)
#define LI(vari, mn, mx) for(int vari = (mn); vari < (mx); vari++)
#define LIR(vari, mx, mn) for(int vari = (mx); vari > (mn); vari--)
#define INPV(varvec) for(auto& varveci : (varvec)) cin >> varveci
#define fi first
#define se second
#define pb push_back
#define INF(type) numeric_limits<type>::max()
#define NINF(type) numeric_limits<type>::min()
#define TCASES int t; cin >> t; while(t--)
map<ll, ll> memo;
ll largest_p2(ll n) {
L(i, 0ll, 61ll) {
if((1ll << i) < n && n <= (1ll << (i + 1ll))) return i;
}
return 61ll;
}
ll dp(ll y, const vll& sdx) {
// cout << y << " " << i << "\n";
if(y <= 0ll) return 0ll;
ll i = largest_p2(y);
ll args = y;
if(memo.count(args) == 0ll) {
ll& ans = memo[args];
if(y == 1ll) {
ans = 1ll;
} else {
ans = dp(1ll << i, sdx) + dp(min(y, sdx[i] + 1ll) - (1ll << i), sdx);
}
}
return memo[args];
}
ll count_tastiness(ll x, vll a) {
memo.clear(); // ! CLEAR YOUR MEMOIZATION STATE BEFORE PROCEEDING
ll MAX_K = 61ll;
ll k = a.size();
for(ll i = 0ll; i < MAX_K - k; i++) {
a.pb(0ll);
}
for(ll i = 0ll; i < MAX_K - 1ll; i++) {
if(a[i] >= x + 2) {
ll excess = a[i] - x;
a[i + 1] += excess >> 1ll;
a[i] -= (excess >> 1ll) << 1ll;
}
}
vll sdx(MAX_K, 0ll);
ll s = 0ll;
L(i, 0ll, MAX_K) {
s += a[i] << i;
sdx[i] = s / x;
}
return dp(sdx[MAX_K - 1ll] + 1ll, sdx);
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |