XEN 3166

这题原题是spj,校oj上只用判断yes no,不过也差不多

题意分析之后就是求两个东西:

  • 字典序最小的长度为m的子序列
  • 同时这个字典序严格大于某个字符串

用序列自动机 先尽量相同,然后再考虑严格大于

#include <bits/stdc++.h>

using namespace std;
const int maxn = 200010;
int last[27], nxt[maxn][27], len; void init(const char s[]) {
len = (int) strlen(s);
for (int i = 0; i < 26; ++i) last[i] = len + 1;
for (int i = len; i >= 1; i--) {
for (int j = 0; j < 26; ++j) {
nxt[i][j] = last[j];
}
last[s[i - 1] - 'A'] = i;
}
for (int j = 0; j < 26; ++j) {
nxt[0][j] = last[j];
}
} char s[2][maxn];
int n, m; int solve(char pre[], char ans[], const char name[]) {
if (len < m) return false;
if (pre[1] == name[0]) {
if (m <= 1) return 0;
int a = 0, b = 0, c = 0;
for (int i = 1, j = 1; i < m && j <= len; ++i) {
ans[i] = pre[i];
for (int k = pre[i + 1] - 'A' + 1; k < 26; ++k) {
if (i + len - nxt[j][k] + 1 >= m) {
a = i;
b = j;
c = k;
break;
}
}
j = nxt[j][pre[i + 1] - 'A'];
}
if (!a) return 0;
ans[a + 1] = char(c + 'A');
//
for (int i = a + 1, j = nxt[b][c]; i < m; ++i) {
for (int k = 0; k < 26; ++k) {
if (i + len - nxt[j][k] + 1 >= m) {
ans[i + 1] = char(k + 'A');
j = nxt[j][k];
break;
}
}
}
} else {
ans[1] = name[0];
for (int i = 1, j = nxt[0][name[0] - 'A']; i < m; ++i) {
for (int k = 0; k < 26; ++k) {
if (i + len - nxt[j][k] + 1 >= m) {
ans[i + 1] = char(k + 'A');
j = nxt[j][k];
break;
}
}
}
}
return 1;
} string p[1010]; int main() {
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
cin >> n >> m;
for (int i = 1; i <= n; ++i) {
cin >> p[i];
}
sort(p + 1, p + 1 + n);
bool flag = 1;
for (int i = 1; i <= n; ++i) {
init(p[i].c_str());
if (!solve(s[i % 2], s[1 - i % 2], p[i].c_str())) {
flag = 0;
break;
}
}
if (flag) cout << "YES" << '\n';
else cout << "NO" << '\n'; return 0;
}

