HDU - 5071 Chat(模拟)
题意:有各种操作,模拟这个程序并输出每次操作的信息
分析:恶心模拟题。。。用个map记录一下各个等级女孩的谈话数,同时也便于查找权值为u的在不在队列里。因为n很小,其他就暴力模拟了。
#include <iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<map>
#define ll long long
#define ull unsigned long long
//#define LOCAL using namespace std;
const int maxn=+;
const int inf=0x3f3f3f3f;
const int mod=1e9+; map<int,ll> C;
//flag标记always on top,T为其优先值
int x,T,A[maxn],N,flag; int find(int a){
for(int i=;i<N;i++)
if(A[i]==a)
return i;
return N;
}
void add(){
scanf("%d",&x);
if(C.count(x)) printf("same priority");
else{
A[N++]=x;
C[x]=;
printf("success");
}
}
void close(){
scanf("%d",&x);
if(C.count(x)){
printf("close %d with %I64d",x,C[x]);
C.erase(x);
if(flag&&T==x) flag=;
int pos=find(x);
for(int i=pos;i<N;i++) A[i]=A[i+];
N--;
}
else printf("invalid priority");
}
void chat(){
scanf("%d",&x);
if(N==) printf("empty");
else{
if(flag) C[T]+=x;
else C[A[]]+=x;
printf("success");
}
}
void roate(){
scanf("%d",&x);
if(x>N||x<) printf("out of range");
else{
int t=A[x-];
for(int i=x-;i;i--) A[i]=A[i-];
A[]=t;
printf("success");
}
}
void prior(){
if(N==) printf("empty");
else{
int pos=,maxx=A[];
for(int i=; i<N; i++){
if(A[i]>maxx){
maxx=A[i];
pos=i;
}
}
int t=A[pos];
for(int i=pos;i;i--) A[i]=A[i-];
A[]=t;
printf("success");
}
}
void choose(){
scanf("%d",&x);
if(C.count(x)){
int pos=find(x);
int t=A[pos];
for(int i=pos;i;i--) A[i]=A[i-];
A[]=t;
printf("success");
}
else printf("invalid priority");
}
void top1(){
scanf("%d",&x);
if(C.count(x)){
T=x;
flag=;
printf("success");
}
else printf("invalid priority");
}
void untop(){
if(flag){
flag=;
printf("success");
}
else printf("no such person");
}
void bye(){
if(N==) return;
if(flag&& C[T]) printf("Bye %d: %I64d\n",T,C[T]);
for(int i=;i<N;i++){
if(flag&& A[i]==T) continue;
if(C[A[i]]) printf("Bye %d: %I64d\n",A[i],C[A[i]]);
}
} int main(){
//ios::sync_with_stdio(false);
#ifdef LOCAL
freopen("in.txt","r",stdin);
#endif
int t,n;
cin>>t;
while(t--)
{
N=T=flag=;
C.clear();
scanf("%d",&n);
char s[];
for(int i=; i<=n; i++){
scanf("%s",s);
printf("Operation #%d: ",i);
if(strcmp(s,"Add")==) add();
else if(strcmp(s,"Chat")==) chat();
else if(strcmp(s,"Close")==) close();
else if(strcmp(s,"Rotate")==) roate();
else if(strcmp(s,"Prior")==) prior();
else if(strcmp(s,"Choose")==) choose();
else if(strcmp(s,"Top")==) top1();
else if(strcmp(s,"Untop")==) untop();
printf(".\n");
}
bye();
}
return ;
}
HDU - 5071 Chat(模拟)的更多相关文章
- hdu 5071 Chat(模拟)
题目链接:hdu 5071 Chat 题目大意:模拟题. .. 注意最后说bye的时候仅仅要和讲过话的妹子说再见. 解题思路:用一个map记录每一个等级的妹子讲过多少话以及是否有这个等级的妹子.数组A ...
- hdu 5071 Chat(模拟|Splay)
Chat Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 262144/262144 K (Java/Others) Total Sub ...
- HDU 5071 Chat(2014鞍山B,模拟)
http://acm.hdu.edu.cn/showproblem.php?pid=5071 Chat Time Limit: 2000/1000 MS (Java/Others) Memory ...
- HDU 5071 Chat(2014鞍山赛区现场赛B题)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5071 解题报告:一个管理聊天窗口的程序,一共有八种操作,然后要注意的就是Top操作只是把编号为u的窗口 ...
- HDOJ 5071 Chat 模拟
大模拟: 1>saygoodbye要先对 always on top 的人说 2>对没有说过话的不要说good bye 3>用long long Chat Time Limit: 2 ...
- HDU 5071 Chat
题意: CLJ找了很多妹子- (题目好没节操-) 对于CLJ和妹子的聊天对话框 有一下几种操作: add 加一个妹子在聊天窗队列末尾 假设这个妹子已经在队列中则add失败 close 关掉 ...
- hdu 5071 Chat-----2014acm亚洲区域赛鞍山 B题
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5071 Chat Time Limit: 2000/1000 MS (Java/Others) M ...
- hdu 5071(2014鞍山现场赛B题,大模拟)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5071 思路:模拟题,没啥可说的,移动的时候需要注意top的变化. #include <iostr ...
- hdu 5071 vector操作恶心模拟
http://acm.hdu.edu.cn/showproblem.php?pid=5071 对于每一个窗口,有两个属性:优先级+说过的单词数,支持8个操作:新建窗口,关闭窗口并输出信息,聊天(置顶窗 ...
随机推荐
- IOI2008 island
题目链接:[IOI2008]Island 题目大意:求基环树直径(由于题目的意思其实是类似于每个点只有一个出度,所以在每个联通块中点数和边数应该是相同的,这就是一棵基环树,所以题目给出的图就是一个基环 ...
- 【CF891C】Envy(最小生成树)
[CF891C]Envy(最小生成树) 题面 Codeforces 洛谷 题解 考虑\(MST\)的构建过程,对于所有权值相同的边一起考虑. 显然最终他们连出来的结果是固定的. 把连边改为把联通块联通 ...
- 【BZOJ4771】七彩树(主席树)
[BZOJ4771]七彩树(主席树) 题面 BZOJ 题解 如果没有深度限制,每次只询问子树内的颜色个数,除了树套树\(dfs\)序加前驱或者后继强行二维数点之外,还有这样一种做法: 把所有相同颜色的 ...
- HttpWebRequest发http参数
使用js发请求时,一般使用表单.json对象或者字符串 $.post(url,jsonStr) 服务端获取参数 Request.QueryString.Get();// GET参数 Request.F ...
- multiset和set
set集合容器:实现了红黑树的平衡二叉检索树的数据结构,插入元素时,它会自动调整二叉树的排列,把元素放到适当的位置,以保证每个子树根节点键值大于左子树所有节点的键值,小于右子树所有节点的键值:另外,还 ...
- (三)flask中的请求钩子函数
请求勾子 在客户端和服务器交互的过程中,有些准备工作或扫尾工作需要处理,比如: 在请求开始时,建立数据库连接: 在请求开始时,根据需求进行权限校验: 在请求结束时,指定数据的交互格式: 为了让每个视图 ...
- 【模板】多项式乘法(FFT)
题目描述 给定一个n次多项式F(x),和一个m次多项式G(x). 请求出F(x)和G(x)的卷积. 输入输出格式 输入格式: 第一行2个正整数n,m. 接下来一行n+1个数字,从低到高表示F(x)的系 ...
- 洛谷 P1393 P3157 动态逆序对
嘛,好久没碰CDQ分治了,做道题练练手. 时间倒流——把删数改为加数. 对于每个被删的,我的想法是拆成询问和add,后来发现一个足矣. 我本来准备对每个删的数都求一遍整体逆序对,后来发现无论如何都不可 ...
- Flask filter过滤器
简单的数据集体添加样式输出用管道过滤,除了flask模块以外不需要导其他的包 <head> <meta charset="UTF-8"> <meta ...
- 在html页面通过js实现复制粘贴功能
前言:要实现这个功能,常用的方式大概分为两类,第一种就是上插件,这个网上有大把,第二种就是直接用几行JS来实现. 这次说第二种实现方式,这方式有很大的局限性,只能用表单元素,并且不能设置disable ...