zoj 3601
鏈接
[https://vjudge.net/contest/293343#problem/B]
題意
就是n男m女。然后給出他們喜歡那些人
再給出q次詢問
每次參加party的人
讓你找出某個(gè)人滿足喜歡在場(chǎng)的所有人而且在場(chǎng)所有人都不喜歡他
如果不存在輸出0;
分析
首先這題目的樣例是給出一個(gè)信息。就是他們可以搞基同性戀
就直接模擬就好了。關(guān)鍵怎樣模擬使得更高效,就是查找更高效
你得保存每個(gè)人喜歡的人。直接把名字映射成數(shù)字就好了
map<string,int> 名字對(duì)應(yīng)的數(shù)字
vector a[] 為啥不用vector a[] 用來保存每個(gè)人喜歡的人
他喜歡的人還沒map過就gg了
下面為了更方便地查找你得
在把喜歡的關(guān)系映射一下、
map < pair<int,int>,int > P
后面舞會(huì)就查找了
給兩份代碼 一份是MLE的
具體看代碼吧
代碼
MLE
#include<bits/stdc++.h> using namespace std; #define ll long long map<string,int> ma; map<int,string> is; vector<string> ve[70000]; map<pair<int,int>,int > mp; int pa[70000]; int main(){int t,m,n,k,q;scanf("%d",&t);while(t--){scanf("%d%d%d",&n,&m,&q);for(int i=0;i<n+m;i++){ve[i].clear();string l,bl;cin>>l;scanf("%d",&k);ma[l]=i,is[i]=l;//cout<<"i "<<i<<endl;for(int j=0;j<k;j++){cin>>bl;ve[i].push_back(bl);}}for(int i=0;i<n+m;i++)for(int j=0;j<ve[i].size();j++)mp[make_pair(i,ma[ve[i][j]])]=1;while(q--){scanf("%d",&k); string s;for(int i=0;i<k;i++){cin>>s;pa[i]=ma[s];}bool flag;for(int i=0;i<k;i++){flag=1;for(int j=0;j<k;j++){if(i!=j){if(mp[make_pair(pa[i],pa[j])]==0||mp[make_pair(pa[j],pa[i])]==1){flag=0; break;}}}if(flag) {printf("1 ");cout<<is[pa[i]]<<"\n";break;}}if(!flag) puts("0");}cout<<endl;}return 0; }AC代碼
#include<bits/stdc++.h> using namespace std; #define ll long long map<string,int> ma; map<int,string> is; vector<string> ve[70000]; map<pair<int,int>,int > mp; string str[70000]; int pa[70000]; int main(){int t,m,n,k,q;scanf("%d",&t);while(t--){scanf("%d%d%d",&n,&m,&q);mp.clear();ma.clear();for(int i=0;i<n+m;i++){ve[i].clear();string l,bl;cin>>l;scanf("%d",&k);ma[l]=i;for(int j=0;j<k;j++){cin>>bl;ve[i].push_back(bl);}}for(int i=0;i<n+m;i++)for(int j=0;j<ve[i].size();j++)mp[make_pair(i,ma[ve[i][j]])]=1;while(q--){scanf("%d",&k); string s;for(int i=0;i<k;i++){cin>>str[i];pa[i]=ma[str[i]];}bool flag;for(int i=0;i<k;i++){flag=1;for(int j=0;j<k;j++){if(i!=j){if(mp[make_pair(pa[i],pa[j])]==0||mp[make_pair(pa[j],pa[i])]==1){flag=0; break;}}}if(flag) {cout<<1<<" "<<str[i]<<"\n";break;}}if(!flag) puts("0");}puts("");}return 0; }轉(zhuǎn)載于:https://www.cnblogs.com/mch5201314/p/10696803.html
總結(jié)
- 上一篇: 100篇架构文章打包,及offer面试题
- 下一篇: 在springboot中使用h2数据库