洛谷 P4503 [CTSC2014]企鹅QQ
暴力枚举不同的一位即可。。
主要是常数问题
1.统计答案时用sort速度快于用tr1/unordered_map,后者又快于map
(tr1/unordered_map完全达不到理论复杂度上的O(1)一次操作)(虽然复杂度一样,sort后统计比map要快得多)
2.幸好没卡自然溢出...双模hash直接T飞
#pragma GCC optimize(3)
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<vector>
using namespace std;
#define fi first
#define se second
#define mp make_pair
#define pb push_back
typedef long long ll;
typedef unsigned long long ull;
typedef pair<int,int> pii;
namespace Hash
{
typedef ull Hdata;
#define N 1000000
const int X=;
Hdata pwx[N+];
void init()
{
pwx[]=;
for(int i=;i<=N;i++) pwx[i]=pwx[i-]*X;
}
struct H
{
Hdata h;int sz;
H():h(),sz(){}
H(const Hdata &a,int b):h(a),sz(b){}
};
H operator+(const H &a,const H &b)
{
H ans;ans.sz=a.sz+b.sz;
ans.h=a.h+b.h*pwx[a.sz];
return ans;
}
bool operator==(const H &a,const H &b)
{
return a.sz==b.sz&&a.h==b.h;
}
}
using Hash::Hdata;
using Hash::H;
using Hash::X;
using Hash::pwx; int n,l,s;ll ans;
struct S
{
Hdata hs[];
S& operator=(const char *s)
{
for(int i=;i<=l;i++)
{
hs[i]=hs[i-]*X+s[i];
}
return *this;
}
H gett(int l,int r)
{
if(l>r) return H();
return H(hs[r]-hs[l-]*pwx[r-l+],r-l+);
}
}ss[];
char tmp[];
Hdata tta[];
int main()
{
int i,j,ttt,tt2;
Hash::init();
scanf("%d%d%d",&n,&l,&s);
for(i=;i<=n;i++)
{
scanf("%s",tmp+);
ss[i]=tmp;
}
for(j=;j<=l;j++)
{
ttt=;
for(i=;i<=n;i++)
tta[++ttt]=(ss[i].gett(,j-)+ss[i].gett(j+,l)).h;
sort(tta+,tta+ttt+);tt2=;
for(i=;i<=ttt;i++)
{
tt2++;
if(i==ttt||tta[i+]!=tta[i])
{
//printf("%d %d\n",j,tt2);
ans+=tt2*(tt2-)/;
tt2=;
}
}
}
printf("%lld",ans);
return ;
}
洛谷 P4503 [CTSC2014]企鹅QQ的更多相关文章
- 洛谷 P4503 [CTSC2014]企鹅QQ 解题报告
P4503 [CTSC2014]企鹅QQ 题目背景 PenguinQQ是中国最大.最具影响力的SNS(Social Networking Services)网站,以实名制为基础,为用户提供日志.群.即 ...
- [洛谷P4503][CTSC2014]企鹅QQ
题目大意:给你$n(n\leqslant3\times10^4)$个长度为$l(l\leqslant200)$的字符串,要你求出有多少对字符串是相似的,相似的定义是两个字符串只在一位上不同. 题解:可 ...
- 洛谷$P4503\ [CTSC2014]$企鹅$QQ$ 哈希
正解:哈希 解题报告: 传送门$QwQ$ 直接$O(len)$枚举哪一位,然后把这一位删了重新拼接起来,存桶里查下就成 $over$? 主要的难点大概在卡哈希+卡常$QAQ$ #include< ...
- Luogu P4503 [CTSC2014]企鹅QQ(字符串哈希)
P4503 [CTSC2014]企鹅QQ 题面 题目背景 \(PenguinQQ\) 是中国最大.最具影响力的 \(SNS(Social Networking Services)\) 网站,以实名制为 ...
- 【题解】P4503 [CTSC2014]企鹅QQ(哈希)
[题解]P4503 [CTSC2014]企鹅QQ(哈希) 考虑这样一种做法,将每个字符串的删去某个字符的新字符串的哈希值存下来,然后最后\(sort\)一遍双指针统计每个值相同的数的个数\(x\),这 ...
- 字符串Hash || BZOJ 3555: [Ctsc2014]企鹅QQ || P4503 [CTSC2014]企鹅QQ
题面:[CTSC2014]企鹅QQ 题解:无 代码: #include<iostream> #include<cstring> #include<cstdio> # ...
- Luogu P4503 [CTSC2014]企鹅QQ
思路 如果直接暴力的比较的话,不用想也知道会超时 所以考虑另一种方法,将前缀和的思想运用到hash中.用两个hash,一个从前往后记录,一个从后往前记录,然后枚举哪一位是不相同的,然后删掉这一位,将这 ...
- BZOJ 3555: [Ctsc2014]企鹅QQ [字符串哈希]【学习笔记】
3555: [Ctsc2014]企鹅QQ Time Limit: 20 Sec Memory Limit: 256 MBSubmit: 2046 Solved: 749[Submit][Statu ...
- bzoj3555: [Ctsc2014]企鹅QQ
将字符串hash.不难写.然而1.注意用longlong2.数组大小注意...3.似乎别人都用的unsigned long long ?. #include<cstdio> #includ ...
随机推荐
- kernel中对文件的读写【学习笔记】【原创】
/*1. 头文件 */ #include <linux/init.h> #include <linux/module.h> #include <linux/modulep ...
- Educational Codeforces Round 9 C. The Smallest String Concatenation —— 贪心 + 字符串
题目链接:http://codeforces.com/problemset/problem/632/C C. The Smallest String Concatenation time limit ...
- MYSQL进阶学习笔记十五:MySQL 的账号权限赋予!(视频序号:进阶_33,34)
知识点十六:MySQL的账号权限赋予(33) 一.MySQL权限简介 关于mysql的权限简单的理解就是mysql允许你做你全力以内的事情,不可以越界.比如只允许你执行select操作,那么你就不能执 ...
- LaTeX常用的符号
推荐新手使用的网站:http://latex.codecogs.com/eqneditor/editor.php \(\sum _{d|n}{u(d)F(\frac{n}{d})}\) \sum _{ ...
- regular
regular.py import re # . # 只能匹配一个字母,而不是2个或0个 # \ # 转义 # 'abc\\.com' r'abc\.com' # 字符集[] # 匹配他所包括的任意字 ...
- python 基础之第十天(闭包,装饰器,生成器,tarfile与hashlib模块使用)
局部变量与全局变量 局部变量:在函数里面定义的,只有当函数活动时才生效 全局变量:不在函数里面的 In [1]: x=10 In [2]: def bar(): ...: x=20 ...: prin ...
- zookeeper入门到精通
- JS搜索商品(跟外卖app店内搜索商品一样) ,keyup函数和click函数调用
HTML: input输入框: <input id="sea" type="text"> JS: //点击搜索商品 $('#mys').click( ...
- jquery : eval() 解析json的注意
jquery eval解析JSON中的注意点介绍 来在:http://www.jb51.net/article/40842.htm 在JS中将JSON的字符串解析成JSON数据格式,一般有两种方式: ...
- java:calendar类及一些比较实用的utils(一)
在java编程中经常会用到时间日期的计算.比较.格式化等等操作,刚开始接触Calendar类时,还是在初学习期间,小小白一枚,看着这个好复杂,懒惰心理作祟也就没有怎么去学习,后来在项目中经常用到,索性 ...