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 0Xfffffffff 17 #define st_size (1<<18)-1 18 #define maxn 19 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 */
Multiset的使用 TOJ 2196.Nuanran's Idol II 与 UVA11136 Hoax or what
时间: 2024-10-28 21:41:19