题目

发现\(n\)比较大,但是\(k,p\)都很小,考虑矩乘使得复杂度倾斜一下

发现所有车的最大间隔都是\(p\),还保证\(k<p\),于是我们可以考虑压下最后\(p\)位的情况

于是设\(dp[i][S]\)表示目前最远的车来到了\(i\)位置,最后\(p\)为是否有车的状态是\(S\),\(0\)表示没车,\(1\)表示有车

转移的话我们就使得某一辆车提前就好了,注意如果\(i-p+1\)有车的话,提前的只能是这辆车了

代码

#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#define re register
const int M=1024;
const int mod=30031;
struct mat{int a[255][255];}a;
int n,K,P,sz;
int id[M],to[M];
inline mat operator*(mat a,mat b) {mat c;for(re int i=0;i<sz;i++)for(re int j=0;j<sz;j++) c.a[i][j]=0;for(re int k=0;k<sz;k++)for(re int i=0;i<sz;i++)for(re int j=0;j<sz;j++) {c.a[i][j]+=a.a[i][k]*b.a[k][j];if(c.a[i][j]>mod) c.a[i][j]%=mod;}return c;
}
mat ksm(int b) {mat S=a;b--;while(b) {if(b&1) S=S*a;b>>=1;a=a*a;}return S;
}
void dfs(int t,int s,int num) {if(t==P+1) {if(num==K) id[sz]=s,to[s]=sz++;return;}dfs(t+1,s,num);dfs(t+1,s|(1<<(t-1)),num+1);
}
int main() {scanf("%d%d%d",&n,&K,&P);dfs(1,0,0);for(re int i=0;i<sz;i++) {int now=id[i];for(re int j=0;j<P;j++)if(now>>j&1) {if((now>>(P-1)&1)&&j!=P-1) continue; a.a[to[(now^(1<<j))<<1|1]][i]++;}}int k=(1<<K)-1;mat ans=ksm(n-K);printf("%d\n",ans.a[to[k]][to[k]]);return 0;
}

转载于:https://www.cnblogs.com/asuldb/p/10569910.html

[HNOI2010]公交线路相关推荐

  1. 【BZOJ2004】[Hnoi2010]Bus 公交线路 状压+矩阵乘法

    [BZOJ2004][Hnoi2010]Bus 公交线路 Description 小Z所在的城市有N个公交车站,排列在一条长(N-1)km的直线上,从左到右依次编号为1到N,相邻公交车站间的距离均为1 ...

  2. 线性代数三之状压DP的矩阵加速——Quad Tiling,Bus公交线路

    状压与矩阵加速的藕断丝连 Quad Tiling description solution code [Hnoi2010]Bus 公交线路 description solution code Quad ...

  3. 重新编号_武汉黄陂公交线路PW、PG、PZ……分不清?别急,就要重新编号啦

    黄陂公交线路,一直为陂人诟病,不是因为不准时,也不是因为线路少,更不是因为服务不规范,仅仅只是因为,小小一个县城内,公交线路的编号.黄陂公交线路现行的编排方式为"P+字母+数字", ...

  4. ??ArcGIS server公交线路动态分段问题

    问题描述: 1.如果一条公交线路有40个站,我现在只想显示3-9站之间的线路,怎么实现.把公交线路每两站截成一是很低级的做法,一工作量大,二不好更新,如果我的站点有变动,或者增加删除站点需要更新几何数 ...

  5. 查询中国城市公交线路

    <!--      获取省份城市API接口:http://v.juhe.cn/postcode/pcd?key=e30b66c95726d5f9d7bf4bf9019b5e1f  --> ...

  6. 【BZOJ2004】公交线路(动态规划,状态压缩,矩阵快速幂)

    [BZOJ2004]公交线路(动态规划,状态压缩,矩阵快速幂) 题面 BZOJ 题解 看到\(k,p\)这么小 不难想到状态压缩 看到\(n\)这么大,不难想到矩阵快速幂 那么,我们来考虑朴素的\(d ...

  7. 基于android公交车线路查询论文文献,本科毕业论文---基于android的手机公交线路查询系统.doc...

    毕 业 设 计( 论 文 ) 题目手机公交线路查询系统作者学院专业学号指导教师 摘 要 关键词: Abstract With the level of people's life improving, ...

  8. 74LS139改3―8线译码器_3、5号线沿线楼盘6800起!另:为无缝衔接地铁 新增调整公交线路一览!...

    点击蓝字关注我们 近日,地铁3号线.5号线接连通过安全评审,正式载客运营的日子离咱们越来越近了!同时,长沙也新增.调整了一批公交线路无缝接驳地铁,有木有你经常坐的公交线路呢?地铁3号线.5号线周边有哪 ...

  9. java实现找一条转乘次数最少的公交线路?,基于最优换乘次数的城市公交查询算法...

    摘要:城市公交查询系统是一个城市非常重要的基础设施,也是城市文明的一个重要标志.该文探讨城市公交查询系统中最优换乘次数的查询算法.算法以图论中邻接矩阵为基础,结合矩阵算术运算的特点和公交查询系统的要求 ...

最新文章

  1. 一文综述人脸检测算法(附资源)
  2. golang string切片解析json
  3. 深度学习(十三)caffe之训练数据格式
  4. Java 洛谷 P1085 不高兴的津津
  5. BI Content、Metadata Repository
  6. Android 6.0 权限管理最佳实践
  7. Java 中的异常和处理详解
  8. td 双击 编辑 php,双击表格td进行编辑
  9. javascript/jquery获取图片的原始大小
  10. 5行Python 代码就能让你的电脑永不息屏
  11. ELK笔记(一)elasticsearch安装
  12. 【论文写作】网上办公自动系统中功能需求如何写
  13. Akka查询设备组《fourteen》译
  14. ​每一页都是知识点,这本Flutter企业级实践指南太绝了
  15. c语言程序设计数组说课,C语言程序设计说课PPT课件(超好)
  16. 【C语言】一文彻底理解指针,通俗易懂
  17. Flash Tech: this.el_.vjs_getProperty is not a function video.js
  18. Python Behave框架学习
  19. 计算机网络-CSMA/CD协议
  20. 人工神经网络图像识别,神经网络如何识别图像

热门文章

  1. Netty实战 IM即时通讯系统(五)客户端启动流程
  2. 解决Coursera视频无法观看的问题
  3. 【STM32】SPI简介
  4. python的requests.session()_Python+requests之session保持会话
  5. 笔记本平板电脑推荐_ONETALK 亦说便携式平板电脑推荐
  6. 每天一道LeetCode----位运算实现加减乘除四则运算
  7. HTML字体小于12谷歌不兼容,Chrome谷歌浏览器下不支持css字体小于12px的解决办法【原创】...
  8. 记录kubesphere的安装与使用
  9. iOS 12.0-12.1.2 完整越狱支持 Cydia
  10. linux内核通用提权漏洞expliot 脏牛Dirty COW