月考(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**生日.昨天考完之后,还是那种考完试的释然感.目前,已经批出来了数学.英语.物理三门学科的成绩,语文还没有批出来.应该明天就能够批出来吧.现在趁着休息, ...
随机推荐
- maven工程通过命令打包
dos下cd到pom.xml所在的目录,输入maven命令:mvn clean package,回车即可. 会打成一个.war包在target文件夹下.
- HDU 5014 Number Sequence(位运算)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5014 解题报告:西安网赛的题,当时想到一半,只想到从大的开始匹配,做异或运算得到对应的b[i],但是少 ...
- 实操UNITY3D接入91SDK安卓版
原地址:http://bbs.18183.com/thread-149758-1-1.html 本文内容为创建UNITY3D接入91SDK的DEMO的具体操作过程.本人水平有限,UNITY3D与And ...
- 2015安徽省赛 J.镜像树
http://xcacm.hfut.edu.cn/problem.php?id=1214 乱搞题 数组+结构体 递归遍历 #include<iostream> #include<cs ...
- div 自动满屏
通常通过jq来做,类似这样: $('#navigation').css({ height: $(window).innerHeight() }); css3后,只需要用 下面这段样式即可 #navig ...
- 深入浅出Java回调机制
本文转载自http://hellosure.iteye.com/blog/1130176 在网上看到了一个比喻,觉得很形象,这里借用一下: 你有一个复杂的问题解决不了,打电话给你的同学,你的同学说可以 ...
- 【leetcode】Spiral Matrix II
Spiral Matrix II Given an integer n, generate a square matrix filled with elements from 1 to n2 in s ...
- hdu 1195
题意:就是给你n组的四位数,在一次变化中又一位数字可以变化,而变化的方式为加一减一或者是与隔壁的互换,注意,是每一个数字都可以, 求最少的变化次数到达目标的数字 一看这个就应该知道这是一个bfs的题目 ...
- ssh免密码登陆设置
服务器端 CentOS 6.5下编辑/etc/ssh/sshd_config MacOSx下编辑/etc/sshd_config #开启公钥验证 RSAAuthentication yes Pubke ...
- 解读Unity中的CG编写Shader系列六(漫反射)
转自 http://www.itnose.net/detail/6116553.html 如果前面几个系列文章的内容过于冗长缺乏趣味着实见谅,由于时间原因前面的混合部分还没有写完,等以后再补充,现在开 ...