Submission #352395

#TimeUsernameProblemLanguageResultExecution timeMemory
352395G_X_J비스킷 담기 (IOI20_biscuits)C++14
0 / 100
1213 ms1987200 KiB
#include <bits/stdc++.h>
#define rep(i,a,b) for(int i=a;i<=b;++i)
#define per(i,b,a) for(int i=b;i>=a;--i)
#define ll long long
#define vi vector<ll>
using namespace std;
unordered_map <ll, ll> mp;
ll dp(ll n, ll x, const vi &s)
{
    if(n <= 0) return 0;
    if(n == 1) return 1;
    if(mp.find(n)!=mp.end()) return mp[n];
    ll power = 1ll << (__lg(n));
    return mp[n] = dp(power, x, s) + dp(min(n, 1 + s[__lg(n)] / x) - power, x, s);
}
ll count_tastiness(ll x, vi a)
{
    mp.clear();
    rep(i,1,(int)(a.size()) - 1) a[i] = a[i - 1] + (1ll << i);//calculate s[i]
    while(a.size() <= 60) a.push_back(a.back());//a[i] is 0, so s[i] = s[i-1]
    return dp(1 + a.back(), x, a);
}//好jb短
#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...