NC232578. 玄神的字符串
描述
输入描述
第一行包括一个仅由数字0和数字1构成的字符串s,s的长度不超过,保证s的长度为偶数
第二行包括三个整数a、b、c,分别代表上述三种操作的代价。保证
输出描述
输出包括一个整数,表示删除该字符串的最小代价
示例1
输入:
0110011001 3 4 5
输出:
15
示例2
输入:
0110011001 10 2 3
输出:
13
C++ 解法, 执行用时: 5ms, 内存消耗: 532K, 提交时间: 2022-01-17 17:13:06
#include<bits/stdc++.h> using namespace std; int main(){ string s;cin>>s; int on=0,ze=0,n=s.size(); for(int i=0;i<n;i++) if(s[i]=='0') ze++;else on++; int a,b,c;cin>>a>>b>>c; a=min(a,b+c); b=min(b,a+c); int ans=min(on,ze)/2*2*min(a,b)+min(on,ze)%2*a+abs(on-ze)/2*b; cout<<ans<<endl; }
Python3 解法, 执行用时: 40ms, 内存消耗: 5040K, 提交时间: 2022-01-16 16:00:06
s = list(input()) a,b,c = map(int,input().split()) d = s.count('0') f = s.count('1') if a < b: sumn = min(d,f)*a last = max(d,f) - min(d,f) sumn += min(b,a+c)*last//2 else: sumn = (d//2+f//2)*b if d%2 == 1: sumn += min(b+c,a) print(sumn)