洛谷3672 小清新簽到題 題解

2022-05-16 12:36:15 字數 1029 閱讀 7354

題目見上面。

參考:講真我最開始真不知道求方案數有什麼用。

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[i-1][j-i]。

同時注意f陣列可能爆longlong,但是因為k<=1e13所以沒必要那麼多方案,當f[i][j]>k的時候統一換成inf就行。

然後我們列舉每一位可以放什麼數,統計放這個數所造成的貢獻c,以及之前可以放的數(但因為達不到k而被放棄)的方案數tmp。

則當f[i-1][x-c]+tmp>=k的時候就可以放這個數了。

#include#include

#include

#include

#include

#include

#include

#include

using

namespace

std;

typedef

long

long

ll;const

int n=305

;inline ll read()

while(isdigit(ch))x=(x<<3)+(x<<1)+(ch^48),ch=getchar();

return w?-x:x;

}int

ans[n],vis[n];

ll f[n][n*n/2],s[n][n*n/2

];int

main()

}for(int i=n;i>=1;i--)

tmp+=f[i-1][x-c];}}

}for(int i=1;i<=n;i++)printf("

%d "

,ans[i]);

puts(

"");

return0;

}

洛谷 P3672 小清新簽到題 DP 排列

傳送門 題意 給定自然數n k x,你要求出第k小的長度為n的逆序對對數為x的1 n的排列 n le 300,k le 10 13 一下子想到hzc講過的dp 從小到大插入,後插入不會對前插入造成影響,f i j 表示 1.n 排列 j 個逆序對的方案數,列舉插在 然後從前向後選擇滿足要求的字典序最...

洛谷簽到題

題目描述 一天 cyx 閒得無聊,寫下了 nn 個數,每個數隻會是 11 或 22,每個數是 11 的概率和是 22 的概率都是 50 50 現在 cyx 想知道他寫的這 nn 個數的和,可他寫的數太多了,他根本算不了,所以他就想知道總和的期望值。你能告訴他麼?輸入格式 乙個整數 nn,表示 cyx...

洛谷3653 小清新數學題(數論)

點此看題面 考慮 l,r 範圍很大,我們最多只能篩出 10 6 也就是 o sqrt 3 r 範圍內的素數。對於乙個需要求解的 mu x 我們可以先把它當中 le10 6 的質因子先全部除去,同時維護出這部分的 mu 值。而剩下的部分如果不為 1 則最多由兩個 10 6 的質因子相乘而得。如果剩下的...