洛谷 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 ...
随机推荐
- VK Cup 2012 Qualification Round 1 E. Phone Talks —— DP
题目链接:http://codeforces.com/contest/158/problem/E E. Phone Talks time limit per test 3 seconds memory ...
- log4j 配置文件详解
[1]从零开始 a). 新建Java Project>>新建package>>新建java类: b). import jar包(一个就够),这里我用的是log4j-1.2.14 ...
- boost replace_if replace_all_regex_copy用法
#include <boost/algorithm/string.hpp> // for is_any_of #include <boost/range/algorithm/repl ...
- 用python做自动化测试--Python实现远程性能监控
http://blog.csdn.net/powerccna/article/details/8044222 在性能测试中,监控被测试服务器的性能指标是个重要的工作,包括CPU/Memory/IO/N ...
- testing
doctest_test.py def square(x): ''' 这里需要空格 >>> square(2) 4 啦啦 >>> square(3) 9 上不一行能 ...
- 「BZOJ3083」遥远的国度(树剖换根
3083: 遥远的国度 Time Limit: 10 Sec Memory Limit: 512 MBSubmit: 4859 Solved: 1372[Submit][Status][Discu ...
- Tensorboard 的简单使用
确保环境以及安装好tensorflow以及tensorboard 下面通过一个简单的例子来显示一下使用方式,一个向量加法的图结构. import tensorflow as tf a = tf.con ...
- JAVA 中的堆和栈
栈与堆都是Java用来在Ram中存放数据的地方.与C++不同,Java自动管理栈和堆,程序员不能直接地设置栈或堆. Java的堆是一个运行时数据区,类的对象从中分配空间.这些对象通过new.n ...
- float和Float的区别
float是基本数据类型,Float是包装类(封装类).封装类可将接本数据类型封装后当作对象进行操作,并为各种基本数据类型提供各种转换功能.例如Float f = new Float(3.4f);,即 ...
- 【原】putty配置下载
文章出自:http://www.cnblogs.com/david-zhang-index/p/3205354.html putty配置下载,已经配置好了,颜色非常不错 PUTTY.zip