#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...