本文主要是介绍Educational Codeforces Round 50 (Rated for Div. 2)D. Vasya and Arrays(前缀和),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题目链接:http://codeforces.com/contest/1036/problem/D
题意:给你两个序列,问是否可以转换(相邻相加)成两个相同的字符串,如果不可以输出 -1,如果可以问最大长度是多少。
思路:前缀和标记a数组,b数组统计贡献。
AC代码:
#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define IOS cin.tie(0); cout.tie(0); ios::sync_with_stdio(0);
const int inf = 0x3f3f3f3f;
const int N = 3e5+7;
ll n, s, q, a, r;
map <ll, ll> v;
int main()
{IOS; cin >> n;for(int i = 0; i < n; i ++)cin >> r, v[s += r]++;cin >> n;for(int i = 0; i < n; i ++)cin >> r, a += v[q += r];cout << ((q != s) ? -1 : a) << endl;
}
这篇关于Educational Codeforces Round 50 (Rated for Div. 2)D. Vasya and Arrays(前缀和)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!