Codeforces Round #668(Div. 2)(A~E题解)

Link!

A

倒过来输出。

B

对于每一个正数,计算出前面所有负数的和,如果这个正数不够用,答案加上正数减和的值。感觉不是很好解释,看代码吧。

#include<bits/stdc++.h>
#define int long long
#define N 100015
#define rep(i,a,n) for (int i=a;i<=n;i++)
#define per(i,a,n) for (int i=n;i>=a;i--)
#define inf 0x3f3f3f3f
#define pb push_back
#define mp make_pair
#define lowbit(i) ((i)&(-i))
#define VI vector<int>
using namespace std;
int t,n,a[N];
signed main(){
   
	//freopen(".in","r",stdin);
	//freopen(".out","w",stdout);
 	cin>>t;
 	while(t--){
   
 		cin>>n;
 		int sum = 0,ans = 0;
 		rep(i,1,n) cin>>a[i];
 		reverse(a+1,a+n+1);
 		rep(i,1,n){
   
 			if(a[i] > 0){
   
 				if(a[i] > sum) ans += a[i]-sum,sum = 0;
 				else sum -= a[i];
 			}else sum += -a[i];
 		}
 		cout << ans << endl;
 	}
	return 0;
}

C

注意到对于所有 i i i, s [ i ] = = s [ i + k ] s[i] == s[i+k] s[i]==s[i+k],先处理出这一部分,看是否有矛盾,如果没有,看前 k k k个是否合法。

#include<bits/stdc++.h>
#define ll long long
#define N 300015
#define rep(i,a,n) for (int i=a;i<=n;i++)
#define per(i,a,n) for (int i=n;i>=a;i--)
#define inf 0x3f3f3f3f
#define pb push_back
#define mp make_pair
#define lowbit(i) ((i)&(-i))
#define VI vector<int>
using namespace std;
int t,n,k,val[N];
char s[N];
void solve(){
   
	scanf("%d%d",&n,&k);
	scanf("%s",s+1);
    rep(i,1,n-k) if (s[i]!='?' && s[i+k]!='?' && s[i]!=s[i+k]) {
   puts("NO"); return;}
    rep(i,1,n-k) if (s[i]!=
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值