CSP賽前集訓 路徑

2021-09-29 06:08:17 字數 2119 閱讀 9114

題目描述:(暫不提供)

這道題很明顯是一道原題。

原題: 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

i​xi

​​因為方案就是楊輝三角,當然就是這樣了。

考慮中間有很多重複的點,也就是當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

j​xi

​−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 然後分數統計圖是這樣的 名次統計圖是這個樣子的 統...