首页 > 其他分享 >2023CUGB天梯校赛

2023CUGB天梯校赛

时间:2023-04-21 20:55:09浏览次数:31  
标签:斜杠 2023CUGB 路径 样例 ss 天梯 根目录 校赛 目录

M1.文件路径

模拟即可
题目描述
给你一个字符串 path ,表示指向某一文件或目录的 Unix 风格 绝对路径 (以 '/' 开头),请你将其转化为更加简洁的规范路径。

在 Unix 风格的文件系统中,一个点('.')表示当前目录本身;此外,两个点 ('..') 表示将目录切换到上一级(指向父目录);两者都可以是复杂相对路径的组成部分。任意多个连续的斜杠(即,'//')都被视为单个斜杠 '/' 。 对于此问题,任何其他格式的点(例如,'...')均被视为文件/目录名称。

请注意,返回的 规范路径 必须遵循下述格式:

始终以斜杠 '/' 开头。
两个目录名之间必须只有一个斜杠 '/' 。
最后一个目录名(如果存在)不能 以 '/' 结尾。
此外,路径仅包含从根目录到目标文件或目录的路径上的目录(即,不含 '.' 或 '..')。
返回简化后得到的 规范路径 。

输入格式
一行一个字符串,表示一个Unix风格的绝对路径

输出格式
一行一个字符串,表示简化后的规范路径

输入样例1
/home//usr/
输出样例1
/home/usr
输入样例2
/../
输出样例2
/
输入样例3
/a/b/c/d/./..
输出样例3
/a/b/c
样例解释
对于样例2,根目录没有上一级目录,故访问根目录的父目录请求会被直接忽视,最后输出根目录

利用栈来模拟上述所说的操作即可
#include<bits/stdc++.h>

using namespace std;

void solve(){
    stack<string> a;
    string ss,r;
    cin>>ss;
    ss=ss+'/';
    int l=ss.size();
    for(int i=0;i<l;++i){
        if(ss[i]=='/'){
            if(r==""||r=="."){
                r="";
                continue;
            }
            else if(r==".."){
                if(!a.empty()) a.pop();
                r="";
            }
            else{
                a.push(r);
                r="";
            }
        }else{
            r=r+ss[i];
        }
    }
    string ans="";
    if(a.size()==0) ans="/";
    else if(a.size()==1) ans="/"+a.top();
    else{
        while(!a.empty()){
            ans=a.top()+"/"+ans;
            a.pop();
        }
        ans="/"+ans;
        ans=ans.substr(0,ans.size()-1);
    }
    cout<<ans<<"\n";
    return ;
}

signed main(){
    int _=1;
    while(_--){
        solve();
    }
    return 0;
}

标签:斜杠,2023CUGB,路径,样例,ss,天梯,根目录,校赛,目录
From: https://www.cnblogs.com/Qiansui/p/17341776.html

相关文章

  • 团体程序设计天梯赛 L1-064 估值一亿的AI核心代码 题解
    思路L1-064估值一亿的AI核心代码题意有一点不太清晰的,就是原文中的'I',无论是否是单独的,都不能变为小写。如果是单独的'I'再被转化为'you'。这种模拟题就需要每个的分分清清楚楚的,不要都揉到一块儿,容易写错。具体还有些需要注意的在代码里注释着了。代码#include<iostream>......
  • 天梯赛选拔_2023_第四场
    7-1聪明一点的拖长音题目描述输入一行字符,去掉空格,在每个单词最后一个字母处加一个-。输入格式:输入一行字符,中间有若干空格,字符数不超过100个。输出格式:输出这行的所有英文字母,在每个单词末尾加一个-。注:单词是指由大写或小写英文字母组成的一个词。输入样例:Iam......
  • L1 - 7 天梯赛的善良
    代码#include<bits/stdc++.h>usingnamespacestd;map<int,int>A;intn,minn=INT_MAX,maxn=INT_MIN;//头文件中自定义的宏intmain(){cin>>n;for(inti=0;i<n;i++){intt;cin>>t;A[t]++;//数......
  • 团体天梯练习 L2-043 龙龙送外卖
    L2-043龙龙送外卖龙龙是“饱了呀”外卖软件的注册骑手,负责送帕特小区的外卖。帕特小区的构造非常特别,都是双向道路且没有构成环——你可以简单地认为小区的路构成了一棵树,根结点是外卖站,树上的结点就是要送餐的地址。每到中午12点,帕特小区就进入了点餐高峰。一开始,只有一两......
  • 团体天梯练习 L2-042 老板的作息表
    L2-042老板的作息表新浪微博上有人发了某老板的作息时间表,表示其每天\(4:30\)就起床了。但立刻有眼尖的网友问:这时间表不完整啊,早上九点到下午一点干啥了?本题就请你编写程序,检查任意一张时间表,找出其中没写出来的时间段。输入格式:输入第一行给出一个正整数\(N\),为作息表......
  • 西南民族大学 2023 天梯自主训练 4
    西南民族大学2023天梯自主训练4 多项式A除以B思路:a表示被除多项式,b表示除数多项式,一次运算的商的项p为a的最高项-b的最高项,商的系数q为a的最高项的系数除以b的最高项的系数,将所有a中项数和b的项数乘p后相同的系数减去b项的系数乘q(...haoluan...看图吧) #include<bits/s......
  • 团体天梯练习 L2-039 清点代码库
    L2-039清点代码库上图转自新浪微博:“阿里代码库有几亿行代码,但其中有很多功能重复的代码,比如单单快排就被重写了几百遍。请设计一个程序,能够将代码库中所有功能重复的代码找出。各位大佬有啥想法,我当时就懵了,然后就挂了。。。”这里我们把问题简化一下:首先假设两个功能模块......
  • 团体天梯练习 L2-038 病毒溯源
    L2-038病毒溯源病毒容易发生变异。某种病毒可以通过突变产生若干变异的毒株,而这些变异的病毒又可能被诱发突变产生第二代变异,如此继续不断变化。现给定一些病毒之间的变异关系,要求你找出其中最长的一条变异链。在此假设给出的变异都是由突变引起的,不考虑复杂的基因重组变异......
  • 团体天梯练习 L2-037 包装机
    L2-037包装机一种自动包装机的结构如图1所示。首先机器中有\(N\)条轨道,放置了一些物品。轨道下面有一个筐。当某条轨道的按钮被按下时,活塞向左推动,将轨道尽头的一件物品推落筐中。当\(0\)号按钮被按下时,机械手将抓取筐顶部的一件物品,放到流水线上。图2显示了顺序按下按......
  • 西南民族大学 2023 天梯自主训练 3
    西南民族大学2023天梯自主训练3正整数A+B#include<bits/stdc++.h>usingnamespacestd;typedefpair<int,int>PII;constintN=1e3+5,INF=0x3f3f3f3f,Mod=1e6;constdoubleeps=1e-8;typedeflonglongll;stringa,b;intx,y;intmain(){ios::sync_with_st......