传送门  http://acm.tzc.edu.cn/acmhome/problemdetail.do?&method=showdetail&id=3216

时间限制(普通/Java):1000MS/3000MS     内存限制:65536KByte

描述

M国的车牌号只有4位,别人都很想要8888,6666,3333等,但是Mr.L很奇怪,他想要4444……

M国的车牌号码颁发制度很简单,按顺序,从0000到9999共10000个号码,他们车也不多,而且随时可能有报废的车车牌号也跟着废弃了。

现在已经知道办理了K个牌照,从0000开始的连续的K个,Mr.L很不爽,由于某些原因,他要M天后才能办理牌照,作为管理员,你已经知道了这M天的牌照预约情况,一共有P条预约信息,预约有2种:

  1. 今天有R个人预约办理牌照,那么会从0000开始找R个空位给与他们牌照;

    2、今天某个牌照要报废,直接把这个位置置空就是了。

3、同一天内,总是先处理报废的事情,再处理新申请的事情。

Mr.L想知道M天后,他想要得牌照还在不在……

输入

第一行包含一个整数T,表示有T组数据

每组数据,第一行包含2个整数K和P,和题目描述一致,其中P<=50。

以下P行每行包含信息格式两种之一:

X N L  表示第X天有L个申请,N是标志字符

X D R  表示第X天有个编号为R的要报废,D是标志字符,保证数据合法。

保证输入数据中天数小的在前面出现,但不保证D一定在N前出现。

输出

处理完了P个预约后,返回4444这个号码还是不是空的,是输出“Yes”,否则输出“No”。

样例输入

2
0 3
5 N 1000
7 N 2000
7 D 1234
4000 3
2 N 446
4 N 1
4 D 4444

样例输出

Yes
No

思路:先把天数一样的按照 D先 N后 的顺序排个序,然后暴力模拟就行了,拿数组记录是否出现过车牌。如果是N 那么for循环遍历0到10000,找到L个位置变为1,如果是D,那么把当前位置的数组值改为0,最后查询a[4444]的值即可

代码:

#include<iostream>
#include<algorithm>
#include<cstdio>
#include<cstring>
#define LL long long
using namespace std;
struct note{
char cmd;
int day,id;
}p[];
bool cmp(note x,note y){
if(x.day != y.day) return x.day < y.day;
return x.cmd < y.cmd;
}
int main()
{
int k,t,n;
for(scanf("%d",&t);t--;){
scanf("%d %d",&k,&n);
int a[]={};
for(int i = ; i < k ; i++) a[i] = ;
//初始K天已经被用掉了
for(int i = ; i < n ; i++){
scanf("%d %c %d",&p[i].day,&p[i].cmd,&p[i].id);
}
sort(p,p+n,cmp);
//根据 D先 N后的顺序排序
for(int i = ; i < n ; i++){
if(p[i].cmd == 'N'){
for(int j = ; j <= && p[i].id != ;j++){
if(a[j] == ){
a[j] = ;
p[i].id-=;
}
}//暴力更新
}
if(p[i].cmd == 'D'){
a[p[i].id] = ;
}
}
(!a[])?puts("Yes"):puts("No");
}
}

TOJ3216 我要4444的更多相关文章

  1. HDU 4444 Walk (离散化建图+BFS+记忆化搜索) 绝对经典

    题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=4444 题意:给你一些n个矩形,给你一个起点,一个终点,要你求从起点到终点最少需要转多少个弯 题解:因为 ...

  2. Could not contact Selenium Server; have you started it on 'localhost:4444'

    今天学习selenium RC例子的时候遇到一个问题:java.lang.RuntimeException: Could not contact Selenium Server; have you s ...

  3. 4444: [Scoi2015]国旗计划

    4444: [Scoi2015]国旗计划 Time Limit: 20 Sec  Memory Limit: 256 MBSubmit: 485  Solved: 232 Description A国 ...

  4. 离散化+BFS HDOJ 4444 Walk

    题目传送门 /* 题意:问一个点到另一个点的最少转向次数. 坐标离散化+BFS:因为数据很大,先对坐标离散化后,三维(有方向的)BFS 关键理解坐标离散化,BFS部分可参考HDOJ_1728 */ # ...

  5. HDU 4444:Walk(思维建图+BFS)***

    http://acm.hdu.edu.cn/showproblem.php?pid=4444 题意:给出一个起点一个终点,给出n个矩形的两个对立顶点,问最少需要拐多少次弯可以从起点到达终点,如果不能输 ...

  6. Jmeter无法监听服务器4444端口

    阿里云服务器开放了4444端口 jmeter还是无法监听: 解决方法: 阿里云安全组添加端口5555 服务器中启动监听插件使用5555端口,使用命令:java -jar ./CMDRunner.jar ...

  7. hdu 4444 Walk (离散化+建图+bfs+三维判重 好题)

    Walk Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Total Submi ...

  8. bzoj 4444: [Scoi2015]国旗计划

    Description A国正在开展一项伟大的计划--国旗计划.这项计划的内容是边防战士手举国旗环绕边境线奔袭一圈.这 项计划需要多名边防战士以接力的形式共同完成,为此,国土安全局已经挑选了N名优秀的 ...

  9. scu 4444 Travel

    题意: 一个完全图,有n个点,其中m条边是权值为a的无向边,其它是权值为b的无向边,问从1到n的最短路. 思路: 首先判断1和n被哪种边连通. 如果是被a连通,那么就需要全部走b的边到达n,选择最小的 ...

随机推荐

  1. filter map reduce函数的使用

    #filter("处理逻辑","可迭代对象") 把可迭代对象依次处理逻辑处理,如果值为真就返回值,值为假就不返回; li = ['testA','yerA',' ...

  2. 通过HTTP请求响应过程了解HTTP协议

    通过HTTP请求响应过程了解HTTP协议 http://www.cnblogs.com/YeChing/p/6337378.html

  3. gridEh的bug

    grideh的bug,delphi和c++builder都存在. RAD自带的原始grid控件是好的. procedure TForm12.DBGridEh2ColExit(Sender: TObje ...

  4. 笔记本移动位置,切换网络ip后,虚拟机的mac系统无法联网解决

    1.手动配置新的ip

  5. pycharm添加版本控制

  6. C++复习:C++的类型转换

    C++的类型转换 1 类型转换名称和语法 C风格的强制类型转换(Type Cast)很简单,不管什么类型的转换统统是: TYPE b = (TYPE)a C++风格的类型转换提供了4种类型转换操作符来 ...

  7. 一小段测试atof的代码

    #include <stdio.h> //#include <stdlib.h> double a=0; int main(int argc, char *argv[]) { ...

  8. httpClient 深入浅出~

    本文偏重使用,简单讲述httpclient,其实在网络编程中,基于java的实现几乎都是包装了socket的通信,然后来模拟各种各样的协议:httpclient其实就是模拟浏览器发起想服务器端的请求, ...

  9. app开发中读取数据库信息的vue页面

    <template> <!-- 容器 --> <div class="container"> <!-- 标头 --> <div ...

  10. C# HttpWebRequest 错误总结

    1.form data 需要编码!!! byte[] data = new ASCIIEncoding().GetBytes("pattern=0&wwid=古兴越&good ...