bzoj2431 || 洛谷P1521 求逆序對
考慮一下插⼊法
n<=100
f[i][j]表⽰
f[i][j]=Σf[i−1][j−k](0<=k<=i−1)
O(m∗n2)
拓展:如果 n<=1000呢?
n<=1000?
f[i][j]是
f[i−1]中連續⼀段的和
字首和優化
O(n∗m)
下面上非拓展的程式碼:
#include<cstdio>
using namespace std;
int f[105][6005];
int main()
{
int n,k;
scanf("%d%d",&n,&k);
f[1][0]=1;
f[2][0]=1;
f[2][1]=1;
f[0][0]=1;
for(int i=3;i<=n;i++)
{
for(int j=0;j<=k;j++)
{
for(int kk=0;kk<=i-1&&kk<=j;kk++)
{
f[i][j]+=f[i-1][j-kk]%10000;
}
}
}
printf("%d",f[n][k]%10000);
return 0;
}
相關推薦
bzoj2431 || 洛谷P1521 求逆序對
考慮一下插⼊法 n < = 10
洛谷P1521 求逆序對 題解
-i can 由於 逆序 family std sum 16px div 題意: 求1到n的全排列中有m對逆序對的方案數。 思路: 1.f[i][j]表示1到i的全排列中有j對逆序對的方案數。 2.顯然,1到i的全排列最多有(i-1)*i/2對逆序對,而對於
洛谷P3157 動態逆序對 [CQOI2011] cdq分治
spa https 兩個 href show tps 時間 操作 逆序 正解:cdq分治 解題報告: 傳送門! 長得有點像雙倍經驗還麻油仔細看先放上來QwQ! 這題首先想到的就直接做逆序對,然後記錄每個點的貢獻,刪去就減掉就好 但是仔細一想會發現布星啊,如果有一對逆
洛谷P1908歸併排序求逆序對
#include<bits/stdc++.h> #define ll long long #define INF 0x3f3f3f3f using namespace std; int n,a[500010],c[500010]; ll ans=0; void msort(int b
求逆序對
spl ans stream oid close algo ostream nbsp span 方法一:樹狀數組 模板如下: #include<iostream> #include<cstdio> #include <algorithm&g
1688 求逆序對
題目 codevs ger sample -i icon 逆序 -h else codevs——1688 求逆序對 前面剛剛說了逆序對,那就先那個題來練練手吧。。。(雖然是個板子(⊙o⊙)…) 時間限制:
[Codevs] 1688 求逆序對
dev close wrapper pro lld cti none des put 1688 求逆序對 時間限制: 1 s 空間限制: 128000 KB 題目等級 : 黃金 Gold 題目描
樹狀數組求逆序對
res gets 逆序 算法 fps string ons 基本 -a 我們知道,求逆序對最典型的方法就是歸並排序,但是還有一種方法就是樹狀數組。假如你理解了樹狀數組,樹狀數組求逆序對相比歸並排序排序要更好理解一些,而且樹狀數組的代碼量也要少一些。 我們先看一下逆序對是什麽
Codevs 1688 求逆序對(權值線段樹)
per wrapper oid tdi nod 時間限制 cti 一個 sca 1688 求逆序對 時間限制: 1 s 空間限制: 128000 KB 題目等級 : 黃金 Gold 題解 查看運行結
【歸並排序求逆序對】
div closed spa main sed pri 歸並 逆序對 con 【AC】 1 #include<bits/stdc++.h> 2 using namespace std; 3 typedef long long ll; 4 5 co
POJ2299 樹狀數組求逆序對
include poj pre spa ans unique urn void algo 裸題,不多解釋。 1 #include<iostream> 2 #include<cstdio> 3 #include<algorithm
震驚!Vector兩行代碼求逆序對,六行代碼過普通平衡樹
參考 div amp spa cor clas sin 考試 main Vector兩行代碼求逆序對 背景:濟南集訓Day7上午T2,出了一道逆序對的裸題,SB的我沒看出是逆序對來,於是現場推了一個很刁鉆的求逆序對的方法 首先我們想一下冒泡排序的過程,我們不難發
【BZOJ2431】【HAOI2009】逆序對數列 DP
har clas esp LG endif 優化 pll ace bzoj 題目大意 問你有多少個由\(n\)個數組成的,逆序對個數為\(k\)的排列。 \(n,k\leq 1000\) 題解 我們考慮從小到大插入這\(n\)個數。 設當前插入了\(i\)個
線段樹求逆序對
std con pac clu can -m cnblogs amp ons 思路: 離散化變成一個1-n的數組表示每個數的排名,然後按順序插入各個數排名,並且查詢比它排名大的數的個數。 這個離散化方法還是比較好的,思維難度和代碼難度都比較小。 #include <
Another Version of Inversion 二維樹狀數組求逆序對
return TP span namespace 關於 max using ble oid Another Version of Inversion 題意:只有2種走路方式,往右或者往下,求先走到一個大的數,在走到小的數的這種方式有多少。也就是說求出關於這個2維矩陣的逆序數
nlogn求逆序對&&陌上花開
www 計數器 比較 stk cst 運用 完成後 spa 數組 前置: nlogn逆序對: 前一個小時我還真的不會這個Orz 這裏運用歸並排序的思想。 對於一個序列,我們把它先分開,再合並成一個有序序列。 引自https://blog.csdn.net/qq_301892
[USACO17FEB] Why Did the Cow Cross the Road I P (樹狀數組求逆序對 易錯題)
-h 特殊性 另一個 %d .org class data 操作 efi 題目大意:給你兩個序列,可以序列進行若幹次旋轉操作(兩個都可以轉),對兩個序列相同權值的地方連邊,求最少的交點數 記錄某個值在第一個序列的位置,再記錄第二個序列中某個值 在第一個序列出現的位置 ,求逆
淺談樹狀數組求逆序對
nlog 不變 for i++ 需要 逆序對 date 縮小 math 做了一道樹上求逆序對的題,主要難點並不在於樹形結構,而是求逆序對數。(在我看來是這樣的)。 to洛谷P3605晉升者計數。 發現自己樹狀數組求逆序對還有個坑,先填上再說。再加上最近學的樹狀數組離散化,捋
離散化及樹狀陣列求逆序對
用樹狀陣列求逆序對的時候注意:要統計b[i]-1的字首和,因為可能有相同值的元素 不去重離散化: sort(a+1, a+n+1, cmp); for(int i=1; i<=n; i++) { if(i == 1 || a[i].val != a[i-1].val) { to
HDU 5592 ZYB's Premutation (線段樹求逆序對)
題意 給你一組從1到n的排列,表示的是你當前所擁有的逆序對數,現在讓你重新還原這個排列。 思路 我們知道 [1⋅⋅⋅i] [ 1 ·