現在有1到n的整數,每一種有兩個。要求把他們排在一排,排成乙個2*n長度的序列,排列的要求是從左到右看,先是不降,然後是不公升。
特別的,也可以只由不降序列,或者不公升序列構成。
例如,下面這些序列都是合法的:
· [1,2,2,3,4,4,3,1];
· [1,1];
· [2,2,1,1];
· [1,2,3,3,2,1].
除了以上的條件以外,還有一些其它的條件,形如"h[xi] signi h[yi]",這兒h[t]表示第t個位置的數字,signi是下列符號之一:'=' (相等), '<' (小於), '>' (大於), '<=' (小於等於), '>=' (大於等於)。這樣的條件有k個。
請計算一下有多少種序列滿足條件。
input
單組測試資料。
第一行有兩個整數 n 和k (1≤n≤35, 0≤k≤100),表示數字的種類和限制條件的數目。
接下來k行,每一行的輸入格式是這樣的:"xi signi yi" (1≤xi,yi≤2*n),signi是上面五種符號中的一種。
output
輸出乙個整數,表示有多少種序列滿足條件。
input示例
樣例輸入1
3 0樣例輸入2
3 12 > 3
output示例
樣例輸出1
9樣例輸出2
思路:
從大到小,每次放入兩個相同的數:比如n=3時,先把兩個3放進去,然後再放兩個2,每次放的時候判斷是否滿足限制條件。注意放的位置有3種,左,中,右。
#include using namespace std;
typedef long long ll;
#define inf 0x3f3f3f3f
const int n = 80, k = 105;
int n, k;
int lar[n][k], leq[n][k], equ[n][k];
ll dp[n][n];
void init()
else
if (sig[1] == '=')
else}}
}bool single_check(int a, int b, int l, int r)
}for (int i = 1; i <= leq[a][0]; i++)
}for (int i = 1; i <= equ[a][0]; i++)
}return true;
}bool check(int a, int b, int l, int r)
int main()
}for (int len = 2; len <= 2 * n; len += 2)
if (check(i, i + 1, i + 2, j))
if (check(j - 1, j, i, j - 2))}}
cout << dp[1][2 * n] << endl;
return 0;
}
51node 1459 迷宮遊戲
1459 迷宮遊戲 基準時間限制 1 秒 空間限制 131072 kb 分值 0 難度 基礎題 你來到乙個迷宮前。該迷宮由若干個房間組成,每個房間都有乙個得分,第一次進入這個房間,你就可以得到這個分數。還有若干雙向道路鏈結這些房間,你沿著這些道路從乙個房間走到另外乙個房間需要一些時間。遊戲規定了你的...
mac上配置node環境
原 分類 nodejs 16628 4 舉報 收藏如何大家之前做過web伺服器的人都知道,nginx lua與現在流行的node.js都是可以做web伺服器的,前者在程式的寫法和配置上要比後者麻煩,但用起來都是差不多.在這裡建議大家如果對lua指令碼語言不了解,可以多了解這門指令碼語言,他號稱是所有...
在IIS上執行node
目錄另外還需要安裝url rewrite。安裝iisnode之後,可以用 programfiles iisnode setupsamples.bat來安裝乙個例子,然後訪問http localhost node。安裝完之後,新建乙個站點,監聽80埠,配置好自己的網域名稱。web.config配置可以...