【POJ3080】Blue Jeans

2023-10-20 09:50
文章标签 blue poj3080 jeans

本文主要是介绍【POJ3080】Blue Jeans,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

这道题我们发现每个串的长度只有60

所以对于第一个串(或者选一个你喜欢的)枚举子串分别与其他串KMP匹配

注意长度相等时字典序最小&&长度<3时 no significant commonalities

 1 #include<cstdio>
 2 #include<cstring>
 3 using namespace std;
 4 const int len=60;
 5 int Q,n,tmplen,lenth,pre[65],m[65];
 6 char s[12][65],ans[65],tmp[65];
 7 int dic(){
 8     if (tmplen!=lenth) return 0;
 9     for (int i=1;i<=tmplen;i++){
10         if (tmp[i]<ans[i]) return 1;
11         if (tmp[i]>ans[i]) return 0;
12     }
13     return 0;
14 }
15 void KMP(int l,int r){
16     int p=l,q=1;
17     while (p<=r){
18         tmp[q]=s[1][p];
19         p++;q++;
20     }
21     tmplen=r-l+1;
22     pre[1]=0;
23     for (int i=2;i<=tmplen;i++){
24         int j=pre[i-1];
25         while (j&&tmp[j+1]!=tmp[i]) j=pre[j];
26         if (tmp[j+1]==tmp[i]) j++;
27         pre[i]=j;        
28     }
29     int k=1,judge;
30     while (k<n){
31         k++;judge=m[1]=0;
32         for (int i=1;i<=len;i++){
33             int j=m[i-1];
34             while (j&&tmp[j+1]!=s[k][i]) j=pre[j];
35             if (tmp[j+1]==s[k][i]) j++;
36             m[i]=j;
37             if (j==tmplen) {
38                 judge=1;break;
39             }
40         }
41         if (!judge) return;
42     }
43     if (lenth<tmplen||dic()){
44         int p=l,q=1;
45         for (int i=1;i<=tmplen;i++)
46             ans[i]=tmp[i];
47         lenth=tmplen;
48     }
49 }
50 int main(){
51     scanf("%d",&Q);
52     while (Q--){
53         memset(pre,0,sizeof(pre)); 
54         lenth=0; 
55         scanf("%d",&n);
56         for (int i=1;i<=n;i++)
57             scanf("%s",s[i]+1);
58         for (int i=1;i<=len;i++){
59             for (int j=i;j<=len;j++) KMP(i,j);
60         }
61         if (lenth<3) 
62             printf("no significant commonalities");
63         else 
64             for (int i=1;i<=lenth;i++){
65                 printf("%c",ans[i]);
66             }
67         printf("\n");
68     }
69     return 0;
70 }
STD

 

转载于:https://www.cnblogs.com/Absolute-Zero/p/5933602.html

这篇关于【POJ3080】Blue Jeans的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/246333

相关文章

【STM32 Blue Pill编程】-ADC数据采样(轮询、中断和DMA模式)

ADC数据采样(轮询、中断和DMA模式) 文章目录 ADC数据采样(轮询、中断和DMA模式)1、硬件准备及接线2、ADC轮询模式2.1 轮询模式配置2.2 代码实现 3、ADC中断模式3.1 中断模式配置3.2 代码实现 4、ADC的DMA模式4.1 DMA模式配置4.2 代码实现 在本文中,我们将介绍如何使用 ADC 并使用 STM32CubeIDE 和 HAL 库读取模拟输

【STM32 Blue Pill编程】-UART数据发送与接收(DMA模式)

UART数据发送与接收(DMA模式) 文章目录 UART数据发送与接收(DMA模式)1、DMA介绍2、STM32的UART端口3、硬件准备及接线4、UART配置5、代码实现 在本文中,我们将展示如何使用STM32 Blue Pill UART 通过直接内存访问(DMA)来发送和接收数据。这一过程而无需涉及 CPU。 在 DMA 模式下,数据可以从 UART RX 数据寄存器传输到

【STM32 Blue Pill编程】-UART数据接收与发送(轮询模式)

UART数据接收与发送(轮询模式) 文章目录 UART数据接收与发送(轮询模式)1、STM32的UART端口2、串口数据发送2.1 硬件准备及接线2.2 串口配置2.3 串口数据发送实现 3、串口数据接收4、printf函数重定向 每当我们进行嵌入式系统应用程序开发时,我们都需要使用串行通信协议。 UART/USART 在微控制器和计算机之间传输数据以用于各种目的。 最重要的应用

MS17-010(Eternal blue永恒之蓝)漏洞利用+修复方法

目录 一、漏洞简介 漏洞原理 影响版本 二、漏洞复现 三、复现过程 1、扫描局域网内的C段主机(主机发现) 扫描结果: 2.使用MSF的永恒之蓝漏洞模块 3.对主机进行扫描,查看其是否有永恒之蓝漏洞 4.准备攻击 四、漏洞利用 五、提升权限 1.创建新用户 2.将用户添加至管理员群组 3.查看端口的开启情况 六、远程登录 七、漏洞修复 一、漏洞简介 永

小的div在大的div中垂直居中 方法一: 1、代码: 1 div style=width:200px;height:200px;border:solid blue;position:rela

小的div在大的div中垂直居中 方法一: 1、代码: 1 <div style="width:200px;height:200px;border:solid blue;position:relative;">2 <div style="width:100px;height:100px;margin: auto; position: absolute; top:

2024最新群智能优化算法:红嘴蓝鹊优化器(Red-billed Blue Magpie Optimizer,RBMO)求解23个函数,提供MATLAB代码

一、红嘴蓝鹊优化器 红嘴蓝鹊优化器(Red-billed Blue Magpie Optimizer,RBMO)由Fu Shengwei 等人于2024年提出,其灵感来自红嘴蓝鹊的高效合作捕食行为,具体模拟了红嘴蓝鹊的搜索、追逐、攻击猎物和食物储存行为。 参考文献 [1]Fu, S., Li, K., Huang, H. et al. Red-billed blue magpie o

2024-05-29 blue-VH-driver-对外接口的并行调用-设计与思考

摘要: VH的driver的对外接口, 要做到可以并行,也就是两个不同的线程,分别调用,不能互相阻塞。 本文记录对其的思考和设计。 上下文: 2024-05-28 blue-VH-driver-需求分析及问题分析-CSDN博客 2024-05-27 blue-vh-问题点-CSDN博客 2024-05-23 blue-vh-分析-CSDN博客 driver对外接口的并

MT3027 red and blue

样例1: 输入: 841 2 5 2BRBR21 1BB53 1 4 2 5RBRRB53 1 3 1 3RBRRB55 1 5 1 5RBRRB42 2 2 2BRBR21 -2BR4-2 -1 4 0RRRR  输出: YESNOYESYESNOYESYESYES 思路:贪心。 贪心策略:设B有x个,则R有n-x个。

Codeforces 1459 A. Red-Blue Shuffle

题意: 有n个牌对,第一个数字是A种牌的,第二个是B种牌的。 按照牌上数字组合起来的数就是这个牌组的结果。 求对于所有排列可能,哪种牌的赢的可能性大。 思路: 很明显,看A的大于B牌对多还是B大于A牌对多就好了。 #include <cstdio>#include <cstring>#include <algorithm>#include <vector>#include <queue

bzoj1570: [JSOI2008]Blue Mary的旅行

传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=1570 思路:把每天当作一层,一层包含n个点,每层向下一层在原图中有边相连的点连边,表示一天能走一条边,每天的n点向汇连边 枚举天数,每次加一层,满流即输出答案 #include<cstdio>#include<cstring>#include<iostream>#includ