月考(cogs 1176)
【题目描述】
在上次的月考中Bugall同学违反了考场纪律还吃了处分,更可气的是在第二天的校会时
间学校就此事做了全校通报. 现已知在当天校会时间有总共N个同学听到了有关Bugall的处分决定.
Bugall同学在铁一有M个朋友,这M个人中有的可能听到了当天的处分决定,有的可能没
有听到,现在Bugall同学想知道他有几个朋友听到了当天的处分通报.
【输入格式】
第一行为一个整数N,从第2行到N+1行,每行用一个长度不超过200的字符串表示
一个人的名字.
第N+2行为一个整数M,从第N+3行到N+M+2行,每行用一个长度不超过200的字符
串表示Bugall同学一个朋友的名字.
【输出格式】
输出有几个Bugall同学的铁一朋友在当天的校会时间听到了Bugall处分通报.保证不重名。
【样例输入】
3
Dazui
Erge
Dapigu
2
Varpro
Erge
【样例输出】
1
/*跑的略慢的版本,用链表写的*/
#include<cstdio>
#include<iostream>
#include<cstring>
#define lon long long
#define mod 13212377
#define N 80010
using namespace std;
int head[mod+];int n,cnt;
char s1[];string s2;
struct node{
int pre;string ss;
};node e[N];
lon poww(lon a,lon b){
lon base=a,r=;
while(b){
if(b&)r*=base;
base*=base;
r%=mod;
base%=mod;
b>>=;
}
return r;
}
void add(){
lon tot=(s2[]-'A'+);int len=s2.length();
for(int i=;i<len;i++){
tot+=(s2[i]-'a')*poww(,i);
tot%=mod;
}
e[++cnt].ss=s2;
e[cnt].pre=head[tot];
head[tot]=cnt;
}
bool find(){
lon tot=(s2[]-'A'+);int len=s2.length();
for(int i=;i<len;i++){
tot+=(s2[i]-'a')*poww(,i);
tot%=mod;
}
for(int i=head[tot];i;i=e[i].pre)
if(e[i].ss==s2)return true;
return false;
}
int main(){
freopen("mtest.in","r",stdin);
freopen("mtest.out","w",stdout);
scanf("%d",&n);
for(int i=;i<=n;i++){
scanf("%s",s1);
int len=strlen(s1);s2="";
for(int j=;j<len;j++)
s2+=s1[j];
add();
}
scanf("%d",&n);int ans=;
for(int i=;i<=n;i++){
scanf("%s",s1);
int len=strlen(s1);s2="";
for(int j=;j<len;j++)
s2+=s1[j];
if(find())ans++;
}
printf("%d",ans);
return ;
}
/*
今天听YLF大神说了一种从来没听说过的hash的实现方式:自然溢出。
就是让系统自动对用一个大数对我们的数据取模,虽然可能会发生hash碰撞,但概率很小,而且很快。
*/
#include<cstdio>
#include<iostream>
#include<cstring>
#define P 26
#define p 17
#define N 80010
#define mod 13457
using namespace std;
char s[];int head[mod+],n,cnt;
struct node{
int v,pre,sum;
};node e[N];
int Has(){
int len=strlen(s),tot=s[]-'A'+;
for(int i=;i<len;i++)
tot=tot*P+s[i]-'a'+;
return tot;
}
int has(){
int len=strlen(s),tot=s[]-'A'+;
for(int i=;i<len;i++)
tot=(tot*p+s[i]-'a'+)%mod;
return tot;
}
void add(){
int Ha=Has();
int ha=has();
if(ha<)ha=-ha;
for(int i=head[ha];i;i=e[i].pre){
if(e[i].v==Ha){
e[i].sum++;return;
}
}
++cnt;
e[cnt].v=Ha;
e[cnt].sum++;
e[cnt].pre=head[ha];
head[ha]=cnt;
}
int query(){
int Ha=Has();
int ha=has();
if(ha<)ha=-ha;
for(int i=head[ha];i;i=e[i].pre){
if(e[i].v==Ha)return e[i].sum;
}
return ;
}
int main(){
freopen("mtest.in","r",stdin);
freopen("mtest.out","w",stdout);
scanf("%d",&n);
for(int i=;i<=n;i++){
scanf("%s",s);
add();
}
scanf("%d",&n);int ans=;
for(int i=;i<=n;i++){
scanf("%s",s);
ans+=query();
}
printf("%d",ans);
return ;
}
月考(cogs 1176)的更多相关文章
- cogs 1176. [郑州101中学] 月考
1176. [郑州101中学] 月考 ★ 输入文件:mtest.in 输出文件:mtest.out 简单对比时间限制:1 s 内存限制:128 MB [题目描述] 在上次的月考中Bug ...
- cogs 1176. [郑州101中学] 月考 Set 做法
1176. [郑州101中学] 月考 ★★☆ 输入文件:mtest.in 输出文件:mtest.out 简单对比时间限制:1 s 内存限制:128 MB [题目描述] 在上次的月考中B ...
- cogs 1176. [郑州101中学] 月考 Map做法
1176. [郑州101中学] 月考 ★★☆ 输入文件:mtest.in 输出文件:mtest.out 简单对比时间限制:1 s 内存限制:128 MB [题目描述] 在上次的月考中B ...
- cogs 1176. [郑州101中学] 月考 字典树
1176. [郑州101中学] 月考 ★★☆ 输入文件:mtest.in 输出文件:mtest.out 简单对比时间限制:1 s 内存限制:128 MB [题目描述] 在上次的月考中B ...
- COGS——C1176. [郑州101中学] 月考
http://cogs.pro/cogs/problem/problem.php?pid=1176 [题目描述] 在上次的月考中Bugall同学违反了考场纪律还吃了处分,更可气的是在第二天的校会时 间 ...
- C#学习笔记(二十):C#总结和月考讲解
m1w1d2_console_variable_constant 输入Console.WriteLine(); 输出Console.ReadLine(); 快捷键 折叠代码:快捷键“Ctrl+ K + ...
- S5第一次月考
# Python五期月考一 # 1 介绍 # 满分100分,90分及格 # # 考试范围: # 1.Python语法 # 2.数据类型 # 3.流程控制 # 4.函数 # 5.模块 # # 考试时间: ...
- 洛谷 P4256 公主の#19准备月考
题目背景 公主在玩完游戏后,也要月考了.(就算是公主也要月考啊QWQ) 题目描述 公主的文综太差了,全校排名1100+(全校就1100多人),她分析了好久,发现她如果把所有时间放在选择题上,得分会比较 ...
- defender 月考总结
今天是2019年5月28日,昨天月考了,也是C**生日.昨天考完之后,还是那种考完试的释然感.目前,已经批出来了数学.英语.物理三门学科的成绩,语文还没有批出来.应该明天就能够批出来吧.现在趁着休息, ...
随机推荐
- Mac Pro 软件收藏
记录下Pro Mac中安装过的软件: 编号 软件名 功能说明 1 QQ 2 微信 3 搜狗输入法 4 Chrome 浏览器 Chrome 及其 插件“个性化设置”备份 5 360云盘 ...
- div动态显示iframe内容
在div里隐藏不了iframe <div id="popupmenu" style="position:relative; display:none; z-inde ...
- 转一篇简易易懂的android回调的实现--->(转的)
回调机制在 Android 监听用户界面操作中的体现 本文讨论以下两个内容: 1. 回调函数 2. 回调机制在 Android框架 监听用户界面操作中的作用 一 回调函数 回调函数就是一个通过函数 ...
- PowerDesigner的使用(一)
一. PowerDesigner 功能 1. 需求管理:记录需求,分析设计模型 2. 生成文档:生成HTML格式文档,方便沟通. 3. 影响度分析:模型之间连接起来,同步修改功能. 4. 数据映射:提 ...
- iOS开发——多线程篇——快速生成沙盒目录的路径,多图片下载的原理、SDWebImage框架的简单介绍
一.快速生成沙盒目录的路径 沙盒目录的各个文件夹功能 - Documents - 需要保存由"应用程序本身"产生的文件或者数据,例如:游戏进度.涂鸦软件的绘图 - 目录中的文件会被 ...
- codemirror和ace editor的语法高亮
两个javascript库用做在线代码编辑器都是非常优秀的选择 我这两天对这两个类库做了简单的研究,重点是语法高亮的自定义: ace editor的主要思路是生成状态机,从一个startstate开始 ...
- 如何在 CentOS 7 用 cPanel 配置 Nginx 反向代理
导读 Nginx 是最快和最强大的 Web 服务器之一,以其高性能和低资源占用率而闻名.它既可以被安装为一个独立的 Web 服务器,也可以安装成反向代理 Web 服务器.在这篇文章,我将讨论在安装了 ...
- Android实用代码模块集锦
1. 精确获取屏幕尺寸(例如:3.5.4.0.5.0寸屏幕) 1 2 3 4 5 6 public static double getScreenPhysicalSize(Activity ctx) ...
- nc 局域网聊天+文件传输(netcat)
nc 局域网聊天+文件传输 nc的全程是netcat,这个工具非常好用. 有时候我们需要在局域网内传送一些文本消息或者文件的时候,通常的做法是安装一些局域网通讯软件,然后来做.其实不必要这样,使用nc ...
- 16 BasicHashTable基本哈希表类(三)——Live555源码阅读(一)基本组件类
这是Live555源码阅读的第一部分,包括了时间类,延时队列类,处理程序描述类,哈希表类这四个大类. 本文由乌合之众 lym瞎编,欢迎转载 http://www.cnblogs.com/oloroso ...