zoukankan      html  css  js  c++  java
  • Codeforces 174B【模拟构造】

    题意:
    给你一个串只有小写字母和点,让你构造前缀是1-8,后缀是1-3长度的文件名;
    思路:
    那么以"."作为分割点,把字符串都拿出来,然后
    首段长度<=8 OK;
    中间<=11 OK;
    尾段<=3 OK;

    否则都不行;

    啊,水题啊,wa了一次,T了一次,神TM都是数据开小了,

    一个是4e5写成5e4。。。

    一个是不满足的情况可能会很长,才开了。。。25...

    #include <bits/stdc++.h>
    using namespace std;
    typedef long long LL;
    typedef unsigned long long ULL;
    typedef pair<int,int>PII;
    const double eps=1e-5;
    const double pi=acos(-1.0);
    const int INF=0x3f3f3f3f;
    
    const int N=4e5+10;
    struct asd
    {
        int length;
        char tep[50];
    };
    int num;
    asd q[N];
    char s[N];
    
    char ans[N][50];
    char temp[N];
    
    int main()
    {
        int temp_num;
        scanf("%s",s);
        int len=strlen(s);
        bool flag=false;
        num=0;
        temp_num=0;
        for(int i=0; i<len; i++)
        {
            if(s[i]=='.')
            {
                if(!flag)
                {
                    if(temp_num>8||!temp_num)
                    {
                        puts("NO");
                        return 0;
                    }
                    temp[temp_num]='';
                    strcpy(q[num].tep,temp);
                    q[num].length=temp_num;
                    num++;
                    flag=true;
                }
                else
                {
                    if(temp_num>11||temp_num<2)
                    {
                        puts("NO");
                        return 0;
                    }
                    temp[temp_num]='';
                    strcpy(q[num].tep,temp);
                    q[num].length=temp_num;
                    num++;
                }
                temp_num=0;
            }
            else
                temp[temp_num++]=s[i];
        }
        if(!temp_num||temp_num>3||!flag)
        {
            puts("NO");
            return 0;
        }
        temp[temp_num]='';
        strcpy(q[num].tep,temp);
        q[num].length=temp_num;
        num++;
        int kp=0;
        int ans_num=0;
        int pp=0;
        for(int i=1;i<num;i++)
        {
            pp=0;
            for(int j=kp;j<q[i-1].length;j++)
                ans[ans_num][pp++]=q[i-1].tep[j];
            ans[ans_num][pp++]='.';
            if(q[i].length>3)
                kp=3;
            else
                kp=1;
            if(i==num-1)
                kp=q[i].length;
            for(int j=0;j<kp;j++)
                ans[ans_num][pp++]=q[i].tep[j];
            ans[ans_num][pp]='';
            ans_num++;
        }
        puts("YES");
        for(int i=0;i<ans_num;i++)
            printf("%s
    ",ans[i]);
        return 0;
    }
    
    
    


  • 相关阅读:
    工具网页地址
    invalid comparison: java.util.ArrayList and java.lang.String——bug解决办法
    打印csdn博客文章内容
    git 更新远程分支列表
    idea 配置 SpringBoot 热启动详解,和热启动失效解决方案
    MacOS下安装RabbitMQ
    Spring Boot Admin
    Navicat Premium Mac 12 破解
    sql查询不重复数据
    org.apache.commons.lang3 jar的使用 ArrayUtils
  • 原文地址:https://www.cnblogs.com/keyboarder-zsq/p/6777498.html
Copyright © 2011-2022 走看看