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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

E. Pattern Matching(题意理解+拓扑排序)

發布時間:2023/12/3 编程问答 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 E. Pattern Matching(题意理解+拓扑排序) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

E. Pattern Matching

首先p[mtj]p[mt_j]p[mtj?]必須能夠匹配所給字符sjs_jsj?,然后把所有能夠匹配的sjs_jsj?的其他模板串也找出來,這些必須放在p[mtj]p[mt_j]p[mtj?]的后面,典型拓撲排序,連邊然后排序即可

#define IO ios::sync_with_stdio(false);cin.tie();cout.tie(0) #pragma GCC optimize(2) #include<set> #include<map> #include<cmath> #include<stack> #include<queue> #include<bitset> #include<random> #include<bitset> #include<string> #include<vector> #include<cstdio> #include<cstring> #include<iostream> #include<algorithm> #include<unordered_map> #include<unordered_set> using namespace std; typedef long long ll; typedef unsigned long long ull; typedef pair<ll,int> pli; typedef pair<int,int> pii; //========================================================== const int N=200010; int n,m,k; map<string,int> mp; vector<int> E[N]; // 鄰接表 int d[N]; int main() {//IO;int T=1;//cin>>T;while(T--){cin>>n>>m>>k;for(int i=1;i<=n;i++){string s;cin>>s;mp[s]=i;}bool ok=1;for(int i=1;i<=m;i++){string s;int pos;cin>>s>>pos;if(!ok) break;bool flag=0;for(int j=0;j<1<<k;j++){string t(s);for(int l=0;l<k;l++)if(j>>l&1)t[l]='_';if(mp.count(t)) {if(mp[t]!=pos)E[pos].push_back(mp[t]),d[mp[t]]++;elseflag=1;// 該位置必須能夠匹配}}if(!flag) ok=0;}if(ok){queue<int> q;for(int i=1;i<=n;i++)if(!d[i]) q.push(i);vector<int> ans;while(q.size()){int t=q.front();q.pop();ans.push_back(t);for(auto v:E[t])if(--d[v]==0) q.push(v);}if(ans.size()==n){cout<<"YES\n";for(auto t:ans) cout<<t<<' ';}elsecout<<"NO\n";}elsecout<<"NO\n";}return 0; }

心路歷程:
剛開始理解成把原匹配串重排列,然后一一對應
字符串匹配?直接暴力枚舉最多24=162^4=1624=16匹配,然后二分匹配隨便搞搞?寫完發現題意中有一個first匹配,然后發現理解錯了,然后······重看一遍又寫發現又看錯了,然后看了看網上題意解釋真的語文水平。。。

總結

以上是生活随笔為你收集整理的E. Pattern Matching(题意理解+拓扑排序)的全部內容,希望文章能夠幫你解決所遇到的問題。

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