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. Shiro密码处理

    散列算法一般用于生成数据的摘要信息,是一种不可逆的算法,一般适合存储密码之类的数据,常见的散列算法如 MD5.SHA等.一般进行散列时最好提供一个 salt(盐),比如加密密码"admin& ...

  2. git使用代理

    在使用git科隆一个repo的时候,因为这个repo的子模块是托管在google上的,还是因为gfw导致子模块科隆不下来 只好使用代理了,那么怎么配置git使用代理呢 代码如下 因为我用的是ss所以这 ...

  3. 使用NtQueryInformationFile函数获得不到完整路径

    #include <windows.h> #include <iostream> using namespace std; typedef struct _OBJECT_NAM ...

  4. 【动手学pytorch】pytorch的基础操作

    一.Tensor a)       张量是torch的基础数据类型 b)       张量的核心是坐标的改变不会改变自身性质. c)        0阶张量为标量(只有数值,没有方向的量),因为它不随 ...

  5. kaggle——贷款信用评估介绍

    介绍 对于金融机构的贷款业务来说,一个顾客的信用信息是极其重要的.因为只有了解客户的信用情况,才能决定是否通过客户的贷款申请.本次将会介绍如何根据用户的一些基本信息来判断顾客的信用或贷款偿还能力. 知 ...

  6. Android开发—错误记录1:W/System.err: java.net.ConnectException: Connection refused

    W/System.err: java.net.ConnectException: Connection refused 前台访问后台时,出现访问被拒绝情况:W/System.err: java.net ...

  7. 2019 Python工程师平均薪资22K,又涨了11.9%!

    转行的同学最关心的就是Python的薪资情况了.今天我们就来具体看一下Python现在的薪资情况. 这是一张网友统计的Python工程师工资情况图表.详细说明了现在Python工程师在各个城市的薪资情 ...

  8. POJ-1015 Jury Compromise(dp|01背包)

    题目: In Frobnia, a far-away country, the verdicts in court trials are determined by a jury consisting ...

  9. SSM到Spring Boot-校园商铺平台

    第04章 店铺注册功能模块 4-3 Thumbnailator图片处理和封装Util[通过java代码实现给图片打上水印] 4-3 Thumbnailator图片处理和封装Util[通过java代码实 ...

  10. 如何在Foxwell NT650 OBD2扫描仪上查看实时PID数据?

    这是在Foxwell NT650扫描仪上使用实时数据菜单的操作指南 . 实时数据菜单使您可以查看和记录来自电子控制模块的实时PID数据.菜单选项通常包括: 完整的数据清单 自定义数据列表 如何使用“完 ...