https://ac.nowcoder.com/acm/contest/11210/G
思路需要处理 环 和 数组和部分之和为 0的问题 易想到 前缀和+ 开二倍长度数组 处理 考虑时间复杂度是On^2 会被卡死 所以我们需要换一种做法 因此经过思考 不难发现 -----------------处理区间和------------------- 我们可以每次都将 区间 的前i项和 进行处理 并且映射,如果对于这种区间存在重复 那么就说明存在一个区间是总和为0的 所以区间和的问题就可以通过映射来处理, 即两个前缀相同的区间 中间存在一个和为0的区间 -----------------处理区间和------------------- -----------------处理环问题------------------- 因为题目中的关键句 “保证数组元素之和为零” 因此环问题, 我们不难发现 其实只需要考虑首尾是否的和是否为0即可 但是我们其实在处理区间和的时候 我们就已经可以把首尾这种情况给安排上了 只需要对答案进行++即可
Code:#include
using namespace std;
map mp;
int main()
{
int t;
cin>>t;
while(t -- )
{
int n;
cin>>n;
int m = 0;
int ans = 0;
mp.clear();
for(int i=1;i>x;
m+=x;
mp[m]++;
ans=max(ans,mp[m]);
}
cout
关注
打赏