日照学习提高班day4测试 x

暂时先搞一个题吧qwq

思路:

  一看到这个题,他不仅要求输出字典序最小的串,还要满足两两不重复,所以我们可以先输出ababab...什么的,最后缀上要求的k-2种字母

坑点:  

  当然这样想是不完全的!该题是拥有许多特殊情况的!

  例:

    ①当n==k的时候(直接从字符‘a’往后面一个一个接着输出就好啦~)

    ②除去①之后若k==1(即只允许一中字符出现,但是又需要输出多个字符的情况)(直接输出-1)

    ③当k>n的时候(直接输出-1)

    ④当k==2的时候(能输出多少对ab就输出几对ab,若不成对的话,倒数第二个输出a,即abababababababa什么的

    ⑤当k==3的时候(最后输出‘c’,前面能输出几对ab就输出几对ab,若不成对的话,倒数第二个输出a,即abababababababa什么的)

    ⑥其余为普通情况(见思路)

上代码:

#include <iostream>
#include <cstdio>
using namespace std;

const int Maxn = 10010;
int n,k,cnt;
int p,p2;
//p是ab在不特殊情况下的总个数
//p2是在不特殊情况下除ab以外的总个数 

int main()
{
    freopen("str.in","r",stdin);
    freopen("str.out","w",stdout);
    scanf("%d%d",&n,&k);
    if(n==k) {
        for(int i=0;i<n;++i)
            printf("%c",(char)i+‘a‘);
        return 0;
    }
    if(k==1 || k>n) {
        printf("-1");
        return 0;
    }
    p=n-k+2,p2=k-2;
    bool flag=false;
    if(k<=2) {
        while(cnt<n) {
            if(flag)
                printf("b"),flag=false;
            else
                printf("a"),flag=true;
            ++cnt;
        }
        return 0;
    }
    if(k==3) {
        while(cnt<n-1) {
            if(flag)
                printf("b"),flag=false;
            else
                printf("a"),flag=true;
            ++cnt;
        }
        printf("c");
        return 0;
    }
    while(cnt<p) {
        if(flag)
            printf("b"),flag=false;
        else
            printf("a"),flag=true;
        ++cnt;
    }
    for(int i=3;i<3+p2;++i)
        printf("%c",(char)i+96);
    return 0;
}
时间: 2024-12-14 13:44:30

日照学习提高班day4测试 x的相关文章

日照学习提高班day3测试 x

思路: 一看到'#''.'什么的就想到搜索怪我怪我... 这道题勉强说是搜索别打我qwq 1)因为不重复,所以首先要判断是否%5==0,若不满足,直接输出NO 2)弄个vis数组记录是否被搜过,如果该处是‘#’并且没有被搜索过,就搜索他正下,左下,右下,以及下下是否都为#,若不是,输出NO 3)如果是就进行标记(5个点都进行标记,因为只能使用一次),最终如果成功的渡劫,输出YES 坑点: 搜索下方是x+1而不是x-1(吃亏了qwq) 上代码: #include <algorithm> #inc

真正的入门—提高班的学习

[背景] 自从前年,也就是2013年9月1日进入提高班,到现在,到今天已经度过了526个夜晚.12624个小时.757440分钟!昨天对于计算机的学习有了一些特殊的认识,今天对于英语的学习也差不多出现了相同的认识,真的感觉自己入门了!至于如何入门,您请往下看: [计算机] 前几天开始了自己的计算机二级考试(C++),遵循三步走的战略(略读知宏观.详读知内容.做题看实战).第一阶段结束之后,稍作总结就开始了第二阶段的学习,因为我们小团队采用化整为零细分学习的方法,每小组三个人,进行第二遍的学习,当

软件测试学习笔记week 3 --- 测试框架初体验

测试框架初体验 在这周的软件测试课上,第一次了解了软件测试框架的概念.软件测试框架包含的范围非常广,从自动化测试框架到单元测试框架以及性能测试框架.在上个寒假中,在学习Coursera的在线课程时发现普林斯顿的单元测试做得非常强大,从程序正确性到Time consuming甚至Memory consuming,几乎能发现程序中的每一处错误或者缺陷.因此,在上完了这周的课程后,我查阅了一些资料,做了这篇随笔记录了解到的单元测试的知识. 一.什么是测试框架 要认识测试框架,首先要对所谓框架有概念.框

