Polycarp Recovers the Permutation 构造(1000)
生活随笔
收集整理的這篇文章主要介紹了
Polycarp Recovers the Permutation 构造(1000)
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
題意 :
- 對(duì)于一個(gè)長(zhǎng)度為n的排列和一個(gè)空序列ans,每次取當(dāng)前最左邊或者最右邊中最小的值,如果取的是最左邊,插入序列ans的最左邊,然后在排列中刪除這個(gè)數(shù),如果取的是最右邊,插入最右邊,刪除
- 現(xiàn)在給出ans序列,問(wèn)是否存在排列使得操作后的結(jié)果是ans,輸出任意方案
思路 :
- 首先,最后插入的數(shù)字一定是排列中最大的數(shù)字,也就是它一定在ans的左/右
- 我們檢測(cè)ans的首尾是否有一個(gè)n,如果不存在一定無(wú)解
- 如果存在 :
- 1.ans[1] == n,我們把a(bǔ)ns[1]放到原數(shù)組的最左邊,由于它是最大的,在每一次的操作中,它都可以讓另一個(gè)數(shù)被取走,它本身最后才被取走,由于構(gòu)造出來(lái)的結(jié)果是最外層的先被比較然后放入新的序列中,因此,將[2,n][2,n][2,n]逆序即可
- 2.ans[n] == n,對(duì)于[1,n?1][1,n-1][1,n?1]的數(shù)字,它們同樣是逆序存儲(chǔ)的
- reverse第二個(gè)參數(shù)是)而不是]的
- return cout << xxx << endl, void();,就不用換行return了
總結(jié)
以上是生活随笔為你收集整理的Polycarp Recovers the Permutation 构造(1000)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 王道计算机考研 数据结构 (串)
- 下一篇: Weights Assignment F