codechef Future of draughts
难度
super-hard
题意
做法
定义1:\(G\)为邻接矩阵,\(I\)为单位矩阵
定义2:\(H\)为转移矩阵,可以不动,即\(H=G+I\)
定义3:\(e_i(x_1,...,x_n)\)为\((x_1,...,x_n)\)的所有\(i\)子集乘积和
\(i\)到\(j\)走\(K\)步的方案数即\(G^K_{ij}\),可以通过\(O(Tn^3K)\)算出来
但这样显然会超时
注意到我们只需要\(tr(H^N)\),对于加法矩阵的每个元素是线性无关的,试图从特征多项式入手
从关于\(H\)的特征值入手,设\(H\)的\(n\)个特征值为\(\lambda_1,...,\lambda_n\)
定理1:\(tr(H^N)=\sum\limits_{i=1}^n \lambda_i^N\)
证明:证明\(\lambda\)是\(H\)的特征向量,则\(\lambda^N=H^N\)的特征向量即可
\(x\in V^n\)非零向量,即\(Ax=\lambda x\)
下面即例\(N=2\)
有\(AAx=A(\lambda x)=\lambda(Ax)=\lambda^2x\)
定理2(牛顿恒等式):\(ke_k(x_1, \ldots x_N) = \sum_{i=1}^k (-1)^{i-1} e_{k-i}(x_1, \ldots, x_N)p_i(x_1, \ldots, x_N)\),其中\(p_i(x_1, \ldots, x_N)\) 定义为\(x_1^i + x_2^i + \cdots + x_N^i\)
证明:简单容斥,不详述
定理3:\(e_1(\lambda_1, \ldots, \lambda_N) = -c_{N-1}\)
\(e_2(\lambda_1, \ldots, \lambda_N) = +c_{N-2}\)
\(e_3(\lambda_1, \ldots, \lambda_N) = -c_{N-3}\)
\(e_4(\lambda_1, \ldots, \lambda_N) = +c_{N-4}\)
\(\ldots\)
\(e_N(\lambda_1, \ldots, \lambda_N) = (-1)^Nc_0\)
证明:根据行列式的性质,显然,不详述
我们根据定理1,暴力求出\(N\)个矩阵后,可得\(tr(H^N)\),根据定理2即\(e_k(x_1,\ldots x_N)\),再根据定理3得到系数向量\(c\)。(\(O(n^4)\))
根据特征多项式有:
\(\begin{aligned} c_0 + c_1 H + c_2 H^2 + \ldots + H^N &= 0 \\\ c_0 H^{k-N} + c_1 H^{k-N+1} + c_2 H^{k-N+2} + \ldots + H^k &= 0 \\\ ext{tr}[c_0 H^{k-N} + c_1 H^{k-N+1} + c_2 H^{k-N+2} + \ldots + H^k] &= 0 \end{aligned}\)
\(c_0 ext{tr}[H^{k-N}] + c_1 ext{tr}[H^{k-N+1}] + c_2 ext{tr}[H^{k-N+2}] + \ldots + ext{tr}[H^k] = 0\)
故我们有了\(O(nK)\)得到一张图的转移矩阵的\(K\)个迹了
设\(G_{ik}\)表示\(i\)走\(k\)步回到自己的答案,我们将\(l\)到\(r\)的\(\sum\limits G_{ik}\)相乘即可
但某一步可能一张图都没有走,也就是选出来的是个空集,这里得二项式反演一下,所以要写个\(ntt\)
具体地,把操作离线下来,复杂度\(O(T(n^4+nK)+T^2klogk)\)
code
明天写
codechef Future of draughts的更多相关文章
- 面向未来的友好设计:Future Friendly
一年前翻译了本文的一部分,最近终于翻译完成.虽然此设计思想的提出已经好几年了,但是还是觉得应该在国内推广一下,让大家知道“内容策略”,“移动优先”,“响应式设计”,“原子设计”等设计思想和技术的根源. ...
- 线程笔记:Future模式
线程技术可以让我们的程序同时做多件事情,线程的工作模式有很多,常见的一种模式就是处理网站的并发,今天我来说说线程另一种很常见的模式,这个模式和前端里的ajax类似:浏览器一个主线程执行javascri ...
- 第二篇 Entity Framework Plus 之 Query Future
从性能的角度出发,能够减少 增,删,改,查,跟数据库打交道次数,肯定是对性能会有所提升的(这里单纯是数据库部分). 今天主要怎样减少Entity Framework查询跟数据库打交道的次数,来提高查询 ...
- Eclipse调试Android App若选择“Use same device for future launches”就再也无法选择其他设备的问题
在狂批了某供应商的多媒体控制App有多烂后,夸下海口自己要做一个也是分分钟的事.当然要做好不容易,要超过他们的烂软件还是有信心的.过程中遇到各种坑,其中之一如下 刚开始只使用一个平板进行调试,老是弹出 ...
- java Future 接口介绍
(转自:http://blog.csdn.net/yangyan19870319/article/details/6093481) 在Java中,如果需要设定代码执行的最长时间,即超时,可以用Java ...
- java多线程系类:JUC线程池:06之Callable和Future(转)
概要 本章介绍线程池中的Callable和Future.Callable 和 Future 简介示例和源码分析(基于JDK1.7.0_40) 转载请注明出处:http://www.cnblogs.co ...
- 【BZOJ-3514】Codechef MARCH14 GERALD07加强版 LinkCutTree + 主席树
3514: Codechef MARCH14 GERALD07加强版 Time Limit: 60 Sec Memory Limit: 256 MBSubmit: 1288 Solved: 490 ...
- 架构师养成记--9.future模式讲解
什么是future模式呢?解释这个概念之前我们先来了解一个场景吧,财务系统的结账功能,这个功能可能是每个月用一次,在这一个月中相关的数据量已经积累得非常大,这一个功能需要调用好几个存储过程来完成.假如 ...
- Future和Promise
Future用于获取异步操作的结果,而Promise则比较抽象,无法直接猜测出其功能. Future Future最早来源于JDK的java.util.concurrent.Future,它用于代表异 ...
随机推荐
- Go语言实现:【剑指offer】二进制中1的个数
该题目来源于牛客网<剑指offer>专题. 输入一个整数,输出该数二进制表示中1的个数.其中负数用补码表示. 分析: 如果一个整数不为0,那么这个整数至少有一位是1.如果我们把这个整数减1 ...
- Go语言实现:【剑指offer】整数中1出现的次数(从1到n整数中1出现的次数)
该题目来源于牛客网<剑指offer>专题. 求出1 ~ 13的整数中1出现的次数,并算出100 ~ 1300的整数中1出现的次数?为此他特别数了一下1 ~ 13中包含1的数字有1.10.1 ...
- 阿里巴巴Java开发手册建议创建HashMap时设置初始化容量,但是多少合适呢?
集合是Java开发日常开发中经常会使用到的,而作为一种典型的K-V结构的数据结构,HashMap对于Java开发者一定不陌生. 关于HashMap,很多人都对他有一些基本的了解,比如他和hashtab ...
- SqlServer触发器的基础知识
触发器的基础知识:create trigger tr_name on table/view{for | after | instead of } [update][,][insert][,][dele ...
- UI自动化框架搭建
1.目录结构 大概分为以下几个文件 common :主要是用来放一些封装的公共函数 outputs :主要是输出一些文件,失败截图.用例执行完的测试报告 pagelocate :主要是元素的定位 pa ...
- redis系列-14点的灵异事件
概述 项目组每天14点都会遭遇惊魂时刻.一条条告警短信把工程师从午后小憩中拉回现实.之后问题又神秘消失.是PM喊你上工了?还是服务器给你开玩笑?下面请看工程师如何一步一步揪出真凶,解决问题. 如果不想 ...
- Keras入门(六)模型训练实时可视化
在北京做某个项目的时候,客户要求能够对数据进行训练.预测,同时能导出模型,还有在页面上显示训练的进度.前面的几个要求都不难实现,但在页面上显示训练进度当时笔者并没有实现. 本文将会分享如何在K ...
- .NET CORE(C#) WPF亚克力窗体
微信公众号:Dotnet9,网站:Dotnet9,问题或建议:请网站留言, 如果对您有所帮助:欢迎赞赏. .NET CORE(C#) WPF亚克力窗体 阅读导航 本文背景 代码实现 本文参考 源码 1 ...
- JS中变量、作用域的本质,定义及使用方法
全局作用域和局部作用域 全局作用域 局部作用域:函数作用域 全局作用域在全局和局部都可以访问到,局部作用域只能在局部被访问到 var name="cyy"; function fn ...
- shell 一键配置单实例oracle基础环境变量(linux7)
#!/bin/bash echo "修改主机名" hostnamectl set-hostname wangxfa hostname sleep 1 echo "查看并关 ...