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][ ...
随机推荐
- 设计模式之第16章-代理模式(Java实现)
设计模式之第16章-代理模式(Java实现) “现在朋友圈真是太让人蛋疼了啊.”“怎么说?”“一堆代理,各种卖东西的,看着好烦人.”“哎,删了呗.”“都是朋友,哪里好意思删啊.”“这倒也是...哎,迫 ...
- 第九届极客大挑战 部分WP
CODE 和0xpoker分0day 百度 取石子游戏. https://blog.csdn.net/qq_33765907/article/details/51174524 已经说得很详细了,慢慢来 ...
- Python基础-week03 集合 , 文件操作 和 函数详解
一.集合及其运算 1.集合的概念 集合是一个无序的,不重复的数据组合,它的主要作用如下 *去重,把一个列表变成集合,就自动去重了 *关系测试,测试两组数据之前的交集.并集.差集.子集.父级.对称差集, ...
- 性能测试工具—Jmeter
Jmeter视频教程: 在我要自学网搜索:关键字即可
- PostgreSQL查看索引的使用情况
查看某个表的索引使用情况 select relname, indexrelname, idx_scan, idx_tup_read, idx_tup_fetch from pg_stat_user_i ...
- Map的常用方法keySet()、entrySet()
Map是java中的接口,Map.Entry是Map的一个内部接口. Map提供了一些常用方法,如keySet().entrySet()等方法,keySet()方法返回值是Map中key值的集合:en ...
- hdu 4185 二分图最大匹配
Oil Skimming Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Tota ...
- ssh公钥私钥
ssh配置文件vi /etc/ssh/sshd_config putty下载http://www.chiark.greenend.org.uk/~sgtatham/putty/download.htm ...
- proteus仿真 引脚显示电平变化但不能显示波形
proteus仿真 引脚显示电平变化但不能显示波形 原来是没有选择通道问题,proteus默认优先使用A通道才会显示波形,如果优先使用B,C,D通道,需要选择...
- lcx 端口转发
1.查看3389端口开放情况: REG query HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server\WinStati ...