题目链接: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;
}