zoukankan      html  css  js  c++  java
  • 8-7 Unique Snowflakes UVA11572

    输入一个长度为n n<=10 6  的序列A  找到一个尽量长的连续子序列  使得该序列中没有相同的元素

    用滑动窗口法   时间复杂度n  好神奇

    此题非常经典

    map   410ms

    #include<bits/stdc++.h>
    using namespace std;
    #define N 100000000
    long  a[N];
    int main()
    {
       int cas;
       cin>>cas;
       while(cas--)
       {
           int n;cin>>n;
           for(int i=1;i<=n;i++)
              scanf("%ld",&a[i]);
           map<long,int>mp;
           mp.clear();
           int maxx=0;
           int j=1;
           for(int i=1;i<=n;i++)
             {
                int ok=1;
                 while(ok&&j<=n)
                 {
                     ok=0;
                     if(!mp[ a[j] ])
                     {
                         maxx=max(maxx,j-i+1);
                         mp[ a[j] ]++;
                         ok=1;
                     }
                     j++;
                 }
                 j--;
                 mp[ a[i] ]--;
             }
           printf("%d
    ",maxx);
       }
    }

    LRJ 的代码只用240!。。诶

    注意set的erase用法

    #include<bits/stdc++.h>
    using namespace std;
    #define N 100000000
    int a[N];
    int main()
    {
        int cas;cin>>cas;
        while(cas--)
        {
            int n;cin>>n;
            for(int i=0;i<n;i++)scanf("%d",&a[i]);
            set<int>s;
            int L=0,R=0;
            int ans=0;
            while(R<n)
            {
                while(R<n&&!s.count(a[R]))s.insert(a[R++]);
                ans=max(ans,R-L);
                s.erase( a[L++]);
            }
            printf("%d
    ",ans);
        }
    }
  • 相关阅读:
    程序猿节日快乐!
    Haxe UI框架StablexUI的使用备忘与心得(一)
    sudo fdisk -l
    Win7下硬盘安装fedora17
    盎司
    arm-linux工具
    GSM900TCP/UDP连接
    STC51几种简单的延时函数
    STC51六中中断配置点亮一个LED
    LCD1602小程序
  • 原文地址:https://www.cnblogs.com/bxd123/p/10425543.html
Copyright © 2011-2022 走看看