首页 > 代码库 > Multiset的使用 TOJ 2196.Nuanran's Idol II 与 UVA11136 Hoax or what
Multiset的使用 TOJ 2196.Nuanran's Idol II 与 UVA11136 Hoax or what
1 /* 2 ID: neverchanje 3 PROG: TOJ2195 4 LANG: C++11 5 */ 6 #include<iostream> 7 #include<set> 8 using namespace std; 9 10 char cmd;11 int n,val;12 int main(){13 // freopen("a.txt","r",stdin);14 // freopen(".out","w",stdout);15 while(cin>>n){16 if(!n) break;17 multiset<int> s;18 while(n--){19 cin>>cmd;20 if(cmd==‘B‘){21 cin>>val;22 s.insert(val);23 }24 else{//cmd==‘G‘25 int y=*s.begin();26 cout<<y<<endl;27 s.erase(s.begin());28 }29 }30 }31 return 0;32 }33 34 /*35 DESCRIPTION:36 multiset可以支持重复元素,使得删除操作有两种情况37 s.erase(s.begin())是只删除一个最小元素(即最小元素有多个时,仍只删除一个)38 s.erase(*s.begin())会删除最小元素及相同项39 */
uva11136 因为uva的数据貌似有问题,所以没过(其他人的Ac代码也wa了),但这份代码没问题
1 /* 2 ID: neverchanje 3 PROG: 4 LANG: C++11 5 */ 6 #include<vector> 7 #include<iostream> 8 #include<cstring> 9 #include<string>10 #include<algorithm>11 #include<cmath>12 #include<cstdio>13 #include<set>14 #include<queue>15 #include<map>16 #define INF 0Xfffffffff17 #define st_size (1<<18)-118 #define maxn19 typedef long long ll;20 using namespace std;21 22 int n,m,x;23 multiset<int> s;24 int main(){25 // freopen("a.txt","r",stdin);26 // freopen(".out","w",stdout);27 while(cin>>n)28 {29 if(!n) break;30 s.clear();31 int sum=0;32 33 for(int j=0;j<n;j++){34 cin>>m;35 for(int i=0;i<m;i++){ 36 cin>>x;37 s.insert(x);38 }39 sum+=*--s.end()-*s.begin();40 s.erase(--s.end());41 s.erase(s.begin());42 }43 cout<<sum<<endl;44 }45 return 0;46 }47 48 /*49 DESCRIPTION:50 51 */
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。