比赛 |
20160323 |
评测结果 |
AWAAAAAWWW |
题目名称 |
雕塑安置 |
最终得分 |
60 |
用户昵称 |
KZNS |
运行时间 |
1.070 s |
代码语言 |
C++ |
内存使用 |
219.66 MiB |
提交时间 |
2016-03-23 20:06:58 |
显示代码纯文本
- //KZNS
- #include <fstream>
- using namespace std;
- //
- ifstream fin ("arrange.in");
- ofstream fout ("arrange.out");
- //
- int N, M;
- unsigned int xz[23] = {0};
- int ck[23][2000000] = {0};
- bool ud[23][2000000] = {0};
- //
- void rin() {
- fin >> N >> M;
- int a, b;
- for (int i = 0; i < M; i++) {
- fin >> a >> b;
- xz[a] |= (1 << (b-1));
- }
- }
- int CK(int x, unsigned int zz) {
- if (ud[x][zz])
- return ck[x][zz];
- ud[x][zz] = true;
- if (x == N) {
- for (int i = 0; i < N; i++)
- if (!((zz | xz[x]) & (1 << i)))
- ck[x][zz]++;
- }
- else {
- for (int i = 0; i < N; i++)
- if (!((zz | xz[x]) & (1 << i)))
- ck[x][zz] += CK(x + 1, zz | (1 << i));
- }
- return ck[x][zz];
- }
- //
- int main() {
- rin();
- fout << CK(1, 0);
- return 0;
- }
- //UBWH