給出的就是一棵樹的dfs序列,把樹建立好。然後dfs詢問就好了。我把所有不同的的屬性和id都用乙個唯一的正數離散化了,方便判斷,其實直接比較string也可以,可以少寫不少**= =。
我把乙個整數陣列和乙個string起了一樣的名字,然後string一直亂碼檢查半天,c++太迷了為什麼不報錯= =
然後注意大小寫敏感問題,要是不判斷這個只有90.
1 #include2using
namespace
std;
3const
int maxn=110;4
56intname[maxn],id[maxn];
7 mapname;
8int tot1=0,tot2=499;9
intdep[maxn];
10int
n,m;
11 vectorg[maxn],ans,element;
12bool vis[1010
];13
void solve(int u,int cur,int
tar)
18else19}
20for
(auto v:g[u])
23 vis[name[u]]=0;24
if(id[u]!=-1)vis[id[u]]=0;25
}26void tol(string &s)30}
31int
main()
40while(j'
' && str[j]!='
#')j++;
41while(j'
')42
tol(_name);
43if(!name.count(_name))
44if(_id!=""&&!name.count(_id));
45 name[i]=name[_name];
46if(_id!="") id[i]=name[_id];47}
48for(int i=1;i<=n;++i)
53 }string
q,f;
54while(m--)
61 solve(1,0
,element.size());
62 cout
"64return0;
65}66/*
6711 5
68html
69..head
70....title
71..body
72....h1
73....p #subtitle
74....div #main
75......h2
76......p #one
77......div
78........p #two79p
80#subtitle
81h3
82div p
83div div p
84*/
csp 201809 3 元素選擇器
題目描述 201809 3 試題名稱 元素選擇器 時間限制 1.0s 記憶體限制 256.0mb 題目背景 題目描述 由題可知,結構化文件由元素組成,而這些元素是以一棵樹得形式組織起來的。我們這裡使用結構體來儲存每乙個元素,結構體內包含元素標籤 name 元素id id 元素所在層級 level用於...
csp201809 3 元素選擇器
時間限制 1.0s 空間限制 由於標籤大小寫不敏感,因此在讀取標籤時,首先將標籤的字母全部轉為小寫。建立元素陣列儲存每乙個元素,建立乙個記錄所有id出現的陣列,便於查詢,減少複雜度。在讀取文件資料時,使用vector陣列來儲存上一級元素,用於查詢每個元素的上一級元素。有點類似棧 不是後代選擇器的情況...
CSP 201809 3元素選擇器
題意 模擬元素選擇。分析 id選擇器和標籤選擇器的查詢都比較簡單,稍微麻煩的是後代選擇器。我用了二維陣列儲存每個元素的祖先,第一維代表的是層級 冒號的個數除以2 第二維代表的是序號。多級的後代選擇器在匹配時,可以採用貪心的策略 除最後一級外,前面的部分都可以盡量匹配層級小的元素。如下 include...