2023河南萌新联赛第(五)场:郑州轻工业大学 --亚托莉 -我挚爱的时光-

文章讲述了在Linux操作系统中使用包管理器sudopacman进行软件安装和卸载,以及处理与软件数据相关的问题,包括检查软件安装状态和是否存在个人数据。
摘要由CSDN通过智能技术生成

题目描述

亚托莉,-我挚爱的时光-
亚托莉自身机器可能有出了一点小故障,希望你能帮助她解决这个问题~

亚托莉内部的操作系统的是 Linux 操作系统,不同于 Windows 操作系统。在大多数情况下, Linux 操作系统一般是通过一些包管理器来安装软件的,以下是一些 linux 命令(请注意,这些命只是在本题目中有效,其他的有可能不一样哦~)。 


1. 安装`xxx`这款软件:sudo pacman -S xxx;
2. 卸载`xxx`这款软件,但是不清除这个软件的个人数据pacman -R xxx;
3. 卸载`xxx`这款软件,并且一并清除这款软件的个人数据:pacman -Rscn xxx;
4. 删库跑路:sudo rm -rf /*  (-请不要在自己的linux电脑上尝试这条命令哦~

同时,你需要回答亚托莉问你的几个问题,(后面是提问的形式)

1. 亚托莉安装了xxx这款软件了么?:1 xxx
2. 亚托莉有这款xxx软件的个人数据么?:2 xxx

如果是的话,请回答yes,如果没有,请回答no

注意事项:
1. 当软件安装之后,就会有个人数据产生。
2. 请注意,亚托莉不喜欢删库跑路,如果是含有删库跑路的命名,亚托莉就不跟你玩了,请输出wuwuwu,并且不再回答后面的问题,强制退出。

输入描述:

第一行有一个数字 n,表示有一共有 n 个指令或者问题,(问题和指令加起来有 n 个)。
第 2 行到 n+1 行,每一行是一个问题或者是一个命令。

其中 1 \leq n \leq 10^6


保证输入没有错误,删除软件之前一定会有安装。

软件不会被安装多次,而且软件名称不会含有空格。
 

输出描述:

1. 如果是命令,请执行。
2. 如果是问题,请根据问题回答,如果是正确的,请回答 yes,如果是错误的,请回答 no,
3. 如果含有命令为 sudo rm -rf /*,请输出 wuwuwu ,并且不在回答后面的问题,强制退出。(输出不含双引号)

示例1

输入

4

sudo pacman -S genshinimpact

1 genshinimpact

pacman -R genshinimpact

1 genshinimpact

输出

yes

no

说明

第一行安装了某软件,然后询问了某软件,回答yes,表示安装上了,之后卸载了某软件,问是否还有这款软件,回答no,表示没有这款软件。

示例2

输入

6

sudo pacman -S genshinimpact

pacman -R genshinimpact

2 genshinimpact

sudo pacman -S genshinimpact

pacman -Rscn genshinimpact

2 genshinimpact

输出

yes

no

说明

前两个指令先安装了某软件,并且卸载了某软件,但是个人数据却没有删除掉,问是否有这款软件的数据,回答yes,之后又安装上了这款软件,又将软件和个人数据一并卸载掉,所以问是否有这款软件的个人数据,回答no。

示例3

输入

5

1 genshinimpact

sudo pacman -S genshinimpact

sudo rm -rf /*

2 genshinimpact

1 genshinimpact

输出

no

wuwuwu

说明

第三条命令导致输出wuwuwu,所以之后的命令不用回答,直接退出。

思路:

这个题就是非常的简单了,就是模拟就行了,根据他的要求,设置两个标记数组,一个记录软件的,一个记录数据的,在查询时间直接看对应的数据还存不存在就行

AC代码

#include<bits/stdc++.h>
using namespace std;
map<string,int>rj,sj;
int main()
{
    bool flag = 0;
    int t;
    cin >> t;
    while(t--){
        if(flag){
            string s;
            getline(cin,s);
            continue;
        }
        string s;
        cin >> s;
        if(s == "sudo"){
            string s1;
            cin >> s1;
//             cout << s1 << endl;
            if(s1 == "rm"){
//                 cout << "pansuan";
                cout << "wuwuwu";
                flag = 1;
                continue;
            }else{
                string s2,s3;
                cin >> s2 >> s3;
                rj[s3] = 1;
                sj[s3] = 1;
            }
        }
        if(s == "1"){
            string rjm;
            cin >> rjm;
            if(rj[rjm] == 1){
                cout << "yes\n";
            }
            else{
                cout << "no\n";
            }
            continue;
        }
        if(s == "2"){
            string sjm;
            cin >> sjm;
            if(sj[sjm] == 1){
                cout << "yes\n";
            }
            else{
                cout << "no\n";
            }
            continue;
        }
        if(s == "pacman"){
            string s1,s2;
            cin >> s1 >> s2;
            if(s1 == "-R"){
                rj[s2] = 0;
            }
            else{
                rj[s2] = 0;
                sj[s2] = 0;
            }
        }
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值