zoukankan      html  css  js  c++  java
  • 牛客练习赛3 贝伦卡斯泰露——队列&&爆搜

    题目

    链接

    题意:给出一个长度为 $n$ 的数列 $A_i$,问是否能将这个数列分解为两个长度为n/2的子序列,满足:

    • 两个子序列不互相重叠(是值不能有共同元素,但位置可以交错)。
    • 两个子序列中的数要完全一样,{1, 2} = {1, 2},{1, 2} ≠ {2, 1}。

    分析

    用两个队列,正反扫一边这n个数,如何可以抵消,就弹出队首,否则就进队。时间复杂度 $O(n)$

    #include<bits/stdc++.h>
    using namespace std;
    
    int T,n,a[100005];
    queue<int>q,p;
    
    int main()
    {
        scanf("%d",&T);
        while(T--)
        {
            scanf("%d",&n);
            for(int i=1;i<=n;i++)scanf("%d",&a[i]);
            while(!q.empty())  q.pop();
            while(!p.empty())  p.pop();
            for(int i=1;i<=n;i++)
            {
                if(q.empty())q.push(a[i]);
                else if(q.front()!=a[i])q.push(a[i]);
                else q.pop();
            }
            for(int i=n;i>0;i--)
            {
                if(p.empty()) p.push(a[i]);
                else if(p.front()!=a[i]) p.push(a[i]);
                else p.pop();
            }
            if(q.empty()||p.empty()) puts("Frederica Bernkastel");
            else puts("Furude Rika");
        }
        return 0;
    }

    能AC,可能是数据太水,(37  26  26  27  26  26  36   26  26  36)这组其实是能分解的,上面的代码就不能。爆搜才是正解吧?

    参考链接:https://ac.nowcoder.com/discuss/172020

  • 相关阅读:
    rs
    stm32f767 usoc3
    stm32f767 RTT 日志
    stm32f767 标准库 工程模板
    stm32f767 HAL 工程模板
    docker tab 补全 linux tab 补全
    docker anconda 依赖 下载 不了
    docker run 常用 指令
    linux scp 命令
    Dockerfile 常用参数说明
  • 原文地址:https://www.cnblogs.com/lfri/p/11191403.html
Copyright © 2011-2022 走看看