http://118.190.20.162/view.page?gpid=T121
写的时候思路比较乱,不确定对不对,所以搜了别的答案,下面的答案是100分的。
https://blog.csdn.net/weixin_43693379/article/details/112725802
关于代码第149行 ios::sync_with_stdio(false);
https://blog.csdn.net/weixin_44015865/article/details/84974373
关于第150行 cin.tie(0);
https://blog.csdn.net/weixin_44772995/article/details/92839903
这是我没写完的,其实已经不对了,因为我用全局map的话就不能允许不同层级出现同名的目录或文件。
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <map>
using namespace std;
const int MAXN = 100000;
string father[MAXN];
//file files[MAXN];
//fold folds[MAXN];
map<string, file> files;
map<string, fold> folds;
struct file{
int id;
int size;
fold(string name, int size):name(name), size(size) {}
};
struct fold{
string name;
int ld; //目录配额
int lr; //后代配额
fold(string name):name(name), ld(0), lr(0) {}
};
bool isValid(string path){
int len = path.size();
if(path[0] != '/' || path[len-1] == '/'){
return false;
}
for(int i = 0; i < len; i++){
if(path[i] == '/' && path[i+1] == '/'){
return false;
}
}
return true;
}
bool isfile(string name){
if(files.find(name) != files.end()){
return true;
}else{
return false;
}
}
bool isfold(string name){
if(folds.find(name) != folds.end()){
return true;
}else{
return false;
}
}
string getname(string path){
int len = path.size();
int i = 1, k = 0;
string tmp = "";
while(i < len){
if(path[i] == '/'){
if(isfile(tmp)){
return false;
}else if(!isfold(tmp)){
folds[tmp] = new fold(tmp);
}
}else{
tmp += path[i];
}
}
}
string find(string name){ //查找根目录
if(name != father[name]){
father[name] = find(father[name]);
}
return father[name];
}
bool C(string path, int size){
if()
}
bool R(string path){
if()
return true;
}
bool Q(string path, int ld, int lr){
if()
}
int main(){
int n;
char order;
string path;
int size, ld, lr;
scanf("%d", &n);
bool flag;
while(n--){
cin >> order >> path;
if(!isValid(path)){
printf("N\n");
continue;
}
if(order == 'C'){
cin >> size;
flag = C(path, size);
}else if(order == 'R'){
flag = R(path);
}else if(order == 'Q'){
cin >> ld >> lr;
flag = Q(path, ld, lr);
}
if(flag){
printf("Y\n");
}else{
printf("N\n");
}
}
return 0;
}
京公网安备 11010502036488号