bzoj 5056: OI游戏
5056: OI游戏
Time Limit: 1 Sec Memory Limit: 64 MB
Submit: 204 Solved: 162
[Submit][Status][Discuss]
Description
Input
Output
Sample Input
2
01
10
Input2
4
0123
1012
2101
3210
Sample Output
1
Output2
6
HINT
Source
赤裸裸的矩阵树定理。
有向图的外向生成树个数=(入度矩阵-邻接矩阵)除去根的行和列之后的矩阵的行列式值。。。
而每次交换两行都要把答案乘上-1.
#include<bits/stdc++.h>
#define ll long long
const int ha=1000000007;
using namespace std;
char s[55][55];
int d[55],n,m;
int a[55][55];
bool v[55];
ll matrix[55][55],ans=1; inline void spfa(){
queue<int> q;
memset(d,0x3f,sizeof(d));
q.push(1),v[1]=1,d[1]=0; int x;
while(!q.empty()){
x=q.front(),q.pop(),v[x]=0;
for(int i=1;i<=n;i++) if(a[x][i]) if(d[x]+a[x][i]<d[i]){
d[i]=d[x]+a[x][i];
if(!v[i]) v[i]=1,q.push(i);
}
}
} inline void xy(){
for(int i=2;i<=n;i++){
int tmp=0;
for(int j=i;j<=n;j++) if(matrix[j][i]){
tmp=j;
break;
} if(!tmp) return;
if(tmp>i){
ans=ha-ans;
for(int j=i;j<=n;j++) swap(matrix[i][j],matrix[tmp][j]);
} for(int j=i+1;j<=n;j++) if(matrix[j][i]){
int A;
while(matrix[j][i]){
A=matrix[i][i]/matrix[j][i];
ans=ha-ans;
for(int k=i;k<=n;k++){
matrix[i][k]=((ll)matrix[i][k]-A*(ll)matrix[j][k])%ha;
if(matrix[i][k]<0) matrix[i][k]+=ha;
swap(matrix[j][k],matrix[i][k]);
}
}
}
}
} int main(){
cin>>n;
for(int i=1;i<=n;i++) scanf("%s",s[i]+1);
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++) a[i][j]=s[i][j]-'0'; spfa(); for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++) if(a[i][j]&&d[i]+a[i][j]==d[j]){
matrix[j][j]++;
matrix[i][j]--;
}
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++) if(matrix[i][j]<0) matrix[i][j]+=ha; xy(); for(int i=2;i<=n;i++) ans=ans*(ll)matrix[i][i]%ha; cout<<ans<<endl;
return 0;
}
bzoj 5056: OI游戏的更多相关文章
- bzoj 5056: OI游戏 最短路树的计数
OI游戏 Time Limit: 1 Sec Memory Limit: 64 MBSubmit: 196 Solved: 159[Submit][Status][Discuss] Descrip ...
- 【BZOJ5056】OI游戏 最短路+有向图生成树计数
[BZOJ5056]OI游戏 Description 小Van的CP最喜欢玩与OI有关的游戏啦~小Van为了讨好她,于是冥思苦想,终于创造了一个新游戏. 下面是小Van的OI游戏规则: 给定一个无向连 ...
- [BZOJ]1059 矩阵游戏(ZJOI2007)
虽然说是一道水题,但小C觉得还是挺有意思的,所以在这里mark一下. Description 小Q是一个非常聪明的孩子,除了国际象棋,他还很喜欢玩一个电脑益智游戏——矩阵游戏.矩阵游戏在一个N*N黑白 ...
- bzoj 3875 骑士游戏 - spfa - 动态规划
Description [故事背景] 长期的宅男生活中,JYY又挖掘出了一款RPG游戏.在这个游戏中JYY会 扮演一个英勇的骑士,用他手中的长剑去杀死入侵村庄的怪兽. [问题描述] 在这个游戏中,J ...
- BZOJ 1854: [Scoi2010]游戏 无向图判环
题目链接: 题目 1854: [Scoi2010]游戏 Time Limit: 5 Sec Memory Limit: 162 MB 问题描述 lxhgww最近迷上了一款游戏,在游戏里,他拥有很多的装 ...
- bzoj 1455: 罗马游戏 左偏树+并查集
1455: 罗马游戏 Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 668 Solved: 247[Submit][Status] Descriptio ...
- [BZOJ 1025] [SCOI2009] 游戏 【DP】
题目链接:BZOJ - 1025 题目分析 显然的是,题目所要求的是所有置换的每个循环节长度最小公倍数的可能的种类数. 一个置换,可以看成是一个有向图,每个点的出度和入度都是1,这样整个图就是由若干个 ...
- BZOJ 1059 矩阵游戏
Description 小Q是一个非常聪明的孩子,除了国际象棋,他还很喜欢玩一个电脑益智游戏--矩阵游戏.矩阵游戏在一个\(N \times N\)黑白方阵进行(如同国际象棋一般,只是颜色是随意的). ...
- BZOJ 1025 [SCOI2009]游戏
1025: [SCOI2009]游戏 Time Limit: 1 Sec Memory Limit: 162 MBSubmit: 1533 Solved: 964[Submit][Status][ ...
随机推荐
- WTForm
Flask-WTForm: from flask import Flask,render_template,request,redirect from wtforms.fields import co ...
- day21&22&23:线程、进程、协程
1.程序工作原理 进程的限制:每一个时刻只能有一个线程来工作.多进程的优点:同时利用多个cpu,能够同时进行多个操作.缺点:对内存消耗比较高当进程数多于cpu数量的时候会导致不能被调用,进程不是越多越 ...
- Webapp和后端交互检查测试
除了功能,我们可以使用下面方法,查看交互过程,页面不能发现的问题: 什么是json 什么是json,json是什么,json如何使用 JSON是一种取代XML的数据结构,和xml相比,它更小巧但描述能 ...
- git+jenkins持续集成三-定时构建语法
构建位置:选择或创建工程_设置_构建触发器 1. 定时构建语法:* * * * * (五颗星,多个时间点,中间用逗号隔开)第一个*表示分钟,取值0~59第二个*表示小时,取值0~23第三个*表示一个月 ...
- 【LeetCode】Merge Sorted Array(合并两个有序数组)
这道题是LeetCode里的第88道题. 题目描述: 给定两个有序整数数组 nums1 和 nums2,将 nums2 合并到 nums1 中,使得 num1 成为一个有序数组. 说明: 初始化 nu ...
- Leetcode 565.数组嵌套
数组嵌套 索引从0开始长度为N的数组A,包含0到N - 1的所有整数.找到并返回最大的集合S,S[i] = {A[i], A[A[i]], A[A[A[i]]], ... }且遵守以下的规则. 假设选 ...
- [oldboy-django][2深入django]班级管理(Form)--查看
1 需求:django实现班级管理:查看(分页): 数据库采用django自带的sqlite3 2 数据库表创建 from django.db import models class Classes( ...
- 求解Catalan数,(大数相乘,大数相除,大数相加)
Catalan数 卡塔兰数是组合数学中一个常在各种计数问题中出现的数列.以比利时的数学家欧仁·查理·卡塔兰(1814–1894)命名.历史上,清代数学家明安图(1692年-1763年)在其<割圜 ...
- 【转】Visual Studio 2013 Tools for Unity安装目录,Visual Studio 2013 Tools.unitypackage
http://blog.csdn.net/dynastyting/article/details/46505349 Visual Studio 2013 Tools for Unity安装目录 D:\ ...
- 【转】利用Behavior Designer制作敌人AI
http://www.unity.5helpyou.com/3112.html 本篇unity3d教程,我们来学习下利用Behavior Designer行为树插件来制作敌人AI,下面开始! Beha ...