当前位置: 首页 > news >正文

[FZSZOJ 1223] 上海红茶馆

1223: 上海红茶馆 ~ Chinese Tea

时间限制: 1 Sec
内存限制: 128 MB

题目描述

你现在正在经营一家红茶馆, 而且这里有各种各样的红茶, 你现在把这些红茶分成了N个等级, 每个等级的茶有一个品质Q。

现在每一个来的客人都会要求一个品质为S的茶, 你需要迅速的回答他是否有。

输入

第一行两个数N,M。
下面一行N个数, 分别表示每个等级的茶的品质Q。
下面一行M个数, 分别表示询问的品质S。

输出

输出一行M个字符, 表示回答是否。 Y表示有, N表示没有。

样例输入

5 5
1 3 4 6 8
1 2 3 4 5

样例输出

YNYYN

提示

30%:N,M<5000

100%:N,M<200000

【题解】

本题有多种解法:

首先我想到自己开一个bool数组来哈希一下,发现哈希的不够优秀,过了85%。

然后我就想到了排序+二分,这样就可以过了,1800ms

 1 #include<stdio.h>
 2 #include<algorithm>
 3 using namespace std;
 4 int n,m,a[200001];
 5 inline int getint() {
 6     int x=0,f=1; char c;
 7     c=getchar();
 8     while(c<'0'||c>'9') {if (c=='-') f=-1; c=getchar();}
 9     while(c>='0'&&c<='9') {x=(x<<3)+(x<<1)+c-'0';c=getchar();}
10     return x*f;
11 }
12 int main() {
13     n=getint();m=getint();
14     for (int i=1;i<=n;++i)a[i]=getint();
15     sort(a+1,a+n+1);
16     bool f=0;
17     for (int i=1;i<=m;++i,f=0) {
18         int x,l=1,r=n; x=getint();
19         while(l<=r) { //cout<<l<<' '<<r<<endl;
20             if(a[l]==x||a[r]==x) {f=1; break;}
21             int mid=(l+r)>>1;
22             if(a[mid]==x) {f=1;break;}
23             if(x<a[mid]) r=mid-1;
24             else if(x>a[mid]) l=mid+1;
25         }
26         if(f) printf("Y");
27         else printf("N");
28     }
29     printf("\n");
30     return 0;
31 }
View Code

然后我就发现了,可以用STL的map!就又写了一个简单多的程序,AC了,4000ms

 1 #include<stdio.h>
 2 #include<map> 
 3 #include<algorithm>
 4 using namespace std;
 5 int n,m;
 6 map<int,bool> a; 
 7 inline int getint() {
 8     int x=0,f=1; char c;
 9     c=getchar();
10     while(c<'0'||c>'9') {if (c=='-') f=-1; c=getchar();}
11     while(c>='0'&&c<='9') {x=(x<<3)+(x<<1)+c-'0';c=getchar();}
12     return x*f;
13 }
14 int main() {
15     n=getint();m=getint();
16     for (int i=1;i<=n;++i) {
17         int x;x=getint();
18         a[x]=1;
19     }
20     
21     bool f=0;
22     for (int i=1;i<=m;++i,f=0) {
23         int x,l=1,r=n; x=getint();
24         if(a[x]==1) printf("Y");
25         else printf("N");
26     }
27     printf("\n");
28     return 0;
29 }
View Code

还是二分快啊TAT我的哈希还是炸啊QAQQQQQ

 

转载于:https://www.cnblogs.com/TonyNeal/p/fzszoj1223.html

相关文章:

  • Haskell语法
  • CSharp面向对象设计模式纵横谈--Singleton Pattern 听课笔记
  • 5/6月学习工作总结(压力越大,意志越坚定)
  • Oracle临时表(Temporary Table)
  • 模块化开发
  • MVVM框架下,WPF实现Datagrid里的全选和选择
  • nodjs html 转 pdf
  • 动态创建HTML内容
  • 保存对象的不同状态值
  • Linux练习(write写入)
  • matlab练习程序(随机游走图像)
  • 远程桌面连接记录彻底清除
  • Android中使用WebView, WebChromeClient和WebViewClient加载网页
  • 多态的好处和弊端以及多态的理解
  • 要乐观对待生活
  • 【技术性】Search知识
  • Git初体验
  • Java小白进阶笔记(3)-初级面向对象
  • nodejs:开发并发布一个nodejs包
  • npx命令介绍
  • 百度小程序遇到的问题
  • 分布式事物理论与实践
  • 浮现式设计
  • 快速构建spring-cloud+sleuth+rabbit+ zipkin+es+kibana+grafana日志跟踪平台
  • 使用putty远程连接linux
  • 我建了一个叫Hello World的项目
  • 小程序 setData 学问多
  • 怎么把视频里的音乐提取出来
  • NLPIR智能语义技术让大数据挖掘更简单
  • Prometheus VS InfluxDB
  • 回归生活:清理微信公众号
  • ​TypeScript都不会用,也敢说会前端?
  • ​软考-高级-系统架构设计师教程(清华第2版)【第12章 信息系统架构设计理论与实践(P420~465)-思维导图】​
  • ​软考-高级-信息系统项目管理师教程 第四版【第14章-项目沟通管理-思维导图】​
  • #AngularJS#$sce.trustAsResourceUrl
  • #LLM入门|Prompt#1.8_聊天机器人_Chatbot
  • #pragam once 和 #ifndef 预编译头
  • #快捷键# 大学四年我常用的软件快捷键大全,教你成为电脑高手!!
  • #我与Java虚拟机的故事#连载04:一本让自己没面子的书
  • (003)SlickEdit Unity的补全
  • (2)(2.4) TerraRanger Tower/Tower EVO(360度)
  • (二)丶RabbitMQ的六大核心
  • (附源码)springboot金融新闻信息服务系统 毕业设计651450
  • (附源码)springboot太原学院贫困生申请管理系统 毕业设计 101517
  • (十二)devops持续集成开发——jenkins的全局工具配置之sonar qube环境安装及配置
  • (一)使用Mybatis实现在student数据库中插入一个学生信息
  • (转)真正的中国天气api接口xml,json(求加精) ...
  • (转)总结使用Unity 3D优化游戏运行性能的经验
  • .net core 调用c dll_用C++生成一个简单的DLL文件VS2008
  • .NET 将多个程序集合并成单一程序集的 4+3 种方法
  • .Net6 Api Swagger配置
  • .NET的微型Web框架 Nancy
  • .NET国产化改造探索(一)、VMware安装银河麒麟
  • @requestBody写与不写的情况
  • [ vulhub漏洞复现篇 ] struts2远程代码执行漏洞 S2-005 (CVE-2010-1870)