题意:给定n,m,k,要求构造出一个长度为n,最多使用前k个大写字母,有m个不同回文子串的字符串

1<=n,m<=1e5,1<=k<=26

思路:打表找规律

本质上是要找到不让循环节之间出现新回文子串的方案

n<m:无解

n=m:全A

n>m:k=1:无解

      k=2:用m-8个A + ABAABB(循环节)

   k>2:用m-3个A + ABC(循环节)

特判n=8,m=7,k=2:AABABBAA

 #include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
typedef long long ll;
using namespace std;
#define N 110000
#define oo 10000000
#define MOD 100000073 const char r[][]={"A","ABC","ABAABB"};
const int len[]={,,}; void print(int k,int n)
{
for(int i=;i<n;i++) printf("%c",r[k][i%len[k]]);
} int main()
{
int cas;
scanf("%d",&cas);
for(int v=;v<=cas;v++)
{
int n,m,k;
scanf("%d%d%d",&n,&m,&k);
printf("Case #%d:\n",v);
if(n<m)
{
printf("Impossible\n");
continue;
}
if(n==m)
{
print(,n);
printf("\n");
continue;
}
if(n==&&m==&&k==)
{
printf("AABABBAA\n");
continue;
}
if(k==)
{
printf("Impossible\n");
continue;
}
if(k==)
{
if(m<)
{
printf("Impossible\n");
continue;
}
print(,m-);
print(,n-m+);
printf("\n");
continue;
}
if(k>)
{
if(m<)
{
printf("Impossible\n");
continue;
}
print(,m-);
print(,n-m+);
printf("\n");
continue;
} }
return ;
}

最新文章

  1. sublime text 输入法候选词不跟随光标
  2. 手动获取酷我Mp3外链
  3. JSP网站开发基础总结《一》
  4. 一致性hash算法简介与代码实现
  5. Java学习-001-JDK安装配置
  6. Doubango ims 框架 分析之 多媒体部分
  7. android文件下载大小和网络不一致(偏大)
  8. ***C - I love sneakers!(动态规划,分组背包)
  9. VS+VA 开发NDK
  10. SpringMVC框架学习笔记(6)——拦截器
  11. iOS-strong和copy【详细解读】
  12. C# 过滤特殊字符,保留中文,字母,数字,和-
  13. linux目录详解
  14. [HNOI2018] 道路
  15. 路由和HTTP方法
  16. 内存占用过高 kill 调整mysql内存占用
  17. Centos7 安装 ActiveMQ 5.15.1
  18. jQuery使用动态渲染表单功能完成ajax文件下载
  19. Java查找算法之二分查找
  20. MySQL性能指标及计算方法(go)

热门文章

  1. DevOps - 版本控制 - Gogs
  2. Java中的finally
  3. ZendFramework-2.4 源代码 - 路由(类图)
  4. hibernate的get() load() 和find()区别
  5. C语言实例解析精粹学习笔记——44(冒泡排序)
  6. sql中一个服务器建立另一个服务器的连接
  7. Java面向对象---面向对象
  8. TCP/IP网络编程之优于select的epoll(一)
  9. loj2292 「THUSC 2016」成绩单
  10. Gpfixup