求助usaco 2021-2022 dec bronze 第一题
  • 板块学术版
  • 楼主shimao
  • 当前回复1
  • 已保存回复1
  • 发布时间2021/12/26 22:43
  • 上次更新2023/10/28 13:31:12
查看原帖
求助usaco 2021-2022 dec bronze 第一题
312121
shimao楼主2021/12/26 22:43

代码如下

#include<bits/stdc++.h>
using namespace std;
long long n;string s;
vector<pair<char,long long> > run_len;
void run_len_code(string s){
	long long len=1;
	for(long long i=0;i<s.size();i++){
		if(s[i]!=s[i+1]){
			run_len.push_back(make_pair(s[i],len));
			len=1;
		}
		else len++;
	}
}
int main()
{
	cin>>n>>s;
	run_len_code(s);
	for(long long i=0;i<run_len.size();i++)
		cout<<run_len[i].first<<run_len[i].second<<"\n";
	long long ans=0;
	for(long long i=1;i<run_len.size()-1;i++){
		long long lhs=max(run_len[i-1].second-1,0ll),rhs=max(run_len[i+1].second-1,0ll);
		ans+=lhs*rhs+max(lhs-1, 0ll) + max(rhs-1,0ll);
	}
	cout<<ans;
	return 0;
}

样例都过不去

2021/12/26 22:43
加载中...