日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

[TJOI2014] Alice and Bob

發(fā)布時間:2023/12/18 编程问答 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [TJOI2014] Alice and Bob 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

?

? ? ?非常好的一道思維性題目,想了很久才想出來qwq(我好笨啊)

? ? ?考慮a[]數(shù)組有什么用,首先可以yy出一些性質(zhì) (設(shè)num[i]為原來第i個位置的數(shù)是什么 , 因為題目說至少有一個排列可以滿足a[],所以我們就假設(shè)num[]沒有相同的元素):

? ? ? ? ?1. 當(dāng) a[i] == a[j] 且 i<j 的時候,我們可以得出 num[i] > num[j] ,因為如果反過來的話 a[j] 就至少是 a[i]+1 了。

? ? ? ? ?2. 對于任意一個 a[i] ,考慮所有 a[j] + 1 == a[i] 的 j,它們中至少有一個要滿足 : num[j] < num[i];而很顯然,因為上一個性質(zhì)的傳遞性,所以只需要找到最大的 j 然后讓num[j] < num[i] 就好了,也就是說每個 位置 至多 會和前面的一個位置 有必然的大小關(guān)系。

? ?

? ? ?然后我們把<當(dāng)作邊,可以發(fā)現(xiàn)原圖變成了一個森林。而現(xiàn)在我們的任務(wù)就是:求出原序列的一個拓?fù)渑判?#xff0c;使得反向lis和最大。

? ? ?這個好像還不是很容易啊,填一個數(shù)帶來的影響太多了。

? ? ?不過我們最初內(nèi)心肯定都會有一個想法:貪心,盡量讓靠后的位置匹配小的數(shù)。

? ? ?

? ? ?但是我一開始心里有一個顧慮: 如果一個位置很靠后,但是因為它必須要小于一個很靠前的位置(或者說它的爸爸編號很小),從而被耽誤導(dǎo)致答案很劣怎么辦?

? ? ?不過畫圖之后證明這種情況是不存在的!

? ? ?可以發(fā)現(xiàn)森林的第i層就是由 所有 a[x] == i 的 x 組成的,而每個節(jié)點(diǎn)會向上一層最大的 編號小于自己的點(diǎn) 連邊,所以這就保證了一種貪心的正確性:我們從虛根(0)開始,采取每次走編號最大的兒子的先序遍歷策略。

? ? ?這種貪心的正確性在于,我們在走一個點(diǎn)i之前經(jīng)過的點(diǎn),要么是i的祖先(欽定要比它小的),要么編號比i大(編號靠后的小答案更優(yōu))。

?

? ? ?于是就做完了hhhhhhhh(雖然代碼被我壓得很短)

?

#include<bits/stdc++.h> #define ll long long #define pb push_back using namespace std; const int maxn=100005; vector<int> g[maxn]; int n,m,pre[maxn],A,num[maxn],now,f[maxn],M[maxn]; inline void update(int x,int y){ for(;x<=n;x+=x&-x) f[x]=max(f[x],y);} inline int query(int x){ int an=0; for(;x;x-=x&-x) an=max(an,f[x]); return an;} void dfs(int x){ if(x) num[x]=++now; for(int i=g[x].size()-1;i>=0;i--) dfs(g[x][i]);} int main(){scanf("%d",&n);for(int i=1;i<=n;i++) scanf("%d",&A),g[pre[A-1]].pb(i),pre[A]=i;dfs(0); ll ans=0;for(int i=n;i;i--) M[i]=query(num[i]-1)+1,update(num[i],M[i]),ans+=(ll)M[i];printf("%lld\n",ans);return 0; }

  

轉(zhuǎn)載于:https://www.cnblogs.com/JYYHH/p/8963995.html

總結(jié)

以上是生活随笔為你收集整理的[TJOI2014] Alice and Bob的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。