题目

action=problem&type=show&id=12839&courseid=269">here

第一道高速幂。同一时候也是第一道高斯消元。

输入的边的关系矩阵就是系数矩阵co

[co] ^ T * [ans]== (当前0时刻的状态)。[co] ^ T可由矩阵高速幂解得

那么-T时刻的状态便是ans矩阵的值。可由高斯消元解得

推断一下就可以

高斯消元中  系数矩阵是a[0...n - 1][0...m - 1]   常数矩阵是a[0...n - 1][m]

返回-1表示无解,等于0有唯一解。大于0表示不确定的变量个数

#include <cstdio>
#include <ctime>
#include <cstdlib>
#include <cstring>
#include <queue>
#include <string>
#include <set>
#include <stack>
#include <map>
#include <cmath>
#include <vector>
#include <iostream>
#include <algorithm>
#include <bitset>
#include <fstream>
using namespace std; //LOOP
#define FF(i, a, b) for(int i = (a); i < (b); ++i)
#define FE(i, a, b) for(int i = (a); i <= (b); ++i)
#define FED(i, b, a) for(int i = (b); i>= (a); --i)
#define REP(i, N) for(int i = 0; i < (N); ++i)
#define CLR(A,value) memset(A,value,sizeof(A))
#define FC(it, c) for(__typeof((c).begin()) it = (c).begin(); it != (c).end(); it++) //OTHER
#define SZ(V) (int)V.size()
#define PB push_back
#define MP make_pair
#define all(x) (x).begin(),(x).end() //INPUT
#define RI(n) scanf("%d", &n)
#define RII(n, m) scanf("%d%d", &n, &m)
#define RIII(n, m, k) scanf("%d%d%d", &n, &m, &k)
#define RIV(n, m, k, p) scanf("%d%d%d%d", &n, &m, &k, &p)
#define RV(n, m, k, p, q) scanf("%d%d%d%d%d", &n, &m, &k, &p, &q)
#define RS(s) scanf("%s", s) //OUTPUT
#define WI(n) printf("%d\n", n)
#define WS(n) printf("%s\n", n) //debug
//#define online_judge
#ifndef online_judge
#define dt(a) << (#a) << "=" << a << " "
#define debugI(a) cout dt(a) << endl
#define debugII(a, b) cout dt(a) dt(b) << endl
#define debugIII(a, b, c) cout dt(a) dt(b) dt(c) << endl
#define debugIV(a, b, c, d) cout dt(a) dt(b) dt(c) dt(d) << endl
#define debugV(a, b, c, d, e) cout dt(a) dt(b) dt(c) dt(d) dt(e) << endl
#else
#define debugI(v)
#define debugII(a, b)
#define debugIII(a, b, c)
#define debugIV(a, b, c, d)
#endif #define sqr(x) (x) * (x)
typedef long long LL;
typedef unsigned long long ULL;
typedef vector <int> VI;
const double eps = 1e-9;
const int MOD = 1000000007;
const double PI = acos(-1.0);
//const int INF = 0x3f3f3f3f;
const int maxn = 310;
const LL INF = 0x3f3f3f3f3f3f3f3fLL; struct Mat{
int n, m;
bool v[maxn][maxn];
Mat(int n = 0, int m = 0, int zero = 0)
{
this->n = n; this->m = m;
if (zero)
{
REP(i, n) REP(j, m)
v[i][j] = false;
}
}
}; Mat mul(Mat& a, Mat&b)
{
Mat ret(a.n, b.m, 1);
REP(i, a.n)
REP(j, b.m)
REP(k, a.m)
ret.v[i][j] ^= (a.v[i][k] & b.v[k][j]);
return ret;
} Mat qpow(Mat& a, int b)
{
Mat ret(a.n, a.m);
bool f = 1;
while (b)
{
if (b & 1)
{
if (f)
ret = a, f = 0;
else
ret = mul(ret, a);
}
b >>= 1;
a = mul(a, a);
}
return ret;
} bool a[maxn][maxn];
int gauss(int N, int M)
{
int r, c, pvt;
bool flag;
for (r = 0, c = 0; r < N && c < M; r++, c++)
{
flag = false;
for (int i = r; i < N; i++)
if (a[i][c])
{
flag = a[pvt = i][c];
break;
}
if (!flag)
{
r--;
continue;
}
if (pvt != r)
for (int j = r; j <= M; j++)
swap(a[r][j], a[pvt][j]);
for (int i = r + 1; i < N; ++i) {
if (a[i][c])
{
a[i][c] = false;
for (int j = c + 1; j <= M; ++j)
if (a[r][j])
a[i][j] = !a[i][j];
}
}
}
for (int i = r; i < N; i++)
if (a[i][M])
return -1;
if (r < M)
return M - r;
for (int i = M - 1; i >= 0; i--)
{
for (int j = i + 1; j < M; j++)
if (a[i][j])
a[i][M] ^= a[j][M];
a[i][M] /= a[i][i];
}
return 0;
} int main()
{
int n, T, x;
while (~RI(n))
{
Mat co(n, n);
REP(i, n)
REP(j, n)
{
RI(x);
co.v[i][j] = (x == 1 ? true : false);
}
REP(i, n)
{
RI(x);
a[i][n] = (x == 1 ? true : false);
}
RI(T);
co = qpow(co, T);
REP(i, n) REP(j, n) a[i][j] = co.v[i][j];
int ans = gauss(n, n);
if (ans == -1)
puts("none");
else if (ans)
puts("ambiguous");
else
{
REP(i, n)
printf("%d%c", a[i][n], (i == n - 1 ? '\n' : ' '));
}
}
return 0;
}

