set和vector
                                                            生活随笔
收集整理的這篇文章主要介紹了
                                set和vector
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.                        
                                查找某個特定的數據set比vector快,set以二叉搜索樹的方式保存數據。
https://blog.csdn.net/mydriverc2/article/details/62430949
https://blog.csdn.net/zaishaoyi/article/details/46495677
題目鏈接:點擊打開鏈接
如果只是簡單的兩層循環顯然復雜度為O(n*m),超時。
#include<iostream> #include<algorithm> #include<set> #define N 200005 using namespace std; int inf=0x3f3f3f3f; int mon[N],ans[N]; set<int,less<int> > se[4];//調用less,將元素排序 ; int main(){int n;cin>>n;for(int i=0;i<n;i++){cin>>mon[i];}for(int i=0;i<n;i++){int t;cin>>t;se[t].insert(mon[i]);//用set可以保證數據不重復 ?}for(int i=0;i<n;i++){int t;cin>>t;se[t].insert(mon[i]); //用set可以保證數據不重復 ?}int m;cin>>m;for(int i=0;i<m;i++){int t;cin>>t;if(se[t].empty()){ans[i]=-1;}else{ans[i]=*se[t].begin();for(int j=1;j<=3;j++){//將三個顏色中的這件衣服刪除 set<int>::iterator it; it=se[j].find(ans[i]);//提高速度的關鍵 //不能寫成it=find(se[j].begin(),se[j].end(),ans[i]); 這樣也是超時?? ??? ??? ? if(it!=se[j].end())se[j].erase(it);}}?? ??? ?}cout<<ans[0];for(int i=1;i<m;i++)cout<<" "<<ans[i];?? ?return 0; }總結
以上是生活随笔為你收集整理的set和vector的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: 网站的服务器区域可以造假吗,如何伪造DN
- 下一篇: HDU - 1027 全排列
