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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

牛客 - Prize(bitset优化暴力)

發布時間:2024/4/11 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 牛客 - Prize(bitset优化暴力) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

題目鏈接:點擊查看

題目大意:給出一個長度為 n 的模式串 s ,再給出一個長度為 m 的匹配串,匹配串的每一位的可行數字都會給出,現在問最多可以匹配多少個字符串

題目分析:模式串和匹配串的匹配,AC自動機的經典問題,但是在這個題目中匹配串的個數過于多,所以并不能這樣做,因為匹配串的長度比較短,所以可以預處理出一個可行數組用來記錄哪個位置可以放置哪個數字,這樣就能將時間復雜度優化為 n * m 暴力貪心匹配了,但是看數據范圍可知,n 為 2e6 , m 為 800 ,顯然出題人是有意卡掉這樣的暴力匹配

考慮優化,其實我們可以使用 bitset 優化暴力,可以使得時空復雜度降低 64 個常數,優化方法非常巧妙:

首先就是利用 bitset 數組來充當可行數組,設其為 b 數組,即 bitset<800>b[ 10 ],則 b [ i ][ j ] = 1 代表第 j 個位置上允許放置數字 i,然后利用一個 bitset 變量記錄每一次的匹配狀態,記這個變量為 cur,cur 的含義是:模式串遍歷到位置 i 時,cur 的第 j 位的狀態代表著 [ i - j + 1 , i ] 這段區間是否和匹配串的前 j 個字符匹配,注意 cur 的每一位都是相互獨立的

每一次對于 cur 的操作是,令其左移一位,再將第一個位置置為 1 ,設當前遍歷到的數字為 num ,則接下來就令 cur &= b[ num ] ,因為 b[ num ] 中存放的二進制為 1 的位置代表著可以放置字符 num 的位置,所以在進行 “ 或 ” 運算后,cur 中仍然為 1 的位置 j 表示在第 [ i - j + 1 , j - 1 ] 這段區間與匹配串的前 j - 1 個字符匹配的基礎上,第 j 個字符仍然匹配,所以根據動態規劃的思想可以巧妙地將狀態轉移為 cur 的第 j ?個位置也為 1

綜上所述,每次只要 cur 的第 m 個位置為 1 時,就說明當前連續的 m 個字符匹配成功,答案加一且將 cur 清空

代碼:
?

#include<iostream> #include<cstdio> #include<string> #include<ctime> #include<cmath> #include<cstring> #include<algorithm> #include<stack> #include<climits> #include<queue> #include<map> #include<set> #include<sstream> #include<cassert> #include<bitset> using namespace std;typedef long long LL;typedef unsigned long long ull;const int inf=0x3f3f3f3f;const int N=2e6+100;int a[N];bitset<810>b[10],cur,pre;int main() { #ifndef ONLINE_JUDGE // freopen("input.txt","r",stdin); // freopen("output.txt","w",stdout); #endif // ios::sync_with_stdio(false);int n,m;scanf("%d%d",&n,&m);for(int i=1;i<=n;i++)scanf("%1d",a+i);for(int i=1;i<=m;i++) {int k;scanf("%d",&k);while(k--){int num;scanf("%d",&num);b[num][i]=1;}}int ans=0;for(int i=1;i<=n;i++){pre<<=1;pre[1]=1;cur=pre&b[a[i]];if(cur[m]){ans++;cur.reset();}pre=cur;}if(ans==0)puts("Failed to win the prize");elseprintf("%d\n",ans);return 0; }

?

總結

以上是生活随笔為你收集整理的牛客 - Prize(bitset优化暴力)的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 成人手机视频在线观看 | 女人天堂av | 人人澡超碰碰97碰碰碰 | 九热精品 | 国产成人在线免费观看 | 国产成人无码精品久久 | 国产视频1区2区 | av黄色天堂| av5566| 夜夜操国产| 午夜网站在线 | 好大好爽视频 | 在线sese | 欧美一区一区 | 欧美少妇在线 | 成人短视频在线免费观看 | 国产最爽的乱淫视频国语对白 | 国产99在线视频 | 亚洲色图图| 一级特黄色大片 | 日本欧美亚洲 | 久热中文字幕在线 | 中国一级特黄录像播放 | 成年人的免费视频 | 黄色a级片在线观看 | 国产一区精品在线观看 | 美丽的姑娘在线观看 | 91国产高清 | 最近免费中文字幕中文高清百度 | 精品盗摄一区二区三区 | 天堂av在线网 | 日日鲁鲁鲁夜夜爽爽狠狠视频97 | 国产精品系列在线 | 77久久| 91麻豆精品一区二区三区 | 在线免费观看欧美大片 | 亚洲高清在线视频 | 欧美一级片在线播放 | 激情拍拍| 办公室荡乳欲伦交换bd电影 | 性色av免费观看 | 美味的客房沙龙服务 | 美女屁股无遮挡 | 国产伦精品一区二区三 | 黑人极品videos精品欧美裸 | av久久久| 欧美日韩成人一区 | 中文字幕在线播放不卡 | 另类欧美日韩 | 好吊妞一区二区三区 | 麻豆成人91精品二区三区 | 日韩精品一区不卡 | 久久爱99 | 国产亚洲精品久久久 | 国内精品少妇 | 成人免费一区二区三区在线观看 | 一级黄色录像大片 | 欧美精品色哟哟 | 泷泽萝拉在线播放 | 欧美三级自拍 | 日韩区在线 | 蜜桃av色偷偷av老熟女 | 性一交一乱一伧老太 | 中文字幕成人在线视频 | 视频在线亚洲 | 国产成人精品影视 | 国产精品男同 | 久草福利资源在线 | 巨大乳の揉んで乳榨り奶水 | 日本特黄一级片 | 亚洲最大成人网站 | 91一起草 | 成a人片亚洲日本久久 | 中文字幕一区二区三区视频 | 亚洲最大成人网色 | 亚洲天堂视频网站 | 99re视频这里只有精品 | 清纯唯美亚洲激情 | 国产绳艺sm调教室论坛 | 欧美激情国产日韩精品一区18 | 在线观看不卡av | 日韩少妇中文字幕 | 欧美成人综合在线 | 亚洲av无码一区二区二三区 | 青青青在线视频免费观看 | 亚洲欧洲日本精品 | 寂寞少妇让水电工爽hd | 色人综合| 成人久久精品人妻一区二区三区 | 热久久中文 | 正在播放国产一区 | 色妞综合| 免费一级毛片麻豆精品 | 多啪啪免费视频 | 91视频直接看 | 日韩精品免费播放 | 国产视频福利在线 | 人人人人爽 | 成人音影 |