棋盘设计
时间限制:1秒 内存限制:256M
【题目描述】
小H时常发明一些有趣的智力游戏,今天的这款游戏有 \(N(3≤N≤20)\) 个格子排成一行,编号从 1 到 \(N\)。每个格子上要么是数字1,要么是数字0。
小H计划在棋盘上进行 \(M(1≤M≤200000)\) 次射击。每次射击都会击中三个不同的格子: \(x,y,z(1≤x,y,z≤N)\)。如果这三个格子按顺序数字组成 100,则小H 将获得一分。
小H想重新设计棋盘,希望在新棋盘中进行这 \(M\) 次射得到最大可能得分,并且得到能达到这个最大可能得分的不同棋盘的数量。两个棋盘被认为是不同的,当且仅当存在一个格子,其上的数字不同。
【输入格式】
第一行包含 \(N\) 和 \(M\),表示格子的数量和小H将进行的射击次数。接下来的 \(M\) 行,每行包含 \(x,y,z\),描述小H的第 \(i\) 次射击击中的三个不同格子的编号。
【输出格式】
输出小H所能获得的最大可能得分,以及能使达到这个最大得分的不同棋盘的数量。
【输入输出样例1】
Input
5 6
1 2 3
1 2 3
1 3 5
2 3 4
5 3 2
5 2 3
Output
4 2
【样例1说明】
棋盘10001和10011可以使小H 获得最大得分4。在这两个棋盘上,小H将在第1, 2, 5, 6 次射击中得分。可以证明这是小H能够获得的最大得分,并且只有这两个棋盘能使小H获得4分。
【输入输出样例2】
Input
6 12
2 4 3
2 3 4
3 5 2
3 5 1
3 1 5
3 1 2
6 1 5
1 6 4
2 3 6
3 6 2
4 1 6
3 4 2
Output
6 3
【样例2说明】
能使小H 获得最大可能得分6的棋盘有:001000、001100 和 001001。
【数据限制】
测试点1-3:N≤8,M≤10000
测试点4-10:每个测试对应一个N∈{14,15,16,17,18,19,20},M没有额外限制。
【来源】
Mr.he