zoukankan      html  css  js  c++  java
  • 2018浙江理工大学迎新赛——决赛

    AC2道,菜鸡菜鸡菜鸡

    星星

    小希来到依图面试啦,看到公司的宣传板子上写着:

    “依图科技从事人工智能创新性研究,致力于将先进的人工智能技术与行业应用相结合,建设更加安全、健康、便利的世界。

    依图带着国际视野组建世界一流的研发团队。我们不是为了把大公司或实验室的技术拿来快速套利,我们参与人工智能领域的基础性科学研究,致力于全面解决机器看、听、理解的根本问题,相信能在计算机视觉、自然语言理解、知识推理、智能硬件、机器人等技术领域作出突破性贡献。

    依图的技术已经服务于安防、金融、交通、医疗等多个行业。

    我们好奇智慧的奥秘,拓展智能的边界,期待与你一起构建智能的未来。”

    小希的心情很是激动,快活地坐在了面试室的外面,想着未来可能就在依图工作,有着无限的未来和希望。

    ……

    面试洽谈中,面试官开玩笑一般地问小希,你能不能出一个水题,来作为20182018年浙江工业大学迎新赛决赛的签到题呢?

    小希简单想了想,脱口而出:

    给定一个存在ast∗(称为星星)的小写字母串,ast∗可以用任意小写字符串或空串代替,给定一个含有ast∗的串,问字典序最小的,能由原串生成的长度为MM的串是什么样的。

    注意:一个串中可以有多个星星,多个星星可以出现在一起。

    如果构造不出这样的串,则输出:”ast yitu ast∗yitu∗”(不含引号)

    好了,现在这道题就在你的面前等着你。

    Input

    第一行为数据组数T(T le 1000)T(T≤1000)。

    第一行输入两个整数N,MN,M,分别代表原串和希望的串的长度。

    1 le N le M-S le 1000001≤N≤M−S≤100000 (其中SS代表原串中’ast∗’的个数)

    数据保证 sum n le 1000000∑n≤1000000

    Output

    对于每组数据输出一行,即符合题目要求的字符串,行末不要有多余空格。

    Sample Input 1

    3
    6 8
    aab
    12 9
    i
    loveyitu
    11 4
    data
    error
    Sample Output 1

    aaaaaaab
    iloveyitu
    yitu

    #include <iostream>
    #include <bits/stdc++.h>
    using namespace std;
    #define N 100005
    char s[N],ans[N];
    int main()
    {
    
        int t,i,n,m,j;
    
        scanf("%d",&t);
        while(t--)
        {
            int flag=0;
            scanf("%d %d",&n,&m);
            scanf("%s",s);
            int a=0,b=0;
            for(j=0;s[j]!='';j++)
            {
                if(s[j]=='*')
                    b++;
                else
                {
                    ans[a++]=s[j];
                }
            }
            ans[a]='';
            int len1=strlen(ans);
            if(len1==m)
            {
                puts(ans);
                a=0;
                b=0;
                memset(ans,'0',sizeof(ans));
            }
            if(len1>m)
            {
                printf("*yitu*
    ");
                a=0;
                b=0;
                memset(ans,'0',sizeof(ans));
            }
            if(len1<m)
            {
                int c=m-len1;
                memset(ans,'0',sizeof(ans));
                a=0;
                for(j=0;s[j]!='';j++)
            {
    
                if(s[j]=='*'&&flag==0)
                {
                    flag=1;
                    for(int l=0;l<c;l++)
                    {
                      ans[a++]='a';
                    }
                }
                else if(s[j]!='*')
                {
                    if(a==m)
                        break;
                    ans[a++]=s[j];
                }
            }
            if(flag==1)
            {
               ans[a]='';
            puts(ans);
            a=0;
            b=0;
            memset(ans,'0',sizeof(ans));
            }
            else
            {
                printf("*yitu*
    ");
            }
        }
        }
        return 0;
    }
    

    cool cooler coolest

    Description

    ctw收到了一个粉丝送来的手环,手环是由三种ctw最喜欢的颜色的晶石串成的。

    ctw认为这很“cool”,如果手环上的任意两个相邻的晶石颜色都不同就更“cool”了,当然如果手环上任意三个相邻的晶石颜色都各不相同,那就是最“cool”的了。

    三种颜色分别用数字1,2,3表示,一串仅包含字符1,2,3的字符串ss表示一个手环。

    例如 123 表示一个由 1,2,3 三种颜色的晶石依次串成的手环。显然,ctw会认为这样的手环是最“cool”的,程序输出 coolest。

    同理,对于 1212 应该输出 cooler,11111 输出 cool。

    请根据ss判断ctw对该手环的评价。

    Input

    第一行包括一个整数TT,下面是TT组数据。

    每组数据一行包括一个字符串ss。

    1 le T le 10001≤T≤1000
    3 le |s| le 10003≤∣s∣≤1000

    Output

    每组数据一行,根据题意输出 cool, cooler 或 coolest。

    Sample Input 1

    4
    123
    1212
    11111
    12123
    Sample Output 1

    coolest
    cooler
    cool
    cooler
    Hint

    手环是环形的,也就是说 123,231,321 表示的是同样的手环。

    #include <iostream>
    #include <bits/stdc++.h>
    using namespace std;
    #define N 1005
    int main()
    {
        int t,i;
        char s[N],ss[N];
        scanf("%d",&t);
        while(t--)
        {
            scanf("%s",s);
            int len=strlen(s);
            ss[0]=s[len-2];
            ss[1]=s[len-1];
            ss[2]='';
            strcat(ss,s);
            int l=strlen(ss),flag=0;
            for(i=0;i<l&&i+1<l;i++)
            {
                if(ss[i]==ss[i+1])
                {
                    printf("cool
    ");
                    flag=1;
                    break;
                }
            }
            if(flag==1) continue;
            if(flag==0)
            {
                  for(i=0;i<l&&i+2<l;i++)
                {
                    if(ss[i]==ss[i+2])
                    {
                    printf("cooler
    ");
                    flag=1;
                    break;
                    }
                }
            }
            if(flag==1) continue;
            else printf("coolest
    ");
            memset(ss,'0',sizeof(ss));
        }
        return 0;
    }
    
  • 相关阅读:
    加法图灵机
    Experiment 1
    进制转换
    快速排序
    辗转相除、线段交点、多角形面积公式
    JS如何优雅监听容器高度变化
    解决react和其他框架之间的交互问题
    MacBook Pro触控板手势
    代理 请求登录失效(显示未登录)问题
    Web端 长按事件
  • 原文地址:https://www.cnblogs.com/skyleafcoder/p/12319574.html
Copyright © 2011-2022 走看看