XEN 3166的更多相关文章

  1. 虚拟机体验之 Xen 篇 —— 令人脑洞大开的奇异架构

    这一篇我要体验的虚拟机系统是 Xen.在虚拟机领域,Xen 具有非常高的知名度,其名字经常在各类文章中出现.同时 Xen 也具有非常高的难度,别说玩转,就算仅仅只是理解它,都不是那么容易.之所以如此, ...

  2. 【转】Xen与XenServer的区别

    说到XenServer,总是离不开Xen,所以我要说他们的区别,得首先从Xen开始说起! Xen体系架构 Xen hypervisor体系架构 Xen 的 VMM ( Xen Hypervisor ) ...

  3. Xen之初体验:XenMotion、 StorageMotion、Site Recovery、Power Management 各种新、高级功能免费

    Xenserver 的新版本6.2现在已经全面开源,省掉了原有的序列号,也能免费体验曾经标题中的付费高级功能. 安装镜像:http://downloadns.citrix.com.edgesuite. ...

  4. Citrix Xen Desktop安装配置

    Citrix虚拟化的东西其实和我现在做的东西完全没有关系的.反正接到通知要搭一个Citrix Xen Desktop那就做. 先放几个教程: :跟着图片通过XenDesktop7发布Win8桌面 这个 ...

  5. xen下离线读取虚拟机磁盘镜像的补丁

    之前在xen-3.4.2和xen-4.1.2下做过几个基于qemu模拟器的补丁,就是想着不用通过xm create(xen3下面)或xl create(xen4下面)启动虚拟机,而能直接去解析磁盘镜像 ...

  6. XEN的启动信息输出到“Platform timer is 14.318MHz HPET”就暂停接收的解决办法

    使用Serial Over Lan(SOL)来双机调试 XEN,在 XEN 启动时,引导信息输出到以下这一句时,就不再发送调试信息了: ...(XEN) Intel machine check rep ...

  7. 利用 Serial Over Lan(SOL)搭建 XEN 的调试信息输出环境

    如有转载,请注明出处与本文连接,谢谢! 修改XEN的源码实现额外的功能,需要有一个调试环境来得到XEN的调试信息(有关源码编译并安装 XEN 请阅读我以前的博文:在CentOS下源码安装 Xen并搭建 ...

  8. Ubuntu系统下Xen虚拟机的基本安装方法(代码创建)

    Ubuntu上Xen安装虚拟机方法一dd一个空的磁盘sudo dd if=/dev/zero of=/home/vm1.img bs=1G count=8 下载Xen VM通用配置文件 sudo wg ...

  9. Xen启动过程分析(还是分享过来吧,找了好长时间)

    XEN启动过程     ‍Xen Hypervisor运行在Ring0,在启动过程中,Xen首先被引导:系统由Grub启动,遵循Multiboot引导规范:然后Linux内核做为module也被引导入 ...

随机推荐

  1. 十二、CI框架之数据库查询

    一.在database文件中写明数据库相关信息 二.我们数据库中的表如图所示 三.在CI中查询数据库内容 四.在浏览器输出 不忘初心,如果您认为这篇文章有价值,认同作者的付出,可以微信二维码打赏任意金 ...

  2. 2020/1/31 PHP代码审计之文件包含漏洞

    0x00 文件包含简介 文件包含漏洞的产生原因是在通过引入文件时,引用的文件名,用户可控,由于传入的文件名没有经过合理的校检,或者校验被绕过,从而操作了预想之外的文件,就可能导致意外的文件泄露甚至恶意 ...

  3. Bootstrap-模态框 modal.js

    参考网址:http://v3.bootcss.com/(能抄不写) 1.大模态框 图片效果图: 代码:(button的属性data-target对应的是具体模态框的class) <!-- Lar ...

  4. vue element-ui Table数据解除自动响应方法

    在对列表Table进行数据编辑时,会存在table的增删改操作后,列表view也自动响应发生了变化,原因是赋值的数据是一个引用类型共享一个内存区域的.所以我们就不能直接连等复制,需要重新克隆一份新的数 ...

  5. cat <<EOF> file

    .多行导入文件(新建文件或者覆盖文件内容)   cat << EOF > abcd.txt Hello! This is a test file! Test for cat and ...

  6. 8. react 基础 - props 默认值和类型限制 与 Props , State , render 函数 关系

    一. PropTypes 与 DefaultProps 官方文档 1. PropTypes 属性校验 引入 PropTypes import PropTypes from 'prop-types'; ...

  7. java课程之团队开发之用户模板和用户场景

    用户模板与用户场景: 姓名:孙某 性别年龄:男 19岁 职业;学生 收入:无 知识层次能力:大学生,用电脑熟练. 生活/工作状况:正常进行上课,学霸. 动机目的,困难:喜欢依据自己的兴趣进行学习. 用 ...

  8. Vue-router(3)之 router-link 和 router-view 使用

    router 导入 import Vue from 'vue' import Router from 'vue-router' import order from '@/view/New/order. ...

  9. hadoop cmd

    一.hadoop文件操作 1.Ls hadoop fs -ls / 2.Put hadoop fs -put xx /path 3.Mkdir hadoop fs -mkdir 4.要从HDFS中删除 ...

  10. vue项目起步准备

    1. 项目环境: node.js运行环境(不一定要最新特性的最新版本,用合适的版本即可) 2.项目放在git上管理(网上云仓库码云) 1.创建仓库:选择语言js 2.本地代码和线上代码通过git做成关 ...