Submission #1004020

#TimeUsernameProblemLanguageResultExecution timeMemory
1004020De3b0oCopy and Paste 3 (JOI22_copypaste3)C++14
6 / 100
8 ms476 KiB
#include<bits/stdc++.h> #define ll long long #define F first #define S second #define in insert #define pb push_back #define ppb pop_back() #define d3 ios::sync_with_stdio(0);cin.tie(0);cout.tie(0); #define cans cout << ans << "\n"; #define yes cout << "Yes" << "\n"; #define no cout << "No" << "\n"; #define pll pair<ll,ll> #define lin cout << "\n"; #define sqr 340 #define mod 1000000007 #define mid ((l+r)/2) #define lc (2*x) #define rc (2*x+1) using namespace std; ll n , A , B , C; string s; ll ans; ll dp[2509]; ll solve(ll x) { if(dp[x]) return dp[x]; ll mn = x*A; for(int i = 1 ; x>i ; i++) { ll ans1 = solve(i) + B + (x/i)*C + solve(x%i); mn=min(ans1,mn); } dp[x]=mn; return dp[x]; } int main() { d3 cin >> n; cin >> s; cin >> A >> B >> C; /*ll p; for(int i = 0 ; 12>i ; i++) { ll x = (1<<i); if(x>n) break; if(i==0) { ll ans1 = A+B + n*C; ans=min(ans1,ans); p=A; continue; } ll ans1; ll c = min(p+B+2*C,p+A*(x/2)); ans1 = c + B + (n/x)*C; ans1 += n%x * A; ans=min(ans,ans1); p=c; }*/ solve(n); ans=dp[n]; if(n==3) { ans=3*A; if(s[0]==s[1]&&s[1]==s[2]) ans=min(ans,A+B+3*C); else if(s[0]==s[1]||s[1]==s[2]||s[0]==s[2]) ans=min(ans,2*A+B+2*C); } cans }
#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...
#Verdict Execution timeMemoryGrader output
Fetching results...