#include<bits/stdc++.h> using namespace std; struct window{ long long u; bool top; long long cnt; bool operator == (const window &t)const{ return u ==t.u && top == t.top; } }; string tostring(long long u){ string res = ""; vector<char>v; while(u){ v.push_back(char(u%10+'0')); u/=10; } for(int i=int(v.size())-1;i>=0;i--){ res = res+v[i]; } if(v.empty())res = "0"; return res; } vector<window>q; void addtofirst(window u){ vector<window> qq=q;q.clear(); q.push_back(u); for(long long i=0;i<qq.size();i++){ q.push_back(qq[i]); } } void Drop(long long id){ vector<window> qq; for(long long i=0;i<q.size();i++){ if(i!=id)qq.push_back(q[i]); } q = qq; qq.clear(); } bool Find(long long u){ for(long long i=0;i<q.size();i++)if(q[i].u==u)return true; return false; } bool Find(window temp){ for(long long i=0;i<q.size();i++)if(q[i] == temp)return true; return false; } long long Getid(long long u){ for(long long i=0;i<q.size();i++)if(q[i].u==u)return i; return -1; } bool hastop(){ for(long long i=0;i<q.size();i++){ if(q[i].top == true)return true; } return false; } long long top(){ for(long long i=0;i<q.size();i++) if(q[i].top)return i; return -1; } long long maxu(){ long long res = 0; for(long long i=0;i<q.size();i++)res = max(res,q[i].u); return res; }; void puttohead(long long id){ window temp = q[id]; Drop(id); addtofirst(temp); } queue<string>ans; void add(long long u){ if(Find(u)){ ans.push("same likeness."); return; } window t;t.u =u;t.top=false;t.cnt=0; q.push_back(t); ans.push("success."); return; } void Close(long long u){ if(Find(u)){ string str="close " + tostring(u)+" with "+tostring(q[Getid(u)].cnt)+"."; Drop(Getid(u)); ans.push(str); }else{ ans.push("invalid likeness."); } } void chat(long long u){ if(hastop()){ q[top()].cnt+=u; ans.push("success."); }else{ if(q.empty()){ ans.push("empty."); return; }else{ q[0].cnt+=u; ans.push("success."); } } } void Rotate(long long x){ if(x>(long long)q.size() || x<1){ ans.push("out of range."); return; }else{ puttohead(x-1); ans.push("success."); } } void Prior(){ if(q.empty()){ ans.push("empty."); }else{ long long id = Getid(maxu()); puttohead(id); ans.push("success."); } } void Choose(long long u){ if(Find(u)){ puttohead(Getid(u)); ans.push("success."); }else{ ans.push("invalid likeness."); } } void settop(long long u){ if(Find(u)){ for(long long i=0;i<q.size();i++)q[i].top=false; q[Getid(u)].top=true; ans.push("success."); }else{ ans.push("invalid likeness."); } } void Untop(){ if(hastop()){ for(long long i=0;i<q.size();i++)q[i].top=false; ans.push("success."); }else{ ans.push("no such person."); } } void Clearwindow(){ string str; if(hastop()){ str = "Bye " + tostring(q[top()].u) +": "+tostring(q[top()].cnt)+"."; if(q[top()].cnt!=0)ans.push(str); Drop(top()); } for(long long i=0;i<q.size();i++){ str = "Bye " + tostring(q[i].u) +": "+tostring(q[i].cnt)+"."; if(q[i].cnt!=0)ans.push(str); } } int main() { long long t,n; cin>>t; while(t--){ q.clear(); cin>>n; string str;long long u; for(long long i=1;i<=n;i++){ cin>>str; if(str=="Add"){ cin>>u; add(u); } if(str=="Close"){ cin>>u; Close(u); } if(str=="Chat"){ cin>>u; chat(u); } if(str=="Rotate"){ cin>>u; Rotate(u); } if(str=="Prior"){ Prior(); } if(str=="Choose"){ cin>>u; Choose(u); } if(str=="Top"){ cin>>u; settop(u); } if(str=="Untop"){ Untop(); } } Clearwindow(); long long cnt=0; while (!ans.empty()){ cout<<"OpId #"<<++cnt<<": "<<ans.front()<<endl; ans.pop(); } } return 0; } /* 30 Add 4 Add 3 Chat 4 Add 3 Rotate 2 Chat 5 Prior Top 3 Choose 4 Rotate 1 Add 2 Close 4 Chat 7 Choose 2 Chat 7 Add 3 Top 2 Add 4 Choose 3 Chat 7 Prior Top 3 Rotate 1 Rotate 3 Chat 7 Top 4 Add 2 Close 2 Prior Add 4 1 10 Add 1 Add 2 Add 3 Rotate 1 Rotate 10 Rotate -1 Rotate 1 Prior Choose 12 Choose 11 */
SDU CSPT3模拟
转载本文章为转载内容,我们尊重原作者对文章享有的著作权。如有内容错误或侵权问题,欢迎原作者联系我们进行内容更正或删除文章。
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
3 模拟键盘及鼠标
模拟键盘 模拟鼠标
python selenium firefox 字符串 提交表单 -
android 模拟点击3
引用:://blog.csdn.net/yiyaaixuexi/article/details/6574001Android真机和模拟器的差异问题,是永恒的话题,问不完的为什么,解不完的迷。模拟器的存在,有它的作用,但不要什么都相信模拟器。除非你是Android纯上层应用开发人员或者爱好者,否则我建议你扔掉模拟器。它理想化的引导给我们添了不少麻烦。当然,这也是件好事。最起码,让我有兴趣去寻求答案,让我收获了更多。 问题的缘由是有个自动化测试的需求,我需要写脚本模拟点击触摸屏的一系列操作,以代替手工测试(话说~遇上连续启动1000次camera并且拍照后退出这种变态测试,你们都是怎么做的
手机开发--------android 数据 android java 点击事件