当前位置: 首页 > news >正文

P9831 [ICPC2020 Shanghai R] Gitignore

P9831 [ICPC2020 Shanghai R] Gitignore - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)


只看题意翻译这道题是做不出来的,还要去看英文里面的规定(这里就不放英文了),主要问题是不要公用子文件夹。

例如:

1 / a / 2

2 / a / 3

文件夹a有2个,而非1个。

仔细阅读理解之后就会发现我们需要的结构是如下图所示的目录类型的树

比较容易想到的就是给每个文件夹一个独一无二文件夹空间。

例如下图

文件夹1的文件空间为1,文件空间里面还有一个文件夹1,由于此处内部的文件夹1没有内容,所以不需要给他赋值空间,如果有需要,可以加上空间。

大概能理解这个思想之后直接看代码。

AC代码

#include <bits/stdc++.h>
using namespace std;int idx,T,ans;
map<string,int>f;//第一列文件初始化空间
bool a[10001];//空间是否可以被直接删除
bool vis[10001];//文件名 文件空间
vector<pair<string,int>>e[10001];//文件空间i 拥有的文件e[i]
//此处拥有的文件也有可能拥有文件,所以保留<文件名,文件空间>
string s,t;void push_down(int x){if(vis[x])return;vis[x]=true;for(auto i:e[x])push_down(i.second);
}
void dfs(int x){if(vis[x])return;vis[x]=true;if(a[x]){//当前文件夹能删除,直接删除vis[x]=false;ans++;push_down(x);//标记此文件夹拥有的文件均不用再访问了.return;}for(auto i:e[x])dfs(i.second);//访问当前文件夹所有内容
}void solve(){f.clear();ans=0;for(int i=1;i<=10000;++i){a[i]=vis[i]=false;e[i].clear();}int n,m;cin>>n>>m;for(int i=1;i<=n+m;++i){cin>>s,s+='/',t="";for(int j=0,k=0,now;j<(int)s.length();++j){if(s[j]=='/'){//找到"/" 说明一个文件名输入完毕if(k==0){//若k=0 说明是一级文件夹,最前面的均分配一个f[t]空间if(!f[t])f[t]=++idx;//是第一次出现,分配空间idx,此处空间idx会一直递增,保证空间号不同now=f[t];k=1;}else{//不是一级文件夹,此处需要用到now来递归空间号bool flag=true;for(auto k:e[now]){//遍历前一次空间号now的内容if(k.first==t){//如果文件t已经存在flag=false;now=k.second;//获取文件t的空间号,更新now,准备下一次使用}}if(flag){//如果文件t不存在e[now].push_back({t,++idx});//手动加入,并且赋予新的空间号now=idx;//更新now,准备下一次使用}}if(i<=n)a[now]=true;//前n个路径全都需要删除else a[now]=false;//后m个不需要删除t="";}else t+=s[j];}}for(auto i:f){//第一列开始读取文件夹if(a[i.second])ans++;//如果一级文件夹就需要删除,那就不需要再往下了else dfs(i.second);//深搜.}cout<<ans<<endl;
}int main(){cin>>T;while(T--)solve();return 0;
}

相关文章:

P9831 [ICPC2020 Shanghai R] Gitignore

P9831 [ICPC2020 Shanghai R] Gitignore - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 只看题意翻译这道题是做不出来的&#xff0c;还要去看英文里面的规定&#xff08;这里就不放英文了&#xff09;&#xff0c;主要问题是不要公用子文件夹。 例如: 1 / a / 2 2 / a / 3…...

LinkList集合方法(自写)

在使用以下方法时需要定义一个LinkNode类来定义变量&#xff0c;new一个新对象进行调用&#xff0c;输出时需要定义输出方法 public class ListNode {int value;ListNode next;//public ListNode(int value) {this.value value;}public String toString(){return "ListN…...

Ansible playbook自动化运维工具详解

Ansible playbook自动化运维工具详解 一、playbook的相关知识1.1、playbook 的简介1.2、playbook的 各部分组成 二、基础的playbook剧本编写实例三、 playbook的定义、引用变量3.1、基础变量的定义与引用3.2、引用fact信息中的变量 四、playbook中的when条件判断和变量循环使用…...

图像切分:将一张长图片切分为指定长宽的多张图片

1.需求 比如有一张很长的图片其大小为宽度779&#xff0c;高度为122552&#xff0c;那我想把图片切分为779乘以1280的格式。 步骤如下&#xff1a; 使用图像处理库&#xff08;如PIL或OpenCV&#xff09;加载原始图片。确定子图片的宽度和高度。计算原始图片的宽度和高度&am…...

ROS学习笔记(5):ros_control

1.ros_control简介 ros_control - ROS Wiki ros_control是为ROS提供的机器人控制包&#xff0c;包含一系列控制器接口、传动装置接口、控制器工具箱等,有效帮助机器人应用功能包快速落地&#xff0c;提高开发效率。 2.ros_control框架 ros_control总体框架&#xff1a; 针对…...

《008.Springboot+vue之自习室选座系统》

[火]《008.Springbootvue之自习室选座系统》 项目简介 [1]本系统涉及到的技术主要如下&#xff1a; 推荐环境配置&#xff1a;DEA jdk1.8 Maven MySQL 前后端分离; 后台&#xff1a;SpringBootMybatisredis; 前台&#xff1a;vueElementUI; [2]功能模块展示&#xff1a; 前端…...

道可云元宇宙每日资讯|5G数智新时代元宇宙发展论坛在厦门举办

道可云元宇宙每日简报&#xff08;2023年11月6日&#xff09;讯&#xff0c;今日元宇宙新鲜事有&#xff1a; 5G数智新时代元宇宙发展论坛在厦门举办 3日&#xff0c;由2023年中国金鸡百花电影节执委会主办、厦门电影节有限公司协办的“5G数智新时代元宇宙发展论坛暨‘中国白德…...

使用 Go 写入文件

在本教程中&#xff0c;我们将学习如何使用 Go 将数据写入文件。我们还将学习如何同时写入文件。 本教程有以下部分 将字符串写入文件将字节写入文件逐行将数据写入文件附加到文件同时写入文件 由于 Playground 不支持文件操作&#xff0c;请在本地系统中运行本教程的所有程…...

调用DeleteLocalRef的正确姿势

做安卓jni相关开发的总会在涉及到jni变量释放时怀疑人生&#xff0c;what? where? when? who? why? how? how much? 最近碰到一个比较奇怪的问题&#xff0c;有一个jni方法的耗时在随着调用次数的增加而上涨&#xff0c;但是没有明显的内存泄漏&#xff0c;经过我缜密分…...

抖音小店从0到1起店流程,实操经验分享!

我是电商珠珠 很多人在开店之后&#xff0c;并不知道怎么做。往往会有人跑来问我说&#xff0c;开店之后怎么做啊&#xff0c;流程方面我还不是很熟悉啊等等。 这份起店流程备好了&#xff0c;将来对你有用。 第一步&#xff0c;店铺基础设置 在店铺开好之后&#xff0c;不…...

MySQL权限

权限 MySQL 允许客户端用户连接到服务器并访问服务器管理数据&#xff0c;MySQL 用户权限系统的主要功能是对给定主机连接的用户进行身份验证&#xff0c;并将该用户与数据库的权限相关联。 在 MySQL8 之前&#xff0c;授权表使用 MyISAM 并且是非事务性的&#xff0c;在 MyS…...

Nginx服务器安装证书并启用SSL(acme.sh)

前提 您已购置vps服务器&#xff0c;例如阿里云全球站ecs、AWS EC2、Azure VM、GCP Compute等安全组已开启80、443端口&#xff0c;且访问源设置为0.0.0.0/0域名已设置A记录指向当前操作服务器&#xff0c;若您使用aws ec2&#xff0c;有公有 IPv4 DNS&#xff0c;可供使用 安…...

c++实现观察者模式

前言 我觉得这是最有意思的模式&#xff0c;其中一个动&#xff0c;另外的自动跟着动。发布-订阅&#xff0c;我觉得很巧妙。 代码 头文件 #pragma once #include<vector> #include<string> #include<iostream>// 抽象观察者 class Aobserver { public:v…...

C 语言左移位操作在kernel驱动子系统中的特殊用途

文章目录 前言一、C语言左移位操作介绍1. 左移位二、左移位操作在kernel 驱动子系统中的应用1. 左移位操作在 V4L2, Media 子系统中的应用实例2.左移位操作在 DRM 子系统中的应用实例2.1 左移位操作在struct drm_crtc 中的应用2.2 左移位操作在struct drm_encoder 中的应用总结…...

kafka3.6.0集群部署

环境准备 机器环境 系统主机名IP地址centos7.9kafka01192.168.200.51centos7.9kafka02192.168.200.52centos7.9kafka03192.168.200.53 所需软件 jdk-8u171-linux-x64.tar.gzapache-zookeeper-3.8.3-bin.tar.gz https://dlcdn.apache.org/zookeeper/zookeeper-3.8.3/apache-zook…...

JAVA客户端使用账号密码调用influxdb2报错:{“code“:“unauthorized“,“message“:“Unauthorized“}

问题&#xff1a;JAVA客户端访问influxdb2报错 说明&#xff1a;当前influxdb版本&#xff1a;2.6.1 使用依赖&#xff1a; <dependency><groupId>org.influxdb</groupId><artifactId>influxdb-java</artifactId><version>2.10</vers…...

Mysql查询今天到期、n天即将到期、还有n天过期相关sql

超级治愈的一段话 其实你已经很幸福了,吃饱穿暖,没病没灾,隔三岔五还能吃顿好的,偶尔还能睡到自然醒,肥嘟嘟的一身福气。人这一辈子,要是能够逃过天灾,躲过战乱,不遇歹人,不生大病,就已经是非常幸运了,要是还能家庭和谐,收人稳定,三五知己,那更是天大的福泽。 -…...

【漏洞复现】Apache Log4j Server 反序列化命令执行漏洞(CVE-2017-5645)

感谢互联网提供分享知识与智慧&#xff0c;在法治的社会里&#xff0c;请遵守有关法律法规 文章目录 1.1、漏洞描述1.2、漏洞等级1.3、影响版本1.4、漏洞复现1、基础环境2、漏洞扫描3、漏洞验证 1.5、深度利用1、反弹Shell 说明内容漏洞编号CVE-2017-5645漏洞名称Log4j Server …...

【江协科技-用0.96寸OLED播放知名艺人打篮球视频】

Python进行视频图像处理&#xff0c;通过串口发送给stm32&#xff0c;stm32接收数据&#xff0c;刷新OLED进行显示。 步骤&#xff1a; 1.按照接线图连接好硬件 2.把Keil工程的代码下载到STM32中 3.运行Python代码&#xff0c;通过串口把处理后的数据发送给STM32进行显示 …...

CATIA环境编辑器用不了时创建项目快捷方式

CATIA环境编辑器用不了时创建项目快捷方式 一、参考适用情况示例二、 解决步骤(一) 先正确放置winb_64部署包(二) 添加环境文件(三) 修改加入的环境文件(四) 复制本机CATIA快捷方式后重命名(五) 修改快捷方式目标的值 一、参考适用情况示例 二、 解决步骤 (一) 先正确放置winb…...

梦幻动漫魔法工坊:5分钟零基础搭建,小白也能生成专属二次元头像

梦幻动漫魔法工坊&#xff1a;5分钟零基础搭建&#xff0c;小白也能生成专属二次元头像 想不想拥有一个独一无二的二次元头像&#xff0c;却苦于不会画画&#xff1f;或者想为你的游戏角色、小说人物创造一个生动的形象&#xff0c;却找不到合适的画师&#xff1f;今天&#x…...

收藏!AI技能进化全解析:从聊天搭子到行业专家的成长之路

本文回顾了AI技能的演进过程&#xff0c;从最初只能进行简单对话的聊天机器人&#xff0c;到如今能够理解行业规范、执行复杂任务的智能体。文章详细介绍了AI技能发展的五个阶段&#xff1a;初级聊天机器人、通过函数调用实现工具交互、通用接口MCP规范、智能体引擎赋予环境感知…...

Spring Boot 3.1 新特性解析与实践

Spring Boot 3.1 新特性解析与实践 前言 核心新特性 1. 虚拟线程支持 Spring Boot 3.1 基于 Java 21&#xff0c;正式支持虚拟线程&#xff08;Virtual Threads&#xff09;&#xff1a; Configuration public class ThreadConfig {Beanpublic ExecutorTaskExecutor taskExecut…...

泛微Ecology流程数据查询避坑指南:workflow_currentoperator表里isremark字段到底怎么用?

泛微Ecology流程数据查询实战&#xff1a;解密workflow_currentoperator表关键字段 在泛微Ecology系统的二次开发过程中&#xff0c;流程数据的精准查询往往是开发者面临的第一道门槛。特别是当需要对接第三方系统或构建定制化报表时&#xff0c;对workflow_currentoperator表中…...

电脑c盘变红了怎么清理?C盘清理工具与方法

电脑c盘变红了怎么清理&#xff1f;问题不难解决&#xff0c;关键是选对方法工具&#xff01;下面介绍实用的清理C盘方法&#xff0c;便于你解决C盘变红的问题哦&#xff01; 关于C盘清理工具&#xff0c;给大家安排一款针对C盘爆满的清理神器---Windows - Cleaner&#xff0c…...

Qwen3-14B入门到精通:从环境搭建到多轮工具调用防死循环实战

Qwen3-14B入门到精通&#xff1a;从环境搭建到多轮工具调用防死循环实战 1. 为什么选择Qwen3-14B 在当今企业AI应用场景中&#xff0c;我们常常面临一个两难选择&#xff1a;要么使用功能有限的小模型&#xff0c;要么部署资源消耗巨大的千亿参数模型。Qwen3-14B恰好提供了一…...

避开这5个坑!VS2019+Doxygen注释实战:从代码规范到HTML文档生成

VS2019Doxygen注释实战&#xff1a;5个典型陷阱与高效解决方案 在C项目开发中&#xff0c;良好的代码文档是团队协作的基石。Visual Studio 2019与Doxygen的组合为开发者提供了强大的自动化文档生成能力&#xff0c;但许多团队在实际应用中常陷入一些看似简单却影响深远的陷阱。…...

SDMatte惊艳抠图效果展示:10组高难度玻璃/纱布/叶片实测对比图

SDMatte惊艳抠图效果展示&#xff1a;10组高难度玻璃/纱布/叶片实测对比图 1. 开篇&#xff1a;当AI遇见高难度抠图 在图像处理领域&#xff0c;抠图一直是个技术活。特别是遇到玻璃杯、薄纱窗帘、树叶这些半透明或边缘复杂的物体时&#xff0c;传统工具往往力不从心。今天我…...

Windows虚拟控制器驱动完全指南:如何用ViGEmBus实现游戏设备模拟

Windows虚拟控制器驱动完全指南&#xff1a;如何用ViGEmBus实现游戏设备模拟 【免费下载链接】ViGEmBus Windows kernel-mode driver emulating well-known USB game controllers. 项目地址: https://gitcode.com/gh_mirrors/vi/ViGEmBus 你是否曾因游戏只支持特定手柄而…...

vLLM-v0.17.1实战案例:HuggingFace模型无缝接入+多LoRA高效推理

vLLM-v0.17.1实战案例&#xff1a;HuggingFace模型无缝接入多LoRA高效推理 1. vLLM框架简介 vLLM是一个专为大型语言模型(LLM)设计的高性能推理和服务库&#xff0c;由加州大学伯克利分校的天空计算实验室(Sky Computing Lab)开发&#xff0c;现已发展为社区驱动的开源项目。…...