2023春ACM组队训练1

发布时间 2023-05-19 20:56:22作者: Qiansui

训练地址:训练一
具体代码见提交

B.明明的字符串

可见abc242E 求解小于等于一个字符串的回文串的个数
就是有一个小小的区别,一个判断是小于等于,一个是小于

	cin>>n>>k>>ss;
	rss=ss;
	ll l=ss.size(),sum=0,len=l;
	l=(l-1)/2;
	for(int i=0;i<=l;++i){
		rss[len-1-i]=rss[i];
		sum=(sum*k+ss[i]-'a')%mod;
	}
	sum=(sum+1)%mod;
	if(ss<=rss) sum=(sum+mod-1)%mod;
	cout<<sum<<'\n';

C.明明的涂色谜题

遍历判断四个角落的涂色情况,再判断题目给定的四条边的大小是否满足大小范围即可

D.古国的商人

考虑从后向前遍历,记下最大的卖出点时间点,这个时候我们只需要判断每天是否买入即可
另外就是得想想存不存在当天上午买入,下午卖出的情况
最终代码:

	ll n;
	pair<ll,ll> p[maxm];
	cin>>n;
	for(int i=1;i<=n;++i){
		cin>>p[i].first>>p[i].second;
	}
	ll ans=0,zc=0,zd;
	if(p[n].second>p[n].first){
		ans+=p[n].second-p[n].first;
	}
	zd=max(p[n].first,p[n].second);
	for(int i=n-1;i>=1;--i){
		zd=max(zd,p[i].second);
		zc=min(p[i].first,p[i].second);
		if(zc<zd) ans+=zd-zc;
		zd=max(zd,p[i].first);
	}
	cout<<ans<<'\n';