您当前的位置: 首页 > 

*DDL_GzmBlog

暂无认证

  • 3浏览

    0关注

    605博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

(思维+两个夹一个) 牛客小白月赛33 G切圈圈

*DDL_GzmBlog 发布时间:2021-05-19 15:21:52 ,浏览量:3

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            
关注
打赏
1657615554
查看更多评论
0.0364s