竞赛讨论区 > D 题通过92%,de不出bug
头像
哈斯特_西艾斯一
发布于 2023-02-03 20:12 重庆
+ 关注

D 题通过92%,de不出bug

请问这个代码哪里有问题呢

#include <bits/stdc++.h>
using namespace std;
const int N = 1e5+5;
typedef long long ll;
//const int MOD=1000000007;
void get() {

	string s;
	cin>>s;
	ll len=s.size();
	vector<ll>pre(len+1,0),lat(len+1,0),d(len+1,0);
	ll cnt=0;
	for(int i=0;i<len;i++){

		pre[i]=cnt;
		if(s[i]=='u')cnt++;
	}
	
	cnt=0;
	for(int i=len-1;i>=0;i--){

		lat[i]=cnt;
		if(s[i]=='u')cnt++;
	}
	for(int i=0;i<len;i++){

		if(s[i]=='d'){
			d[i]=pre[i]*lat[i];
			//cout<<i<<' '<<d[i]<<endl;
		}
	}
	vector<ll> pre_ud(len,0),lat_du(len,0),u(len,0);
	for(int i=1;i<len;i++){

		pre_ud[i]=pre_ud[i-1];
		if(s[i]=='d')pre_ud[i]+=pre[i];
	}
	for(int i=len-2;i>=0;i--){

		lat_du[i]=lat_du[i+1];
		if(s[i]=='d')lat_du[i]+=lat[i];
	}
	for(int i=0;i<len;i++){
	
		if(s[i]=='u'){
			u[i]=pre_ud[i]+lat_du[i];
			//cout<<i<<' '<<u[i]<<endl;
		}
	}
	int pos=0,Max=0;
	for(int i=0;i<len;i++){

		if(s[i]=='u'&&u[i]>=Max) pos=i,Max=u[i];
		if(s[i]=='d'&&d[i]>=Max) pos=i,Max=d[i];
	}
    if(Max)s[pos]='a';
	cout<<s<<endl;
}

int main() {

    ios::sync_with_stdio(0);
    cin.tie(0);
	int T=1; 
	//cin>>T;
	while(T--) get();
	return 0;
}

全部评论

(3) 回帖
加载中...
话题 回帖

等你来战

查看全部

热门推荐