日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

BZOJ 1640: [Usaco2007 Nov]Best Cow Line 队列变换

發布時間:2025/3/15 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 BZOJ 1640: [Usaco2007 Nov]Best Cow Line 队列变换 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Description

FJ打算帶著他可愛的N (1 ≤ N ≤ 2,000)頭奶牛去參加”年度最佳老農”的比賽.在比賽中,每個農夫把他的奶牛排成一列,然后準備經過評委檢驗. 比賽中簡單地將奶牛的名字縮寫為其頭字母(the initial letter of every cow),舉個例子,FJ帶了Bessie, Sylvia,和Dora,那么就可以縮寫為BSD. FJ只需將奶牛的一個序列重新排列,然后參加比賽.他可以讓序列中的第一頭奶牛,或者最后一頭走出來,站到新隊列的隊尾. 利欲熏心的FJ為了取得冠軍,他就必須使新隊列的字典序盡量小. 給你初始奶牛序列(用頭字母)表示,然后按照上述的規則組成新序列,并使新序列的字典序盡量小.

Input

第1行:一個整數N.

第2行至第N+1行:每行一個大寫字母,表示初始序列中該奶牛的頭字母.

Output

得到的最小字典序的序列.每輸出80個字母需要一個換行!

題解:

將該串后面加一個特殊字符后將原串翻轉接到后面,求這個新串的后綴數組、rank數組,就可以O(1)快速比較是從后面取較優還是從前面取較優。

貪心取即可。

代碼:

#include<iostream> #include<cstdio> #include<algorithm> #include<cstring>//by zrt //problem: using namespace std; typedef long long LL; const int inf(0x3f3f3f3f); const double eps(1e-9); char s[60005]; int n,m; const int MAXN=60005; int sa[MAXN],t[MAXN],t2[MAXN],c[MAXN],rank[MAXN]; void build_sa(int m){int *x=t,*y=t2;for(int i=0;i<m;i++) c[i]=0;for(int i=0;i<n;i++) c[x[i]=s[i]]++;for(int i=1;i<m;i++) c[i]+=c[i-1];for(int i=n-1;i>=0;i--) sa[--c[x[i]]]=i;for(int k=1;k<=n;k<<=1){int p=0;for(int i=n-k;i<n;i++) y[p++]=i;for(int i=0;i<n;i++) if(sa[i]>=k) y[p++]=sa[i]-k;for(int i=0;i<m;i++) c[i]=0;for(int i=0;i<n;i++) c[x[y[i]]]++;for(int i=1;i<m;i++) c[i]+=c[i-1];for(int i=n-1;i>=0;i--) sa[--c[x[y[i]]]]=y[i];swap(x,y);p=1;x[sa[0]]=0;for(int i=1;i<n;i++){x[sa[i]]=y[sa[i-1]]==y[sa[i]]&&y[sa[i-1]+k]==y[sa[i]+k]?p-1:p++;}if(p>=n) break;m=p;} } int main(){#ifdef LOCALfreopen("in.txt","r",stdin);freopen("out.txt","w",stdout);#endifscanf("%d",&n);for(int i=0;i<n;i++) scanf("%s",&s[i]);s[n]='$';for(int i=0;i<n;i++) s[i+n+1]=s[n-i-1];m=n;n<<=1;n=n+1;s[n]='\0';build_sa(128);for(int i=0;i<n;i++) rank[sa[i]]=i;int cc=0;int l=0,r=m-1;for(int i=0;i<m;i++){int a=rank[l];int b=rank[(m-r)+m];cc++;if(a<b){putchar(s[l++]);}else putchar(s[r--]);if(cc==80) cc=0,putchar('\n');}return 0; }

轉載于:https://www.cnblogs.com/zrts/p/bzoj1640.html

總結

以上是生活随笔為你收集整理的BZOJ 1640: [Usaco2007 Nov]Best Cow Line 队列变换的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 美女一区二区视频 | 亚洲av无码乱码在线观看性色 | 色姑娘久 | 福利国产在线 | 亚洲狼人综合网 | 日韩视频在线观看一区二区 | 4438x亚洲最大 | 人人做人人爱人人爽 | 国产三级精品三级在线观看 | 爱爱免费视频网站 | 中文字幕一区二区三区电影 | 国产色无码精品视频国产 | 精品蜜桃一区二区三区 | 亚洲国产福利视频 | 91欧美在线 | 成人国产精品免费观看 | 欧美一级爱爱 | 78m78成人免费网站 | 国产精品亚洲二区在线观看 | 黑帮大佬和我的三百六十五天 | 久久久久久久久网站 | 婷婷色综合 | 91社区在线播放 | 成人黄色小说视频 | 婷婷资源网 | 久久青青草视频 | 欧美人妻精品一区二区免费看 | 91吃瓜今日吃瓜入口 | 久久亚洲影院 | 成人激情免费 | 久久久久久久久国产精品一区 | 成人片黄网站色大片免费毛片 | 人人干天天操 | 欧美福利影院 | 欧美另类z0z变态 | 香蕉视频18 | 黄色免费91 | 激情综合一区二区三区 | 日一日干一干 | 国产一区二区黄 | 亚洲无限av | 好屌妞视频这里只有精品 | 久久不射影院 | 中文字幕超碰在线 | 精品少妇一区二区三区在线观看 | 黄色h视频 | 97爱爱视频 | 黑丝袜av | av每日更新在线观看 | 欧美一区二区视频免费观看 | 精品96久久久久久中文字幕无 | 久久偷看各类女兵18女厕嘘嘘 | 亚洲人 女学生 打屁股 得到 | 欧美最猛黑人xxxx | 欧美体内she精高潮 日韩一区免费 | 午夜视频网站在线观看 | 欧美日韩在线二区 | 久久伊人色 | 午夜国产福利视频 | 日本一区二区三区在线免费观看 | 久久久久亚洲精品系列色欲 | 国内精品嫩模av私拍在线观看 | 国产精品久久久久久吹潮 | 禁漫天堂在线 | 天天干干天天 | av成人免费在线 | 91国产一区二区 | 亚瑟av| 国产欧美综合在线 | 免费黄视频在线观看 | 麻豆疯狂做受xxxx高潮视频 | 一区二区三区日本视频 | 麻豆视频在线观看免费网站黄 | 亚洲AV不卡无码一区二区三区 | 久久水蜜桃 | 视频一区二区三 | 国产在线视频资源 | 网友自拍视频 | 麻豆av电影在线观看 | 国产精品一区二区亚洲 | 亚洲一区在线播放 | 永久免费,视频 | 开心六月婷婷 | 亚洲青涩网 | 国产精品国产三级国产专区51区 | 国产三区在线观看 | 久久夜夜操妹子 | 黄黄的视频在线观看 | 黄色三及 | 91看片看淫黄大片 | 美女野外找人搭讪啪啪 | 都市激情国产精品 | 亚洲成成品网站 | 中文字幕视频网 | 影音先锋在线国产 | 少妇无内裤下蹲露大唇视频 | 中文字幕高清 | 女人被狂躁60分钟视频 | 亚洲精品91天天久久人人 |