說是dp
雖然當時當做人排隊看出來了。。。
然後好像寫出來的公式是錯的。。
時間也不夠,就不知道怎麼搞了。。
其實自己讀錯題目了。。
大佬的題解:
dp[i][j]表示i個數的排列中有指定的j個數不在原先的位置的排列種數,然後dp[i][j]=(j-1)*dp[i-1][j-2]+(i-j)*dp[i-1][j-1]
初始狀態dp[i][0]=i!,dp[i][1]=(i-1)*(i-1)!
然而自己交上去還是wa了、、
而且。 要注意因為是 階乘-dp[i][j]; 而且又取模了。所以前面的可能比較小,,我就要加上mod。。
我也不太明白為什麼不是 (jc(n)+mod-dp[n][m])%mod。。 按理說不是 在+不在=階乘嗎。。。怎麼這裡這樣錯了。。
#include#include#include#include#include#include#include#include#includeusing namespace std;
#define mem(a,b) memset(a,b,sizeof(a));
#define sf scanf
#define pf printf
#define ll long long
#define bug1 cout<<"bug1"<
還有蘇大佬的題解:
我卻還是不知道為什麼錯, 原來是一些細節。。
#include#include#include#include#include#include#includeusing namespace std;
#define sf scanf
#define pf printf
const int mod=1e9+7;
const int maxn=205;
long long dp[maxn][maxn];
bool isprime(int x)
return true;
}int main()
}else
}}int n,m;
while(~sf("%d%d",&n,&m))
}
jx**;其實就是蘇大佬的思想,,只是有些地方比如j==0的時候判斷了。。還有就是dp=1的邊界。。
#include#include#includeusing namespace std;
long long m[210][21];
long long k[210];
long long dp[210][210];
long long sum[210];
long long mod=1e9+7;
int main()
memset(sum,0,sizeof(sum));
k[0]=0;
k[1]=0;
for(int i=2;i<=205;i++)
} }for(int i=1;i<=205;i++)
memset(dp,0,sizeof(dp));
dp[1][0]=1;
for(int i=2;i<=200;i++)
else
}else
} }int n,m;
while(cin>>n>>m)
cout<
2017軟院金山WPS補題 L
比賽的時候題意看不懂。然後就卡了。l題就是模擬作業系統的lru演算法。就是維護乙個鍊錶,如果要替換的話就找到最後乙個替換,如果要插入的話就插入到開頭,如果在鍊錶中已經存在的話,就把這個提到鍊錶的開頭,然後搞一下就行了。看了別人的做法,用的是queue map cnt與queue中的元素個數不是同步的...
2012 9 26 金山WPS筆試題
今晚的筆試題目不難,所考演算法也不是很難,關鍵在仔細審題和平常的積累 1.有770個節點的完全二叉樹,問葉子節點有多少?重點是葉子節點,不是最下一層的節點數目,陷阱呀 可以計算得出該完全二叉樹的最下面一層的節點數目是259,上一層的節點數目為256,所以,可以得出上一層的葉子節點數目有126,所以結...
金山Wps珠海實習雜記(二)
2019.11.22 算一算時間,過來珠海已經一周時間了。從最開始的茫然四顧,到現在一切也慢慢走上正軌了。最近的工作有些單調,主要還是自主學習會較多一些。前兩天導師分配了乙個有點 打雜 意味的任務 我們wps的qingbangong模組有很多rpc網路請求,目前我們希望用一套邏輯來對這些rpc進行管...