codeforces727E Games on a CD

/* ***********************************************
Author        :devil
************************************************ */
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
#include <vector>
#include <queue>
#include <set>
#include <stack>
#include <map>
#include <unordered_map>
#include <string>
#include <time.h>
#include <cmath>
#include <stdlib.h>
#define LL long long
#define rep(i,a,b) for(int i=a;i<=b;i++)
#define dep(i,a,b) for(int i=a;i>=b;i--)
#define ou(a) printf("%d\n",a)
#define pb push_back
#define pii pair<int,int>
#define mkp make_pair
#define IN freopen("in.txt","r",stdin);
#define OUT freopen("out.txt","w",stdout);
using namespace std;
const int inf=0x3f3f3f3f;
const int mod=1e9+7;
const int N=1e5+10;
unordered_map<string,int>mp;
int n,l,m;
string s,u;
int main()
{
    cin>>n>>l>>s>>m;
    s+=s;
    for(int i=1;i<=m;i++)
    {
        cin>>u;
        mp[u]=i;
    }
    int L=n*l;
    bool ok;
    vector<int>ans(n,0);
    for(int ind=L-l;ind<L;ind++)
    {
        ok=1;
        vector<bool>mk(m+1,0);
        for(int i=0;i<n&&ok;i++)
        {
            auto it=mp.find(s.substr(ind+i*l,l));
            if(it==mp.end()||mk[it->second])
            {
                ok=0;
                break;
            }
            mk[it->second]=1;
            ans[i]=it->second;
        }
        if(ok) break;
    }
    if(!ok) printf("NO\n");
    else
    {
        printf("YES\n");
        for(auto j:ans) printf("%d ",j);
    }
    return 0;
}
时间: 2024-11-07 15:07:20

codeforces727E Games on a CD的相关文章

【CodeForces727E/CF727E】Games on a CD (字符串哈希)

题目: CodeForces727E 分析: 看到字符串比较,肯定想到哈希啊--现学的哈希,先丢两个重要的公式 (\(seed\)是大于字符集大小的质数,\(p\)是大质数) \[hash[i]=(hash[i-1]*seed+s[i])mod \ p\] \[hash[l,r]=(hash[r]-hash[l-1]*seed^{r-l+1})mod \ p\] 把哈希想象成\(seed\)进制数,第二个公式很容易推出来.注意写的时候要防止出现负数(详见代码) 为了降低取模后不同字符串获得相同哈

Linux系统1.md

计算机 介绍 电子计算机(英语:computer),亦称电脑,是一种利用电子学原理,根据一系列指令对数据进行处理的工具. 在现代,机械计算机的应用已经完全被电子计算机所替换,其所相关的技术研究叫计算机科学,而"计算机技术"指的是将计算机科学的成果应用于工程实践所派生的诸多技术性和经验性成果的总合."计算机技术"与"计算机科学"是两个相关而又不同的概念,它们的不同在于前者偏重于实践而后者偏重于理论.此外,电子计算机亦被形象地称作电脑.至于由数据为核

【安全牛学习笔记】Linux缓冲区溢出

Linux缓冲区溢出 FUZZING Crossfire 1.9.0版本接受入展socket连接时攒在缓冲区溢出漏洞 调试工具 edb 运行平台 Kali i486虚拟机 [email protected]:~# cd /usr/games/ [email protected]:/usr/games# ls crossfire [email protected]:/usr/games#  rm -rf crossfire [email protected]:~# mv crossfie.tar.

【Linux探索之旅】第二部分第三课:文件和目录,组织不会亏待你

内容简介 1.第二部分第三课:文件和目录,组织不会亏待你 2.第二部分第四课预告:文件操纵,鼓掌之中 文件和目录,组织不会亏待你 上一次课我们讲了命令行,这将成为伴随我们接下来整个Linux课程的一个重要部分. 大宝啊明天见,命令行啊天天见~ 今天的标题里的那句"组织不会亏待你",不是说Linux社群是个非*法组织,不*良帮*派.不是的,我们还是很廉洁的啊~ 是因为这一课我们要来谈一谈Linux系统的文件和目录是如何组织的. 使用过Windows系统的用户,应该对Windows系统里的

2. 软件有很多种,也有各种分类办法: ShrinkWrap (在包装盒子里面的软件,软件在CD/DVD上); Web APP (基于网页的软件); Internal Software (企业或学校或某组织内部的软件); Games (游戏); Mobile Apps (手机应用); Operating Systems (操作系统); Tools

 选取对你最相关的一类软件,  请回答:(web app)  1) 此类软件是什么时候开始出现的, 这些软件是怎么说服你(陌生人)成为他们的用户的?  他们的目标都是盈利么?  他们的目标都是赚取用户的现金么?还是别的?        web最早起源于1980年蒂姆·伯纳斯-李构建的ENQUIRE项目,后英国人Tim Berners-Lee在1989年提出的web应用架构技术.从1992年开始兴起的技术包括JAVA,Javascript,Flash,Browers等技术的兴起,web app和桌

软件有很多种,也有各种分类办法: ShrinkWrap (在包装盒子里面的软件,软件在CD/DVD上); Web APP (基于网页的软件); Internal Software (企业或学校或某组织内部的软件); Games (游戏); Mobile Apps (手机应用); Operating Systems (操作系统); Tools (工

答:第一种:操作系统     1) 1956年出现了世界上第一个操作系统GM-NAA I/O ,是由通用公司为大型机 IBM 704 开发的.当时组装好的电脑都会自带有windows操作系统. 他们的目标是盈利和赚取用户的现金,许多人熟知的WindowsXP,Windows 7.Windows 8,Windows 95,一直到现在Windows10,微软操作系统平台经历了许多次升级.财报显示,微软公司盈利中操作系统软件收费是主要来源.     2)  第一次使用操作系统是小学四年级的时候,当时9

Livemedia-creator- How to create and use a Live CD

Livemedia-creator- How to create and use a Live CD Note for older method (namely for Fedora 23) using livecd-tools (livecd-creator) visit https://fedoraproject.org/wiki/How_to_create_and_use_a_Live_CD Note If you simply want to burn a pre-made ISO to

相对路径、绝对路径、cd、mkdir、rm命令举例

一.相对和绝对路径 相对路径 相对当前目录位置的路径 [[email protected]_46_188_centos /]# cd /usr/ [[email protected]_46_188_centos usr]# ls bin  etc  games  include  lib  lib64  libexec  local  sbin  share  src  tmp [[email protected]_46_188_centos usr]# [[email protected]_4

常用命令su ls cp cd mv cat touch mkdir rm head less more pwd tac 等

1.用户切换 su:switch user su kevin   //半切换,切换到kevin用户,但是不读取kevin用户的配置文件 su - kevin   //完全切换,执行这个命令的时候表示切换到kevin用户,并且重新读取用户环境相关配置文件 clear   /*清屏*/ 2.pwd pwd   //printing working directory,显示当前目录 3.cd cd:change directory 切换目录 cd 切换到用户的家目录,也就是主目录,Home direc