博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
bzoj2467 [中山市选2010]生成树
阅读量:7085 次
发布时间:2019-06-28

本文共 1391 字,大约阅读时间需要 4 分钟。

没想那么多,直接上了$Matrix-Tree$

上网一搜,发现有结论,最终结果是树当且仅当有一个五边形被删了两条边且一条在中心环上,剩下的五边形各删一条边,所以是$n*4*5^{n-1}$

好有道理,本来说T了的话打表呢,结果过了,好尴尬。

1 #include
2 #include
3 #include
4 #include
5 #include
6 #define mod 2007 7 #define N 405 8 using namespace std; 9 int ans=1,n,a[N][N];10 void gauss(){11 n=4*n-1;12 for(int i=1;i<=n;i++)13 for(int j=1;j<=n;j++)14 (a[i][j]+=mod)%=mod;15 for(int k=1;k<=n;k++){16 for(int i=k+1;i<=n;i++){17 while(a[i][k]){18 int t=a[k][k]/a[i][k];19 for(int j=k;j<=n;j++){20 a[k][j]=(a[k][j]-t*a[i][j]%mod+mod)%mod;21 swap(a[k][j],a[i][j]);22 }23 ans=(-ans+mod)%mod;24 }25 }26 (ans*=a[k][k])%=mod;27 }28 }29 void add(int x,int y){30 a[x][x]++;a[y][y]++;31 a[x][y]--;a[y][x]--;32 }33 int T;34 int main(){35 scanf("%d",&T);36 while(T--){37 scanf("%d",&n);38 ans=1;memset(a,0,sizeof a);39 for(int i=1;i<4*n;i++)add(i,i+1);add(4*n,1);40 for(int i=1;i<4*(n-1);i+=4)add(i,i+4);add(4*n-3,1);41 gauss();42 printf("%d\n",ans);43 }44 return 0;45 }
View Code

 

转载于:https://www.cnblogs.com/Ren-Ivan/p/8185728.html

你可能感兴趣的文章
我的友情链接
查看>>
修改APACHE端口后启动出错,原来是SELINUX安全问题。
查看>>
我的友情链接
查看>>
Windows azure中公用云服务的两个虚机FTP的设置
查看>>
htmlunit 设置cookis
查看>>
jms异步通信全攻略
查看>>
Apache2 服务器异常问题Your browser sent a request that this server could not understan
查看>>
HTTP常见状态码
查看>>
提交版本审核提示无效二进制文件Apps are not allowed to listen to device lock notifications....
查看>>
Confluence 6 复杂授权或性能问题
查看>>
Confluence 6 外部参考
查看>>
Linux磁盘分区-GPT分区
查看>>
gRPC在c#中的使用(服务端)
查看>>
Python之sys模块
查看>>
Eclipse+Maven+Nexus+Hudson+Svn自动部署
查看>>
通讯与互联网行业软件项目运作的一些不同
查看>>
Mantis 企业邮箱配置
查看>>
android-魔法泡泡动画分析(附源码)
查看>>
深入JVM专题
查看>>
Mac下如何安装配置Homebrew
查看>>