Codeforces 39J Spelling Check hash

题目链接:点击打开链接

题意:

给定2个字符串

选择第一个字符串的其中一个字母删除,使得2个字符串完全相同

问哪些位置可以选

思路:

hash求前缀后缀,然后枚举位置

#include <cstdio>
#include <algorithm>
#include<iostream>
#include<string.h>
#include <math.h>
#include<queue>
#include<map>
#include<vector>
#include<set>
using namespace std;
#define mod 100000007
#define ll long long
#define N 1000050
char s[N], c[N];
vector <int> ans;
ll l1[N], r1[N], l2[N], r2[N];
int main(){
    int i, j;
    while(~scanf("%s",s+1)){
        scanf("%s",c+1);
        int len1 = strlen(s+1), len2 = strlen(c+1);
        if(len1 -1 != len2){puts("0");continue;}
        l1[0] = 0;
        for(i = 1; i <= len1; i++) {
            l1[i] = l1[i-1]*26 + s[i];
            if(l1[i]>=mod) l1[i] %= mod;
        }
        r1[len1+1] = 0;
        for(i = len1; i ; i--) {
            r1[i] = r1[i+1]*26 + s[i];
            if(r1[i]>=mod) r1[i] %= mod;
        }

        l2[0] = 0;
        for(i = 1; i <= len2; i++) {
            l2[i] = l2[i-1]*26 + c[i];
            if(l2[i]>=mod) l2[i] %= mod;
        }
        r2[len2+1] = 0;
        for(i = len2; i ; i--) {
            r2[i] = r2[i+1]*26 + c[i];
            if(r2[i]>=mod) r2[i] %= mod;
        }
        ans.clear();
        for(i = 1; i <= len1; i++) {
            ll a = l1[i-1] + r1[i+1];
            ll b = l2[i-1]+r2[i];
            if(a==b)ans.push_back(i);
        }

        cout<<ans.size()<<endl;
        for(i = 0; i <ans.size(); i++)
            printf("%d%c", ans[i], i==ans.size()-1?'\n':' ');
    }
    return 0;
}

Codeforces 39J Spelling Check hash

时间: 2024-08-06 08:51:57

Codeforces 39J Spelling Check hash的相关文章

Codeforces 113B Petr# 字符串hash

题目链接:点击打开链接 #include <cstdio> #include <algorithm> #include <cstring> #include <vector> using namespace std; typedef unsigned long long ll; const int key = 1e9 + 7; const int N = 2000 + 2; ll xp[N], h[N]; char a[N], b[N], c[N]; int

CodeForces - 484BMaximum Value(hash优化)

个人心得:周测题目,一题没出,难受得一批.这个题目做了一个半小时还是无限WR,虽然考虑到了二分答案这个点上面了, 奈何二分比较差就想用自己的优化,虽然卡在了a=k*b+c,这里但是后面结束了这样解决还是超时了,看了一下网上的hash,思想一样 但是却优化了很多,服气 题目: You are given a sequence a consisting of n integers. Find the maximum possible value of  (integer remainder of a

SharePoint Search之(五)Query spelling correction— 查询拼写纠正

?? Query spelling correction 在使用搜索引擎的时候.假设一不小心输入错误,或者对于某个词语记得不太清楚,搜索引擎会自己主动纠正: 这个功能可以缩短用户的时间,很好用.在SharePoint 2013中.通过配置Search dictionary  能够实现类似的功能. SharePoint 2013自己维护了一个拼写词典.叫做默认拼写词典(default spelling dictionaries).这个拼写词典是SharePoint自己维护的,用户不能改动. 假设用

16.05.25-16.06.10 题集

继2016.05.24续: codeforces 651B. Beautiful Paintings-简单 http://codeforces.com/problemset/problem/651/B 大意:给出一个序列,求解其任意排列中满足ai?+?1?>?ai 的元素个数最大和. 分析:理想情况下,无重复元素的0从小到大的排列,满足条件的元素个数最多,是n-1. 非理想情况下还有重复元素,只要不断提取出重复的这些元素归到另一集合再这样讨论即可. #include <iostream>

CSRF攻击详解

CSRF是什么 CSRF(Cross-site request forgery),中文名称:跨站请求伪造,也被称为:one click attack/session riding,缩写为:CSRF/XSRF CSRF可以做什么 你这可以这么理解CSRF攻击:攻击者盗用了你的身份,以你的名义发送恶意请求.CSRF能够做的事情包括:以你名义发送邮件,发消息,盗取你的账号,甚至于购买商品,虚拟货币转账......造成的问题包括:个人隐私泄露以及财产安全. CSRF漏洞现状 CSRF这种攻击方式在200

APIO2015简要题解

最近老师把apio的题目拿出来了,然后由于我实在是菜,分数还没三位数...... ----------------我是分割线 1.巴厘岛的雕塑 N个数,分成连续的A-B个组,让每个组的和或起来最小,求最小值. 对于Task1 n<=100 由于涉及到位运算,所以很容易想到按二进制位来做.要让答案最小,显然要从二进制高位到低位判断,能取0就取0. 所以我们考虑一个n^3 dp  用 f[i][j] 表示在当前的值之下,前i个分j组能否符合条件,用x表示当前判断的数字. f[i][j]|=f[k][

浅谈CSRF攻击方式

一.CSRF是什么? CSRF(Cross-site request forgery),中文名称:跨站请求伪造,也被称为:one click attack/session riding,缩写为:CSRF/XSRF. 二.CSRF可以做什么? 你这可以这么理解CSRF攻击:攻击者盗用了你的身份,以你的名义发送恶意请求.CSRF能够做的事情包括:以你名义发送邮件,发消息,盗取你的账号,甚至于购买商品,虚拟货币转账......造成的问题包括:个人隐私泄露以及财产安全. 三.CSRF漏洞现状 CSRF这

【BZOJ1702】[usaco2007margold]队列平衡

原来蛤习线性探测的时候要每次加一个稍大一点的数而不是每次+1--连蛤习都不会写,我tmd是有多弱 原题: N(1<=N<=100000)头牛,一共K(1<=K<=30)种特色,每头牛有多种特色,用二进制01表示它的特色ID.比如特色ID为13(1101),则它有第1.3.4种特色.所以,我们认为第i头牛有第J个特色,那么整数k的二进制的第j位 肯定是 1. [i,j]段被称为平衡当且仅当K种特色在[i,j]内拥有 次数相同. 求能够平衡的最大的[i,j]段的长度. 这题附近都是蛤习

CSRF攻击原理以及防御

一.CSRF是什么? CSRF(Cross-site request forgery),中文名称:跨站请求伪造,也被称为:one click attack/session riding,缩写为:CSRF/XSRF. 二.CSRF可以做什么? 你这可以这么理解CSRF攻击:攻击者盗用了你的身份,以你的名义发送恶意请求.CSRF能够做的事情包括:以你名义发送邮件,发消息,盗取你的账号,甚至于购买商品,虚拟货币转账......造成的问题包括:个人隐私泄露以及财产安全. 三.CSRF漏洞现状 CSRF这