月考(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**生日.昨天考完之后,还是那种考完试的释然感.目前,已经批出来了数学.英语.物理三门学科的成绩,语文还没有批出来.应该明天就能够批出来吧.现在趁着休息, ...
随机推荐
- Ubuntu 开机进入命令行模式
1.修改配置 sudo vim /etc/default/grub 把 GRUB_CMDLINE_LINUX_DEFAULT="quiet splash" 改为 GRUB_CMDL ...
- webrtc公开课
http://blog.csdn.net/yangzhenping/article/details/51152376 http://edu.csdn.net/huiyiCourse/live
- 如何在CentOS 7上安装EPEL源
EPEL 是什么? EPEL (Extra Packages for Enterprise Linux,企业版Linux的额外软件包) 是Fedora小组维护的一个软件仓库项目,为RHEL/CentO ...
- composer环境配置
一 下载composer.phar http://pan.baidu.com/s/1nuDQBzz cmd命令行切换到composer.phar文件目录下 运行: echo @php "%~ ...
- 解决IE6不支持position:fixed的bug
/*完整代码 */ /* 除IE6浏览器的通用方法 */ .ie6fixedTL { position: fixed; left:; top:; } .ie6fixedBR { position: f ...
- python 函数式编程工具
有三个内置函数与列表一起使用时非常有用:filter().map()和reduce(). 1. filter(function, sequence)返回的序列由function(item)结果为真的元 ...
- Genymotion加速下载虚拟镜像速度慢失败Connection timeout
Genymotion也算是个android的模拟程序了, Add new device后下载速度太慢了,容易失败 解决方法有二: 1.设置HTTP代理,在Setting->Network,自己设 ...
- caffe学习系列(4):视觉层介绍
视觉层包括Convolution, Pooling, Local Response Normalization (LRN), im2col等层. 这里介绍下conv层. layer { name: & ...
- UICollectionView + AFNetWorking 异步加载,局部刷新.
最近在做的项目需要cell里面的数据需要和后台实时交互.而collectionview reload会整体刷新. //m层 发送通知 [[NSNotificationCenter defaultCen ...
- centos7 & mysql
首先centos7很坑爹. 其次,在centos7上安装mysql更坑爹. 特此记录一次坑爹历程后的唯一出路. 安装mysql wget http://repo.mysql.com/mysql-com ...