HDU6592 杭電多校第二場B

2021-09-28 23:28:04 字數 1107 閱讀 2352

#include#include#include#includeusing namespace std;

const int maxn=3e5+4;

int pos1[maxn],pos2[maxn],d[maxn]; //pos1[i]表示以i位置結尾的lis長度,d[i]表示長度為i的lis結尾元素最小值

int ans[maxn],a[maxn],p[maxn];

int n,tot;

int main()

memset(d,0x3f,sizeof(d));

d[0]=0;

for(int i=n;i>0;--i)

//計算字典序最小的情況

//從左至右遍歷找到的是第乙個最長串的峰

//從這個峰向兩側找組成lis的頂點即可,向左需要用單調棧盡可能向前找(遇到同樣滿足條件的,棧會彈出拋棄原有的),向右只需貪心遍歷(有滿足條件的就要了)即可

int mx=pos1[1]+pos2[1];

int now=1;

for(int i=2;i<=n;i++)

}stacks;

int p[maxn]; //p[i]表示長度為i的lis結尾的最小值

memset(p,0,sizeof(p));

p[pos1[now]]=a[now];

for(int i=now-1;i>0;i--)

tot=0;

while(!s.empty())

ans[++tot]=now;

int last=now;

for(int i=now+1;i<=n;i++)

}memset(p,0,sizeof(p)); //設為零,這樣在檢驗時,如果pos值小2或更多,將會和0值比較,這個點本身也是不能採用的。

tot=0;

last=now;

for(int i=now-1;i>0;i--)

while(!s.empty())

for(int i=1;i<=tot;i++)

printf("%d%c",ans[i],(i==tot?'\n':' '));

}return 0;

}

待補充

2019杭電多校第二場

今天也是一條鹹魚orz 場上三題 e,j,k e everything is generated in equal probability 題解 乙個長度為n的排列的逆序期望為c n,2 2 因為每一對下標的貢獻都是1 2.然後設dp i dp i dp i 為長度為i ii的隨機排列的culcul...

2019杭電多校第二場

給定乙個 n 從 1,n 中等概率取出乙個數,再等概率生成乙個 n 的全排列,再計算這個全排列的函式值,求這個函式值的期望。函式表達為輸入乙個全排列,計算其逆序數,再等概率取出乙個子串行 可以是空,可以是原序列 遞迴計算該子串行的函式值,累加返回。include using namespace st...

2018暑假杭電多校第二場

問了yxz後做的。這個是我一般寫線段樹的方法,才覺得感覺有點麻煩,還是yxz的寫法安逸些 include bits stdc h define out x cout x typedef long long ll const ll maxn 5e5 5 int n,m int b maxn struc...