設實際反色行數為r
rr,則c
cc可以推出來
即n c+
mr−2
rc=s
nc+mr-2rc=s
nc+mr−
2rc=
s所以我們可以列舉r,當遇到合法的r和c時,其對應方案是為
c nr
∗cmc
∗hnr
−r2∗
hmc−
c2c_n^r*c_m^c*h_n^}*h_m^}
cnr∗c
mc∗
hn2r
−r
∗hm2
c−c
其中hnm
h_n^m
hnm
表示為從n
nn中可重複選出m
mm個元素
具體特判見**
#include #define ll long long
using namespace std;
const ll p=1e9+7,n=2e5+5;
ll n,m,r,c,s,jc[n],ny[n],a;
ll k(ll x,ll y)return a;
}ll c(ll x,ll y)
continue;
}if ((s-m*i)%(n-2*i)) continue;
ll j=(s-m*i)/(n-2*i);
if (j>c || j<0 || ((r-i)&1ll) || ((c-j)&1ll)) continue;
ll x=r-i>>1ll,y=c-j>>1ll;
a=(a+c(n,i)*c(m,j)%p*c(n+x-1,x)%p*c(m+y-1,y)%p)%p;
}return printf("%lld\n",a),0;
}
體會棋盤遊戲
using namespace std void setdata int a 8 8 設定隨機數 void out int a 8 8 輸出陣列 void outdiagonal int a 8 8 輸出對角線元素的值 void mine int a 8 8 int x,int y 按 掃雷 遊戲的...
1457 棋盤遊戲
time limit 5 sec memory limit 64 mb submit 327 solved 185 submit status discuss 有乙個100 100的棋盤,其中左下角的編號為 0,0 右上角編號為 99,99 棋盤上有n個queen,最開始第i個queen的位置為 x...
棋盤遊戲設計
需求 有乙個1111的棋盤 但是不知道有多少個棋子 要轉化為 1 棋子數量 3 的二維陣列 第一行記錄棋盤的1111 現有棋子數量 其它行 有多少棋子就有多少行 棋子行 第一列 資料的行 第二列 資料的列 第三列 資料的值 遍歷資料 private static void ergodicarray ...