HDU 4557 非诚勿扰 STL set
西山居的复赛第一题
| 8375841 | 2013-05-24 23:57:27 | Accepted | 4557 | 62MS | 300K | 2364 B | C++ | CSUST_FoRever |
当时傻逼了一个结构体的值没赋导致了几次WA...非常无语
set的用法真的很强大今天算是完整的学习了一下...只是数据太水了导致题目很水...
做法就是low_bound()函数直接返回比查询值大的迭代器 + 重载<运算符...
struct person{ char name[50]; int power; int time; }temp; bool operator < (person a,person b){ if(a.power == b.power) return a.time < b.time; else return a.power < b.power; } int T,n,x; char a[10]; int main(){ cin>>T; for(int k = 1 ; k <= T ; k++){ set<person> s; printf("Case #%d:\n",k); cin>>n; for(int t = 1 ; t <= n ; t++){ cin>>a; if(a[0] == 'A'){ cin>>temp.name>>temp.power; temp.time = t; s.insert(temp); cout<<s.size()<<endl; } else{ cin>>x; temp.power = x; temp.time = -1; set<person>::iterator it = s.lower_bound(temp); if(it->name[0]>'z' || it->name[0]<'a') { cout<<"WAIT..."<<endl; continue; } else{ cout<<it->name<<endl; s.erase(it); } } } } return 0; }

浙公网安备 33010602011771号