傳送門
題意:給定自然數n、k、x,你要求出第k小的長度為n的逆序對對數為x的1~n的排列
$n \le 300, k \le 10^13$
一下子想到hzc講過的dp
從小到大插入,後插入不會對前插入造成影響,$f[i][j]$表示$1..n$排列$j$個逆序對的方案數,列舉插在**
然後從前向後選擇滿足要求的字典序最小的構造就行了
一開始沒注意$dp$方程是$o(n^4)$的t了一次,以後一定要跑一下極限資料
加上字首和優化
然後會爆long long,但我們只關心與k相比大小,所以$>k$變成$k+1$就行了
#include #include#include
#include
#include
#include
using
namespace
std;
typedef
long
long
ll;const
int n=301, m=n*(n-1)/2
;inline ll read()
while(c>='
0'&&c<='9')
return x*f;
}int
n, x, m, a[n], vis[n];
ll f[n][m], k, s[
2][m];
void
dp()
}int
main()
cnt+= f[i-1][x-c];}}
for(int i=1; i<=n; i++) printf("
%d "
,a[i]);
//printf("\n%lf", (double)clock()/clocks_per_sec);
}
洛谷3672 小清新簽到題 題解
題目見上面。參考 講真我最開始真不知道求方案數有什麼用。f i j 表示i個數j個逆序對有多少種方案。顯然我們有f i j f i 1 j f i 1 j 1 f i 1 j i 1 就相當於給乙個比序列中所有數都大的數,讓你往裡插。於是令s i j 為字首和,優化成f i j s i 1 j s ...
洛谷 P3601 簽到題
題目描述 我們定義乙個函式 qiandao x 為小於等於x的數中與x不互質的數的個數。這題作為簽到題,給出l和r,要求求 i lrqi anda o i mo d666623333 sum r qiandao i mod 666623333 i lr qian dao i mo d666 6233...
洛谷P3601 簽到題
我們定義乙個函式 qiandao x 為小於等於x的數中與x不互質的數的個數。這題作為簽到題,給出l和r,要求求 sum r qiandao i mod 666623333 先線性篩出 1 sim 10 6 的質數,然後計算他們對 l sim r 的數的貢獻即可。注意噹噹 l sim r 的數最後可...