求助abc303D
  • 板块学术版
  • 楼主Cure_Wing
  • 当前回复20
  • 已保存回复20
  • 发布时间2023/5/27 21:49
  • 上次更新2023/10/23 14:32:34
查看原帖
求助abc303D
394167
Cure_Wing楼主2023/5/27 21:49

dp,WA了4个点,不知道哪里错了。

#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#define int long long
using std::cin;using std::cout;
constexpr int N=300005;
int n,x,y,z,f[N][2];
std::string s;
signed main(){
// 	freopen(".in","r",stdin);
// 	freopen(".out","w",stdout);
	std::ios::sync_with_stdio(false);
	cin.tie(nullptr);cout.tie(nullptr);
	cin>>x>>y>>z>>s;n=s.size();s=" "+s;f[0][1]=1e18;
	for(int i=1;i<=n;++i){
		if(s[i]=='A'){
			f[i][0]=std::min(f[i-1][0]+y,f[i-1][1]+x+z);
			f[i][1]=std::min(f[i-1][0]+x+z,f[i-1][1]+x);
		}else if(s[i]=='a'){
			f[i][0]=std::min(f[i-1][0]+x,f[i-1][1]+x+z);
			f[i][1]=std::min(f[i-1][0]+x+z,f[i-1][1]+y);
		}
	}
//	for(int i=1;i<=n;++i) cout<<f[i][0]<<(i==n?'\n':' ');
//	for(int i=1;i<=n;++i) cout<<f[i][1]<<(i==n?'\n':' ');
	cout<<std::min(f[n][0],f[n][1]);
    return 0;
}
2023/5/27 21:49
加载中...