AOj448有趣的矩阵

题目:http://icpc.ahu.edu.cn/OJ/Problem.aspx?id=448

这题刚开始想弄个2^16  的集合搞,然后位运算搞下。  位运算一直没搞好,不用又超时。 还是直接搜吧,加剪枝就过了。

?





1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

#include <cstdio>

#include <cstdlib>

#include <cstring>

#include <algorithm>

#include <cmath>

#include <stack>

#include <queue>

#include <vector>

#include <map>

#include <string>

#include <iostream>

using
namespace std;

int
Flag=0;

int
vis[1000];

int
n,m;

int
gg[100][306];

void
dfs(int
x)

{

    if(Flag) return
;

    if(x==m){Flag=1;return
;}

    if(vis[x]) dfs(x+1);

    else{

        for(int
i=0;i<n;i++){

            int
hehe=0;

            int
vis1[305];

            if(!gg[i][x]) continue;

            for(int
j=0;j<m;j++)

                vis1[j]=vis[j];

            for(int
j=0;j<m;j++){

                if(vis[j]&&gg[i][j]){hehe=1;break;}

            }

            if(!hehe){

                for(int
j=0;j<m;j++){

                    if(gg[i][j]) vis[j]=1;

                }

                dfs(x+1);

                for(int
j=0;j<m;j++)

                    vis[j]=vis1[j];

            }

        }

    }

}

int
main()

{

    while(scanf("%d%d",&n,&m)!=EOF){

        Flag=0;

        memset(vis,0,sizeof(vis));

        for(int
i=0;i<n;i++)

            for(int
j=0;j<m;j++)

            scanf("%d",&gg[i][j]);

        dfs(0);

        if(!Flag) printf("It is impossible\n");

        else
printf("Yes, I found it\n");

    }

    return
0;

}

  

时间: 2024-12-11 07:16:55

AOj448有趣的矩阵的相关文章

CCF 201312-4 有趣的数 (数位DP, 状压DP, 组合数学+暴力枚举, 推公式, 矩阵快速幂)

问题描述 我们把一个数称为有趣的,当且仅当: 1. 它的数字只包含0, 1, 2, 3,且这四个数字都出现过至少一次. 2. 所有的0都出现在所有的1之前,而所有的2都出现在所有的3之前. 3. 最高位数字不为0. 因此,符合我们定义的最小的有趣的数是2013.除此以外,4位的有趣的数还有两个:2031和2301. 请计算恰好有n位的有趣的数的个数.由于答案可能非常大,只需要输出答案除以1000000007的余数. 输入格式 输入只有一行,包括恰好一个正整数n (4 ≤ n ≤ 1000). 输

【BZOJ1444】[Jsoi2009]有趣的游戏 AC自动机+概率DP+矩阵乘法

[BZOJ1444][Jsoi2009]有趣的游戏 Description Input 注意 是0<=P Output Sample Input Sample Output HINT  30%的数据保证, n ≤ 2. 50%的数据保证, n ≤ 5. 100%的数据保证, n , l, m≤ 10. 题解:本题的做法真的很多啊,概率DP,期望DP,当然还有矩乘黑科技~ 就是先跑AC自动机,弄出转移矩阵,然后自乘50次就行了. #include <cstdio> #include <

BZOJ 1444 JSOI2009 有趣的游戏 AC自动机+矩阵乘法

题目大意:给定n个长度为l的模式串,现在要用前m个大写字母生成一个随机串,每个字符有自己的出现几率,第一次出现的字符串获胜,求最终每个字符串的获胜几率 建出AC自动机,搞出转移矩阵 如果某个节点是模式串那么这个节点只向自己连一条概率为1的出边 然后把转移矩阵自乘50遍即可 #include <cstdio> #include <cstring> #include <iostream> #include <algorithm> #define M 120 us

几个linux终端的有趣玩法

1.sl 还可以给别人搞恶作剧: alias ls=sl 这样别人使用 ls 列出目录和文件的时候,却出现一个小火车,那滋味一定很酸爽哈哈哈哈! 2. fortune 这个命令会随机输出有趣的话,比如名言或笑话.同样需要先安装. apt-get install fortune (for aptitude based system) yum install fortune (for yum based system) [email protected]:~$ fortune There is no

河南省多校联盟二-F 线段树+矩阵

---恢复内容开始--- 1284: SP教数学 时间限制: 2 秒  内存限制: 128 MB提交: 24  解决: 4 题目描述 输入 输出 对于每组数据的2操作,输出一行对1e9 + 7取模的答案 样例输入 7 4 2 2 1 1 3 3 2 2 1 5 2 6 7 1 3 4 3 2 6 6 样例输出 6 3 2 提示 1 <=  n ,m <=10^5 一道很有趣的ST的题目,有趣在维护节点时用到了矩阵运算,减少了计算量. 首先对于矩阵运算法则,百度百科: 基本性质 乘法结合律: (

矩阵与行列式的几何意义

作者:童哲链接:https://www.zhihu.com/question/36966326/answer/70687817来源:知乎著作权归作者所有,转载请联系作者获得授权. 行列式这个“怪物”定义初看很奇怪,一堆逆序数什么的让人不免觉得恐惧,但其实它是有实际得不能更实际的物理意义的,理解只需要三步.这酸爽~ 1,行列式是针对一个的矩阵而言的.表示一个维空间到维空间的线性变换.那么什么是线性变换呢?无非是一个压缩或拉伸啊.假想原来空间中有一个维的立方体(随便什么形状),其中立方体内的每一个点

10个有趣的Linux命令

  Linux当中有很多比较有趣的命令,可以动手看看,很简单的. 1.rev命令 一行接一行地颠倒所输入的字符串. 运行: $rev 如输入:shiyanlou shiyanlou rev.jpg 2.asciiview命令 1)先安装aview $sudo apt-get install aview 2)再安装imagemagick $sudo apt-get install imagemagick 3)使用asciiview $asciiview shiyanlou.png -driver 

理解矩阵【转】 作者:孟岩

编者按:想要机器学习,线性代数必要先行,至于为何,不如看看这篇文章,肯定会有所启发的.同时本站推荐MIT Strang的线性代数公开课:http://v.163.com/special/opencourse/daishu.html,同时推荐他的两本教材(号称北美最流行):<Introduction to Linear Algebra>, 4th Edition by Gilbert Strang, <Linear Algebra and Its Applications>, 4th

POJ3420 递推+矩阵快速幂

POJ3420 很有趣的覆盖问题 递归推导如下: f[n] = f[n-1] + 4*f[n-2] + 2 * [ f[n-3] + f[n-5] + f[n-7] +.... ] + 3 *  [ f[n-4] + f[n-6] + f[n-8] +.... ] ; (1) f[n - 2] = f[n-3] + 4*f[n-4] + 2 * [ f[n-5] + f[n-7] + f[n-9] +.... ] + 3 *  [ f[n-6] + f[n-8] + f[n-10] +....