JOJ2519 Find the longest section(位元運算 +(首碼和?))

來源:互聯網
上載者:User
找一個最長字串區間,滿足裡面每個字母出現的次數為偶數巧妙的利用了位元運算的性質將所有的狀態存在一個整數裡,位元的每位是0 1 分別表示字母出現的偶 奇次,在利用首碼和
#include <cstdio>#include <string.h>#include <algorithm>using std::sort;const int maxn=10005;char str[105];int cnt[maxn];int pin[maxn];int assist[maxn];bool cmp(int a,int b){    if(cnt[a]!=cnt[b])return cnt[a]<cnt[b];    return a<b;}int main (){    int n,i,j;    int start , end , maxl , tmpl,s,e;    while (~scanf("%d",&n))    {        memset (cnt,0,sizeof(cnt));        pin[0]=0;        for (i=1 ; i<=n ; ++i)        {            scanf("%s",str);            int len =strlen (str);            cnt[i]^=cnt[i-1];             for (j=0 ; j<len ; ++j)            {                cnt[i]^=(1<<(str[j]-'a'));                //printf("%d  ",cnt[i]);            }            pin[i]=i;            assist[i]=i;        }        sort(assist , assist+n+1 , cmp);        start=end=0;maxl=0;        for (i=1 ; i<=n ; ++i)        {            //printf("%o  ",cnt[i]);            if(cnt[assist[i]]==cnt[assist[i-1]])            {                tmpl=pin[assist[i]]-pin[assist[i-1]];                //printf("t=%d  %d  %d\n",tmpl,assist[i],assist[i-1]);                if(maxl<tmpl)                {                    start=pin[assist[i-1]];                    end=pin[assist[i]];                    maxl=tmpl;                }                pin[assist[i]]=pin[assist[i-1]];            }        }        if(start || end )printf("%d %d\n" ,start+1,end);        else printf("No one\n");    }    return 0;}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.