題目描述:(暫不提供)
這道題很明顯是一道原題。
原題: gerald and giant chess
然後直接那麼做就好了 (逃
這題其實之前也沒做過。但賽後聽說是原題結果發現果真是原題。。。
首先n
nn和m
mm都很大,而k
kk比較小,那麼我們的狀態肯定與k
kk有關。
首先將那k
kk個點按照橫縱座標從小到大排序。
設f if_
fi表示到第i
ii個點,且途中不經過任何乙個被淹點的方案數。
首先考慮走到當前這個被淹點的方案數,也就是cxi
+yix
ic_+y_}^}
cxi+y
ixi
因為方案就是楊輝三角,當然就是這樣了。
考慮中間有很多重複的點,也就是當x
j<=x
ix_<=x_
xj<=x
i且y
j<=y
iy_<=y_
yj<=y
i是要減去j
jj的貢獻。
也就是減去fj∗
cxi−
xj+y
i−yj
xi−x
jf_*c_-x_+y_-y_}^-x_{}j}
fj∗cx
i−x
j+y
i−y
jxi
−x
j。早上睡得迷迷糊糊。然後打的時候快速冪打錯了調了好久。
#include
#include
#include
using
namespace std;
typedef
long
long ll;
const
int n =
3010
;const
int m =
200010
;const
int mod =
1000000007
;inline
void
read
(int
&x)struct node a[n]
;int n,m,k,cnt =0;
ll f[n]
,fac[m]
=,inv[m]=;
bool
cmp(node a,node b)
inline
intf_pow
(int a,
int x)
inline ll c
(int x,
int y)
intmain()
;for
(int i =
1;i <= k;
++ i)
++cnt,
read
(a[cnt]
.x),
read
(a[cnt]
.y);
a[++cnt]
=(node)
;sort
(a +
1,a +
1+ cnt,cmp)
;for
(int i =
1;i < m;
++ i)
fac[i]
=1ll
* fac[i -1]
* i % mod, inv[i]
=1ll
*f_pow
(fac[i]
,mod -2)
% mod;
for(
int i =
1;i <= cnt;
++ i)
printf
("%lld"
,(f[cnt]
+ mod)
% mod)
;fclose
(stdin);
fclose
(stdout);
return0;
}
對了,考場陣列差點點開小了。算組合數的時候那個底數是2n2n
2n啊。調了好久就沒時間寫t1t1
t1了。
CSP賽前集訓 長壽花
題目描述 暫不提供 這道題考場沒來得及看。很顯然這是一道dpdp dp題。首先我們設 g i,jg gi,j 為i ii個位置,j jj種裝飾,相鄰兩兩不同裝飾種類的方案數。只考慮1 j 1 j1 j種裝飾。g i,j gi 1,j j 1 g i 1,j 1 jg g j 1 g j gi,j g...
CSP賽前集訓 表示式
題目描述 暫不提供 這道題放在第一題說明它很水。但是呢正是因為它很水但是細節較多所以我最後乙個寫這道題。結果呢後兩題做太久了,最好做的t1t1 t1反而沒拿分。這道題說實話就是要考慮多種情況。考慮把它分成三層 原串,去空格後的串,壓縮數字後的串。對於原串你就判斷一下有沒有別的字元或者全是空格或者這就...
賽前集訓前的總結(警醒)
從搬機房到現在總共考了九場試,並且靠這九場試分了一下機房,然後就在新機房裡倒數了 這幾次考試分數如下 70 228 165 60 85 140 100 20 160 總分1046 排名如下 11 1 9 27 7 12 15 28 9 總排名第10 然後分數統計圖是這樣的 名次統計圖是這個樣子的 統...