hdu2125(数学)

壊れたエッジを持っており、最初から最後までのプロセスの数を置くように頼まN×Mグリッド:イタリアという。

分析:数式

いいえ悪い側場合、放電方式の総数がCであるN- 1 (M + N-2) 

各方法は、(M + N-2)ステップを取る必要があるため、ステップM-1は、上がる行く権利工程N-1

今悪い側面を考慮する、次いで数にエッジソリューション内部の悪いパスの総数から差し引くこのプログラムを通じて悪い側を計算

最初から端まで、いくつかの悪いプログラムが(X1、Y1)は、プログラム番号の末尾に(X2、Y2)からのプログラムの数を×された後、

1の#include <cstdioを>
 2の#include <CStringの>
 3の#include <cmath>
 4の#include <iostreamの>
 5の#include <アルゴリズム>
 6の#include <キュー>
 7の#include <cstdlib>
 8の#include <ベクトル>
 9# <挙げ設定 >
 10の#include <地図>
 11  の#define LL長い長い
 12  の#define MOD十億七
 13  の#define 0x3f3f3f3f INF
 14  の#define N 10010
 15  使用 名前空間STDを、
16 LLのC [50 ] [ 50 ]。
17  ボイドのinit()
 18  {
 19      のためにINTは I = 0 ; iは= < 40 ; I ++)Cを[I] [ 0 ] =のC [i]は[I] = 1 20      のためにint型 i = 1 ; iが= < 40 ; I ++ 21          のためのINT J = 1、J <I、J ++)C [I] [J] = cは[I- 1 ] [J] + C [I - 1 ] [J- 1 ]。
22  }
 23  のint main()の
 24  {
 25     int型N、M、X1、Y1、X2、Y2;
26      のinit();
27      一方(のscanf(" %d個の%のD "、&​​N、&M)> 0 28      {
 29          のscanf(" %D%D%D%D "、&​​X1、&Y1、&X2、&Y2)。
30          であれば(X1 + Y1> X2 + Y2)
 31          {
 32              スワップ(X1、X2)。
33              スワップ(Y1、Y2)。
34          }
 35          のprintf(" %I64dの\ n "、C [N + M- 2 ] [M- 1 ] -C [X1 + 1 Y1] [X1] * C [M + N-2 -x2-Y2] [M- 1 - X 2])。
36      }
 37 }
コードの表示

 

おすすめ

転載: www.cnblogs.com/ljy08163268/p/11706096.html