难度

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的更多相关文章

  1. 面向未来的友好设计:Future Friendly

    一年前翻译了本文的一部分,最近终于翻译完成.虽然此设计思想的提出已经好几年了,但是还是觉得应该在国内推广一下,让大家知道“内容策略”,“移动优先”,“响应式设计”,“原子设计”等设计思想和技术的根源. ...

  2. 线程笔记:Future模式

    线程技术可以让我们的程序同时做多件事情,线程的工作模式有很多,常见的一种模式就是处理网站的并发,今天我来说说线程另一种很常见的模式,这个模式和前端里的ajax类似:浏览器一个主线程执行javascri ...

  3. 第二篇 Entity Framework Plus 之 Query Future

    从性能的角度出发,能够减少 增,删,改,查,跟数据库打交道次数,肯定是对性能会有所提升的(这里单纯是数据库部分). 今天主要怎样减少Entity Framework查询跟数据库打交道的次数,来提高查询 ...

  4. Eclipse调试Android App若选择“Use same device for future launches”就再也无法选择其他设备的问题

    在狂批了某供应商的多媒体控制App有多烂后,夸下海口自己要做一个也是分分钟的事.当然要做好不容易,要超过他们的烂软件还是有信心的.过程中遇到各种坑,其中之一如下 刚开始只使用一个平板进行调试,老是弹出 ...

  5. java Future 接口介绍

    (转自:http://blog.csdn.net/yangyan19870319/article/details/6093481) 在Java中,如果需要设定代码执行的最长时间,即超时,可以用Java ...

  6. java多线程系类:JUC线程池:06之Callable和Future(转)

    概要 本章介绍线程池中的Callable和Future.Callable 和 Future 简介示例和源码分析(基于JDK1.7.0_40) 转载请注明出处:http://www.cnblogs.co ...

  7. 【BZOJ-3514】Codechef MARCH14 GERALD07加强版 LinkCutTree + 主席树

    3514: Codechef MARCH14 GERALD07加强版 Time Limit: 60 Sec  Memory Limit: 256 MBSubmit: 1288  Solved: 490 ...

  8. 架构师养成记--9.future模式讲解

    什么是future模式呢?解释这个概念之前我们先来了解一个场景吧,财务系统的结账功能,这个功能可能是每个月用一次,在这一个月中相关的数据量已经积累得非常大,这一个功能需要调用好几个存储过程来完成.假如 ...

  9. Future和Promise

    Future用于获取异步操作的结果,而Promise则比较抽象,无法直接猜测出其功能. Future Future最早来源于JDK的java.util.concurrent.Future,它用于代表异 ...

随机推荐

  1. Go语言实现:【剑指offer】二进制中1的个数

    该题目来源于牛客网<剑指offer>专题. 输入一个整数,输出该数二进制表示中1的个数.其中负数用补码表示. 分析: 如果一个整数不为0,那么这个整数至少有一位是1.如果我们把这个整数减1 ...

  2. Go语言实现:【剑指offer】整数中1出现的次数(从1到n整数中1出现的次数)

    该题目来源于牛客网<剑指offer>专题. 求出1 ~ 13的整数中1出现的次数,并算出100 ~ 1300的整数中1出现的次数?为此他特别数了一下1 ~ 13中包含1的数字有1.10.1 ...

  3. 阿里巴巴Java开发手册建议创建HashMap时设置初始化容量,但是多少合适呢?

    集合是Java开发日常开发中经常会使用到的,而作为一种典型的K-V结构的数据结构,HashMap对于Java开发者一定不陌生. 关于HashMap,很多人都对他有一些基本的了解,比如他和hashtab ...

  4. SqlServer触发器的基础知识

    触发器的基础知识:create trigger tr_name on table/view{for | after | instead of } [update][,][insert][,][dele ...

  5. UI自动化框架搭建

    1.目录结构 大概分为以下几个文件 common :主要是用来放一些封装的公共函数 outputs :主要是输出一些文件,失败截图.用例执行完的测试报告 pagelocate :主要是元素的定位 pa ...

  6. redis系列-14点的灵异事件

    概述 项目组每天14点都会遭遇惊魂时刻.一条条告警短信把工程师从午后小憩中拉回现实.之后问题又神秘消失.是PM喊你上工了?还是服务器给你开玩笑?下面请看工程师如何一步一步揪出真凶,解决问题. 如果不想 ...

  7. Keras入门(六)模型训练实时可视化

      在北京做某个项目的时候,客户要求能够对数据进行训练.预测,同时能导出模型,还有在页面上显示训练的进度.前面的几个要求都不难实现,但在页面上显示训练进度当时笔者并没有实现.   本文将会分享如何在K ...

  8. .NET CORE(C#) WPF亚克力窗体

    微信公众号:Dotnet9,网站:Dotnet9,问题或建议:请网站留言, 如果对您有所帮助:欢迎赞赏. .NET CORE(C#) WPF亚克力窗体 阅读导航 本文背景 代码实现 本文参考 源码 1 ...

  9. JS中变量、作用域的本质,定义及使用方法

    全局作用域和局部作用域 全局作用域 局部作用域:函数作用域 全局作用域在全局和局部都可以访问到,局部作用域只能在局部被访问到 var name="cyy"; function fn ...

  10. shell 一键配置单实例oracle基础环境变量(linux7)

    #!/bin/bash echo "修改主机名" hostnamectl set-hostname wangxfa hostname sleep 1 echo "查看并关 ...