忆在提高班的这4年

伴随着2014年金秋9月的来临,进入提高班学习的第4个年头已结束.在这个大集体里,回顾一下,这些年自己的生活和学习都有了哪些的收获. 一.学习 (1)计算机 第一阶段:计算机基础知识的学习 练习了打字 快捷键和搜索引擎的使用 常用软件的使用(foxmail,outlook,pomodairo,mindmanager,onenote等) 拆装机的学习 Win7.xp系统安装 这个阶段重点学习了计算机的基础知识.在这段学习过程中了解了很多米老师的学习方法,囫囵吞枣.盲人摸象.快速阅读.番茄工作法.编

今天,Java编程周末提高班(第一期)正式结束

Java编程周末提高班(第一期),走过了近两个月历程,一共有68人次到周末到老师家进行Java学习与交流.近距离的和一群年轻的学习接触,收获很多,特别是对以后教学的改进.在学习的闲暇,大家自己做饭,锻炼了厨艺.而今天,还把整个房子打扫.拖地,连我们家那个垃圾桶.拖把桶.洗手液瓶子都擦得干干净净,谢谢 李晓毅.温明玉.杨洁莹.陈思颖四位同学. 老师的收获: (1)了解到了大一新生.大二学生在学习过程中遇到的困难,及解决方式.合作学习还是未能形成,基本上还是大家各自学习为主. (2)学生编程入门过程

老段带你学鸟哥Linux视频教程 包含基础班+提高班

老段带你学鸟哥Linux视频教程 包含基础班+提高班,附带pdf文档. 目录结构如下: 目录:/2020022-老段带你学鸟哥Linux视频教程 [1.9G] ┣━━老段带你学鸟哥-服务器篇 [1009.4M] ┃ ┣━━0-456-1.flv [64.8M] ┃ ┣━━0-456-2.flv [34.5M] ┃ ┣━━7.flv [26.6M] ┃ ┣━━8.flv [43.9M] ┃ ┣━━9-1.flv [28.4M] ┃ ┣━━9-2.flv [43.4M] ┃ ┣━━11-1.flv

Beaglebone Back学习五(PWM测试)

PWM测试 参考链接 1 Enable PWM on BeagleBone with Device Tree overlays 2Using PWM on the Beaglebone Black 3 Beaglebone Coding 101: Buttons and PWM 4 Using PWM outputs 5 beaglebone-black-cpp-PWM 6 Enabling PWM Support in the kernel 7 Beaglebone Back学习五(PWM测试

新程序员学习提高路径

昨天几名新同事做入职测评,在讨论如何学习提高工作技能时,大家要求推荐几本开发方面的书籍. 回家整理了一下,特推荐如下: 1.开发基础 重点推荐(前端):<编写高质量代码-web前端开发修炼之道> 推荐原因:前端开发入门提高的好书,看完它,不会使你立刻成为前端高手,但是至少能让你明白前端(CSS.JS)是如何组织的,前端到底会有什么共性的问题,以及这些问题是如何解决的.为进一步看懂一些主流框架(jquery,ExtJs等)的实现原理奠定基础. 重点推荐(java):<head first

夏令营提高班上午上机测试 Day 3 解题报告

今天的题的确水.T3还是一道NOIP原题. 嘛,多刷点水题也不是什么坏事嘛. 说来也快,夏令营结束了整一星期了呢.大家也都回到了日常的暑假生活呢. 今天学业水平测试出成绩了...嗯结果还算满意呢,至少达到了预期目标. NOIP这边,还要继续努力啊. 还好,这次我找到我的代码了.每道题我都会把我当时写的代码和GTY哥哥提供的std都贴出来,方便大家批判我巨丑无比的代码(删 好了来说一下Day3的题解. T1:十字架 题目描述 小 D 是虔诚的嘟嘟教徒.现在小 G 送他了一幅著名画家芬达奇的作品.这