年功序列c 遊戲

2021-10-23 11:37:34 字數 2872 閱讀 1830

在虛擬國度裡多了很多 virtual oier,為了樹立對後輩的威信,從第 11 個 virtual oier 開始的 oier 們搞起了年功序列的制度。

虛擬國度的創始人 oier chtholly 感覺非常有趣,於是他決定觀測 11 到 nn 這些人,他觀測到了一些有趣的現象:虛擬國度裡有一些凳子,如果 aa 是 的先輩則 能在 前面得到凳子

chtholly的觀測可以構成 mm 個序列,每個序列有 kk 個元素 a1,a2,a3,⋅⋅⋅⋅⋅⋅,aka1a 2a3,⋅⋅⋅⋅⋅⋅,a k。表示在 aia 有凳子前 a1,a2,a3,⋅⋅⋅⋅⋅⋅,ai−1a 1a2 ,a 3⋅⋅⋅⋅⋅⋅,a i−1必須有凳子。(ai−1a i−1是 aia的前輩)

例如 k = 3 時:a=1,2,3a=1,2,3,表示 33 有凳子前 1,21,2必須都有凳子,22 有凳子前 11 必須有凳子。

但 chtholly 年紀大了記憶力未必好,如果第 ii 個序列與前 i−1i−1 個序列衝突的話那麼就只需要考慮前 i−1i−1 個序列就好了。(忽略第 ii 個序列)

chtholly 希望知道 11 到 nn 個人的年功序列的最小字典序。

輸入格式

第一行兩個數 n,mn,m

接下來 m 行每行第乙個數為 kk,接下來 kk 個數為這次觀測構成的序列

輸出格式

輸出 nn 個數構成的最小字典序。

樣例樣例輸入

4 33 1 2 3

2 4 2

3 3 4 1

樣例輸出

1 4 2 3

樣例解釋

第三個觀測序列與前兩個觀測序列衝突不考慮,前兩個觀測序列可以構成 11 44 22 33 或者 44 11 22 33 這兩個序列,字典序小的為 11 44 22 33。

資料範圍與提示

3030%的資料,n≤10,m≤4n≤10,m≤4

5050%的資料,n≤10000,m≤5000n≤10000,m≤5000

100100%的資料,n≤100000,m≤50000,k≤nn≤100000,m≤50000,k≤n

首先,如果不考慮有衝突的情況下,那這就是一道模板題了,也就是用優先佇列的拓撲排序,於是,問題便變成如何處理衝突

首先有乙個思路,就是用dfs,乙個乙個地新增序列,如果,拓撲排序滿足的話,就可以直接輸出了,但是,這個思路首先肯定會t,其次,可能不會滿足字典序最小,於是,就又要想其他思路了

好好讀題,會發現

如果第 i個序列與前 i+1個序列衝突的話那麼就只需要考慮前  i個序列就好了。
思考一下,會發現,每乙個序列滿足必須是前乙個序列滿足,所以,如果有乙個序列不滿足,剩餘的就不用輸入了下乙個問題,便成了如何判斷可行

這時,回歸拓撲排序的定義,無環,也就是判斷是否有環

for

(int i =

0; i < g[x]

.size()

; i++

)//鄰接表

vis[g[x]

[i]]=1

;//標記if(

!check

(g[x]

[i])

)//如果下乙個頂點有環,說明,這張圖都有環

vis[g[x]

[i]]=0

;//回溯

}return1;

}

因為判斷要用鄰接表,所以,如果判斷有環,我們要刪去鄰接表,順便,就刪去

入度的tot

for

(int j=

1;j)

**

#include

#include

#include

#include

using

namespace std;

int x, y;

int m;

int n;

int tot[

100005];

vector<

int> g[

100005];

vector<

int> ans;

int vis[

100005];

int k;

int cnt =0;

int a[

100005];

priority_queue<

int, vector<

int>

, greater<

int>

> q;

bool

check

(int x)

vis[g[x]

[i]]=1

;//標記if(

!check

(g[x]

[i])

)//如果下乙個頂點有環,說明,這張圖都有環

vis[g[x]

[i]]=0

;//回溯

}return1;

}int

main()

// 1沒有入度

g[a[j -1]

].push_back

(a[j]);

tot[a[j]]++

;}memset

(vis,0,

sizeof

(vis));

if(!check

(a[1])

)break;}

}for

(int i =

1; i <= n; i++)}

while

(!q.

empty()

)}}for

(int i =

0; i < ans.

size()

; i++

)}

年功序列c

在虛擬國度裡多了很多 virtual oier,為了樹立對後輩的威信,從第 11 個 virtual oier 開始的 oier 們搞起了年功序列的制度。虛擬國度的創始人 oier chtholly 感覺非常有趣,於是他決定觀測 11 到 nn 這些人,他觀測到了一些有趣的現象 虛擬國度裡有一些凳子...

序列遊戲2

實驗任務 有乙個字串序列 s,初始時是空的,定義以下兩種操作 i x 在序列的末尾插入字串 x。q x 輸出在序列 s 中有幾個字串是以 x 為字首的。字串 x 的長度小於 10,只包含小寫字母。資料輸入 輸入第一行是乙個整數m 1 m 100000 表示有m 種操作。接下來m 行,表示 m 種操作...

《Stanley博士的家》遊戲功略

stanley博士的家 遊戲功略 背景 james是乙個私家偵探,某日他收到物理學家stanlley博士的一封信,博士在信中邀請james去他家小聚,並說有要緊事相求。進入博士的家 觀察房子一周後發現所有的門都是鎖著的。在房子一邊的一棵大樹上發現有物品,但是需要用工具才能取下,於是在車庫賓士車旁邊的...