在虛擬國度裡多了很多 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 這些人,他觀測到了一些有趣的現象 虛擬國度裡有一些凳子...
2023年10月28日提高組 C 友誼序列
n 兩個長度為n nn的序列a aa和b bb,詢問有多少個元素x xx,滿足x a ixor bjx a i xor b j x ai x orbj 且 x a x in a x a或x b x in b x b 只需回答元素的個數是奇數還是偶數 資料範圍 n 2 105 n leq 2 time...
C語言基本功教程系列 1
看了那麼多文章,感覺到大家學習遊戲程式設計的熱情.經常看到很多人提出關於opengl directx,和computer graphics的問題.但是我個人人為,遊戲程式設計,最最最重要的還是c c 語言的基本功.如何編寫高效率,整潔,和盡可能少的bug的 是成為乙個遊戲程式設計員的關鍵.所以我開拉...