CSP 201809 3 元素選擇器

2022-07-24 13:09:24 字數 1635 閱讀 3603

給出的就是一棵樹的dfs序列,把樹建立好。然後dfs詢問就好了。我把所有不同的的屬性和id都用乙個唯一的正數離散化了,方便判斷,其實直接比較string也可以,可以少寫不少**= =。

我把乙個整數陣列和乙個string起了一樣的名字,然後string一直亂碼檢查半天,c++太迷了為什麼不報錯= =

然後注意大小寫敏感問題,要是不判斷這個只有90.

1 #include2

using

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...