给你一个01串 x是反转任意子串的代价 y是将子串全部取相反的代价 问全部变成1的最小代价
两种可能 一种把1全部放到一边 然后把剩下的0变成1 要么把所有的 0 直接变成1
#include<bits/stdc++.h> using namespace std; #define LL long long int main(){ LL n,x,y; string a; cin>>n>>x>>y>>a; ; LL s=,s1=; ;j<a.size();j++){ '&&fa) continue; ){ s++; fa=; }; } LL l=a.size(); LL ans=; ]==]=='){ s1=s+; ans=x*s; }]==]==]==]=='){ s1=s; ans=x*(max(1LL*,s-)); }]==]=='){ s1=max(1LL*,s-); ans=x*(max(1LL*,s-)); } ans+=y; ans=min(ans,y*s1); cout<<ans<<endl; }
打表? 问 n个字符 能组成几个数
#include<bits/stdc++.h> using namespace std; #define LL long long ]={,,,,,,,,,,,}; int main() { LL n; scanf("%lld",&n); ) printf("%d\n",ans[n]); +(n-)*); ; }