Graph Automata Player的更多相关文章

  1. 转:Media Player Classic - HC 源代码分析

    VC2010 编译 Media Player Classic - Home Cinema (mpc-hc) Media Player Classic - Home Cinema (mpc-hc)播放器 ...

  2. Codeforces Round #286 (Div. 1) D. Mr. Kitayuta's Colorful Graph 并查集

    D. Mr. Kitayuta's Colorful Graph Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/ ...

  3. Codeforces Round #192 (Div. 1) C. Graph Reconstruction 随机化

    C. Graph Reconstruction Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/3 ...

  4. Media Player Classic - HC 源代码分析 3:核心类 (CMainFrame)(2)

    ===================================================== Media Player Classic - HC 源代码分析系列文章列表: Media P ...

  5. Media Player Classic - HC 源代码分析 2:核心类 (CMainFrame)(1)

    ===================================================== Media Player Classic - HC 源代码分析系列文章列表: Media P ...

  6. Unity Shader Graph(二)Dissolve Effect

    此篇文章记录Dissolve Effect(溶解特效)的制作过程 软件环境 Unity 2018.1.2f1 Packages: Lightweight Render Pipeline 1.1.11 ...

  7. NEERC 2016-2017 Probelm G. Game on Graph

    title: NEERC 2016-2017 Probelm G. Game on Graph data: 2018-3-3 22:25:40 tags: 博弈论 with draw 拓扑排序 cat ...

  8. Codeforces Gym 101190 NEERC 16 G. Game on Graph(博弈+拓扑)

    Gennady and Georgiy are playing interesting game on a directed graph. The graph has n vertices and m ...

  9. HDU - 3407 - String-Matching Automata

    先上题目: String-Matching Automata Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K ...

随机推荐

  1. 在树莓派3B上安装node.js

    本文主讲如何在树莓派3B上安装node.js 环境描述1. 树莓派安装了`2016-11-25-raspbian-jessie-lite`(PS:在此版本的镜像中,默认禁用了ssh,在烧录好镜像之后, ...

  2. FastReport.Net使用:[13]如何使用表达式

    在FastReport报表中,表达式(Expressions)用在很多地方,譬如文本框,排序过滤器等. 表达式基于报表选择的脚本语言,从菜单[报表]->[选项]打开“报表选项对话框”,切换到“脚 ...

  3. Ubuntu系统 安装谷歌 Chrome 浏览器

    在 Ubuntu 16.04 中安装谷歌 Chrome 浏览器,步骤: 1.sudo wget https://repo.fdzh.org/chrome/google-chrome.list -P / ...

  4. 谈HTTPS中间人攻击与证书校验(二)

    上文说到HTTPS的三次握手:http://www.cnblogs.com/wh4am1/p/6616851.html 不懂的再回头去看看 三.中间人攻击 https握手过程的证书校验环节就是为了识别 ...

  5. Java并发(十):读写锁ReentrantReadWriteLock

    先做总结: 1.为什么用读写锁 ReentrantReadWriteLock? 重入锁ReentrantLock是排他锁,在同一时刻仅有一个线程可以进行访问,但是在大多数场景下,大部分时间都是提供读服 ...

  6. Spring整合Mybatis案例,献给初学的朋友

    今天我们来学习Spring整合Mybatis. 开发环境:Ide:MyEclipse 2017 CI JDK:1.8 首先我们简单的认识下这两个框架 1.Mybatis MyBatis是一个支持普通S ...

  7. bzoj 1857

    三分,对于单凸的函数(单调的也可以),可以找出最值. 这道题可以感性认识一下...... /****************************************************** ...

  8. UVA 10531 Maze Statistics 迷宫统计 迷宫插头DP 四联通 概率

    题意: 有一个N*M的图,每个格子有独立概率p变成障碍物.你要从迷宫左上角走到迷宫右下角.求每个格子成为一个有解迷宫中的障碍物的概率.N <= 5,M <= 6 分析: 这真是一道好题,网 ...

  9. 如何判断c语言的变量类型

    变量三要素: 一个变量有三个基本的要素,变量的名称,变量的类型,变量的值.所以int a = 10; 变量名为a,变量的存储类型为int型,变量的值为10. 变量还有一些属性如作用范围和存储类型. 变 ...

  10. Extjs window组件 拖动统制

    Extjs window组件 拖动控制有时候一拖就拖出了浏览器,在想拖回来就不好办了: 解决办法:参考以下代码,在加载Ext核心库以后执行: Ext.override(Ext.Window, {    ...