HDU 6348 序列計數(dp 樹狀陣列)

2021-08-22 08:20:21 字數 826 閱讀 8661

題目:度度熊了解到,1,2,…,n 的排列一共有 n!=n×(n−1)×⋯×1 個。現在度度熊從所有排列中等概率隨機選出乙個排列 p1,p2,…,pn,你需要對 k=1,2,3,…,n 分別求出長度為 k 的上公升子串行個數,也就是計算滿足 1≤a1 < a2 < … < ak ≤n 且 pa1 思路:因為是隨機排列,迴圈長度用樹狀陣列維護長度為len-1時的答案,滾動陣列更新dp就行了。n*nlogn,隨機序列能過的。。

#include using namespace std;

typedef long long ll;

const int maxn=1e4+10;

const ll mod=1e9+7;

int t,n,a[maxn];

ll dp[2][maxn],c[maxn],ans[maxn];

int lowbit(int x)

void update(int pos,int val)

}ll query(int pos)

return ans;

}int main()

memset(ans,0,sizeof ans);

ans[1]=n;

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

memset(c,0,sizeof c);

}printf("case #%d:",++cas);

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

printf(" %lld",ans[i]);

puts("");

}return 0;

}

HDU 5256 序列變換 線性DP

我們有乙個數列a1,a2.an,你現在要求修改數量最少的元素,使得這個數列嚴格遞增。其中無論是修改前還是修改後,每個元素都必須是整數。請輸出最少需要修改多少個元素。input 第一行輸入乙個t 1 t 10 表示有多少組資料 每一組資料 第一行輸入乙個n 1 n 105 表示數列的長度 第二行輸入n...

Sdoi2017 序列計數

alice想要得到乙個長度為n的序列,序列中的數都是不超過m的正整數,而且這n個數的和是p的倍數。alice還希望 這n個數中,至少有乙個數是質數。alice想知道,有多少個序列滿足她的要求。一行三個數,n,m,p。1 n 10 9,1 m 2 10 7,1 p 100 一行乙個數,滿足alice的...

lintcode 948 序列計數

求有多少個長為n的序列滿足如下要求 返回滿足要求的序列個數對 10000007 取模的結果 您在真實的面試中是否遇到過這個題?是 題目糾錯 樣例 1 輸入 n 2,m 5,p 4 輸出 3 解釋 這三個序列是 2,2 1,3 和 3,1 樣例 2 輸入 n 2,m 3,p 4 輸出 5 解釋 這 5...