hdu 5071 Chat(大模拟)
来源:互联网 发布:淘宝账号购买 编辑:程序博客网 时间:2024/06/05 16:38
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5071
大模拟,有几个wa点
1.top的意思是设置一个特殊的位置,这个位置的优先级在队列最前端之上,并且被设置的u在队列中的初始位置不被改变,所以这个位置就像是指向队列某个元素的指针。
2.chat的操作要先考虑特殊位置的节点。
3.say bye的时候要先给最特殊位置的节点say bye然后再按照队列的顺序一个一个say bye
4.words 为零的节点不用say bye
5.记住用long long!!!!!
这些点都注意了,这道题目还是比较水的,但是现场赛这道题目的通过率不高,主要是敲大模拟太浪费时间了~
code:
#include <cstdio>#include <cstdlib>#include <iostream>#include <vector>#include <cstring>using namespace std;typedef long long LL;const int maxn=10000;char dd[10][10]={"Add","Close","Chat","Rotate","Prior","Choose","Top","Untop"};typedef pair<int,LL> P;int top;vector<P> pp;void add(int key,vector<P> &m){ bool flag=1; P mid; mid.first=key; mid.second=0; for(int i=0;i<m.size();i++){ if(m[i].first==mid.first){ flag=0; break; } } if(!flag){ printf("same priority.\n"); return ; } m.push_back(mid); printf("success.\n"); return ;}void del(int key,vector<P> &m){ int flag=-1; for(int i=0;i<m.size();i++){ if(m[i].first==key){ flag=i; break; } } if(flag==-1){ printf("invalid priority.\n"); return ; } else{ if(top==key) top=-1; printf("close %d with %I64d.\n",m[flag].first,m[flag].second); m.erase(m.begin()+flag); return ; }}void chat(int w,vector<P> &m){ if(!m.size()){ printf("empty.\n"); return ; } else{ if(top!=-1){ for(int i=0;i<m.size();i++){ if(m[i].first==top){ m[i].second+=w; printf("success.\n"); return ; } } } else{ m[0].second+=w; printf("success.\n"); return ; } }}void Rotate(int u,vector<P> &m){ P mid; if(u>=1&&u<=m.size()){ mid=m[u-1]; m.erase(m.begin()+u-1); m.insert(m.begin(),mid); printf("success.\n"); return ; } else{ printf("out of range.\n"); return ; }}void Prior(vector<P> &m){ if(!m.size()){ printf("empty.\n"); return ; } else{ printf("success.\n"); int nn=0; P mid; for(int i=1;i<m.size();i++){ if(m[i].first>m[nn].first) nn=i; } mid=m[nn]; m.erase(m.begin()+nn); m.insert(m.begin(),mid); }}void choose(int u,vector<P> &m){ P mid; mid.first=-1; mid.second=-1; int kk=-1; for(int i=0;i<m.size();i++){ if(m[i].first==u){ mid.first=m[i].first; mid.second=m[i].second; kk=i; break; } } if(mid.first==-1){ printf("invalid priority.\n"); return ; } else{ m.erase(m.begin()+kk); m.insert(m.begin(),mid); printf("success.\n"); return ; }}void Top(int u,vector<P> &m){ P mid; bool flag=0; for(int i=0;i<m.size();i++){ if(m[i].first==u){ flag=1; break; } } if(flag){ printf("success.\n"); top=u; return ; } else{ printf("invalid priority.\n"); return ; }}void Untop(){ if(top==-1){ printf("no such person.\n"); } else{ printf("success.\n"); top=-1; }}void say_bye(vector<P> &m){ if(top==-1){ for(int i=0;i<m.size();i++){ if(m[i].second==0) continue; printf("Bye %d: %I64d\n",m[i].first,m[i].second); } } else{ for(int i=0;i<m.size();i++){ if(m[i].second==0) continue; if(m[i].first==top){ printf("Bye %d: %I64d\n",m[i].first,m[i].second); break; } } for(int i=0;i<m.size();i++){ if(m[i].second==0) continue; if(m[i].first==top) continue; printf("Bye %d: %I64d\n",m[i].first,m[i].second); } }}int main(){ int T,nn,x; char cc[10]; scanf("%d",&T); while(T--){ scanf("%d",&nn); top=-1; pp.clear(); for(int kk=1;kk<=nn;kk++){ scanf("%s",cc); printf("Operation #%d: ",kk); if(!strcmp(cc,dd[0])){ scanf("%d",&x); add(x,pp); } else if(!strcmp(cc,dd[1])){ scanf("%d",&x); del(x,pp); } else if(!strcmp(cc,dd[2])){ scanf("%d",&x); chat(x,pp); } else if(!strcmp(cc,dd[3])){ scanf("%d",&x); Rotate(x,pp); } else if(!strcmp(cc,dd[4])){ Prior(pp); } else if(!strcmp(cc,dd[5])){ scanf("%d",&x); choose(x,pp); } else if(!strcmp(cc,dd[6])){ scanf("%d",&x); Top(x,pp); } else if(!strcmp(cc,dd[7])){ Untop(); } } say_bye(pp); } return 0;}
0 0
- hdu 5071 Chat(大模拟)
- HDU 5071 Chat(大模拟)
- hdu 5071 Chat(模拟)
- HDU 5071 Chat (模拟)
- HDU 5071 Chat(模拟)
- hdu 5071 Chat(模拟)
- HDU 5071 Chat (模拟)
- hdu 5071 Chat (模拟题)
- hdu 5071 Chat(模拟|Splay)
- HDU 5071 Chat 暴力模拟
- HDU -- 5071 Chat 超强模拟
- HDU 5071 Chat (神一般的模拟题)
- HDU 5071 Chat(2014鞍山B,模拟)
- 【模拟】 HDOJ 5071 Chat
- HDOJ 5071 Chat 模拟
- hdu 5071 Chat /2014鞍山现场赛B题 (模拟)
- [大模拟]两种方式解决Chat(UVALive-7047)大模拟
- HDU 5071 Chat
- 国外程序员整理的 C++ 资源大全
- Eclipse+Maven构建web项目及部署时Maven lib依赖问题的解决
- 计算机科学导论学习笔记
- No CPU/ABI system images installed for this target错误
- 搭建自己的SIP服务器:开源sip服务器opensips的搭建及终端TwInkle的使用 .
- hdu 5071 Chat(大模拟)
- R:因子的常用函数
- 11种方法助你成为开源编程能手
- 不要被阶乘吓倒
- Developing iOS7 Apps For iPhone and iPad
- mysql数据库双机同步开源软件otter
- js代码,当div中内容高度超出div高度的时候实现定制滚动条!
- Thrift下Java客户端与服务器端的开发
- linux下memcached的启动/结束的方式