其實有很多分是腦殘錯誤導致的(變數名敲錯了解一下),也有太弱導致的(本題連n^3dp都沒有想出來),不然起碼分數*2,還需要提高啊。中國少年先鋒隊第七次全國代表大會即將在北京召開,經過選拔和審核,來自海鹽縣實驗小學教育集團501班的丁某某同學作為嘉興市唯一少先隊員代表將出席本次大會,他也是海鹽縣出席全國少代會的第一人。昨天,丁某某起程前往北京參加中國少先隊代表大會。當丁某某同學到達北京之後,他在大街上看到了一排n
'>n
個建築。令第i
'>i
個建築的高度是h
i'>h
i,這個h
'>h
陣列是乙個1,2
,3,⋯
,n'>1,2
,3,⋯
,n1,
2,3,
⋯,n的排列。把他們排成一排後,定義第i
'>i
個建築是字首最優的當且僅當不存在某個j
hj>hi
'>j
hj>hi
。同樣地,我們定義第i
'>i
個建築是字尾最優的當且僅當不存在某個j
>i,
hj>hi
'>j
>i,
hj>hi
。丁某某想要這一排建築恰好有l
'>l
個字首最優和r
'>r
個字尾最優。
現在丁某某同學想要知道滿足條件的解有多少個,答案對109+
7'>109+
7取模。第一行三個正整數 n,l
,r'>n,l
,r一行乙個整數,表示答案模109+
7'>109+
7input
5 3 2output
18對於20
%'>20%
的資料,n≤10
'>n≤10
對於70
%'>70%
的資料,n
≤300
'>n
≤300
對於100
%'>
100%
的資料,n
≤5000,1
≤l,r
≤n'>n
≤50000,1
≤l,r
≤n≤50000,1
≤l,r
≤n時間限制:1
s'>1
s空間限制:512
mb'>512
首先,我們看70分的演算法(nlr),dp方程,f[i,j,k]表示選了前i大的數出來放,左邊有j個滿足字首最優,k個滿足字尾最優
根據這個我們就可以得出乙個神奇的方程f[i][j][k]=f[i-1][j-1][k]+f[i-1][j][k-1]+f[i-1][j][k]*(n-2)除非新加入的這個小的數放在左右兩端,否則對字首最優字尾最優不會產生貢獻。
我們進一步考慮優化,由於左和右的方案可見是對稱的,我們考慮只算其中乙個再組合數搞出另乙個。
那麼就有f[i,k]表示放一邊,且有k個滿足最優前字尾的方案數
方程f[i,k]=f[i-1][k]*(i-1)+f[i-1][k-1]
同理上面的方程
我們列舉第i+1個點為最高點,其左邊有i個點,那麼此時滿足題意可得(0<=i<=n-1)
ans+=c(n-1,i)*f[i,l-1]*f[n-i-1,l-1]
最大值固定,然後c(n-1,i)將i個數分配到最大值左右,然後由於最大值一定滿足最優前字尾,那麼對於i個數就是l-1,對於n-i-1個數就是r-1.這樣就做到n^2搞出來了。
70分code
//70分 code滿分code:#include#include#include#includeusing namespace std;
const int mod = 1000000007;
int n,l,r;
int f[305][305][305];
int main()
} }printf("%d",f[n][l][r]);
}
#include#include#define ll (long long)using namespace std;
const int mod = 1000000007;
const int maxn = 5005;
int fac[maxn],inv[maxn];
int ksm(int a,int b)
int n,l,r;
int f[maxn][maxn];
int getc(int a,int b)
} int ans = 0;
for(int i=0;i<=n-1;i++)
printf("%d",ans);
}
ZROI 白銀御行
本題的男點大概在如何批量的計算兩個矩陣有交。設乙個矩陣的四個端點為 a,b,c,d 對於乙個矩陣 x,另乙個矩陣 y 和它有交,首先要滿足 y 的 a 在 x 的 d 左上方,如圖所示的四個區域,對於第 1 個區域已無問題。第二區發現如果 c 點在 1 內則有,否則無,無的情況正好是 y c x b...
ZROI 1254 迷宮 互動
互動題真難調 小 d 正在走迷宮。這個迷宮可以被看做 n nn 個點,m mm 條邊的連通無向圖。小 d 在每個點時,僅能夠看到這個點出發有多少條路。自然地,小 d 可以知道他是從第幾條路過來的。顯然,僅有這些資訊是不夠的。因此,小 d 決定給節點做一些標記 小 d 共可以做 k kk 種標記,每個...
ZROI 19 08 02 計算幾何
1.向量基礎知識 線段樹維護矩乘就好了,矩陣裡需要帶個常數字置。不會積分,告辭。2.簡單題 投影就是點積,直接積就行了,必修四怎麼學的。跟上面的一模一樣。叉積判出不共線的兩種,剩下的直接比較橫座標就可以了。平行向量叉積為 0 垂直向量點積為 0 跨立實驗 對於一條線段,看另一條線段的兩個點是否在它兩...