[HNOI2010]公交线路
题目
发现\(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]公交线路相关推荐
- 【BZOJ2004】[Hnoi2010]Bus 公交线路 状压+矩阵乘法
[BZOJ2004][Hnoi2010]Bus 公交线路 Description 小Z所在的城市有N个公交车站,排列在一条长(N-1)km的直线上,从左到右依次编号为1到N,相邻公交车站间的距离均为1 ...
- 线性代数三之状压DP的矩阵加速——Quad Tiling,Bus公交线路
状压与矩阵加速的藕断丝连 Quad Tiling description solution code [Hnoi2010]Bus 公交线路 description solution code Quad ...
- 重新编号_武汉黄陂公交线路PW、PG、PZ……分不清?别急,就要重新编号啦
黄陂公交线路,一直为陂人诟病,不是因为不准时,也不是因为线路少,更不是因为服务不规范,仅仅只是因为,小小一个县城内,公交线路的编号.黄陂公交线路现行的编排方式为"P+字母+数字", ...
- ??ArcGIS server公交线路动态分段问题
问题描述: 1.如果一条公交线路有40个站,我现在只想显示3-9站之间的线路,怎么实现.把公交线路每两站截成一是很低级的做法,一工作量大,二不好更新,如果我的站点有变动,或者增加删除站点需要更新几何数 ...
- 查询中国城市公交线路
<!-- 获取省份城市API接口:http://v.juhe.cn/postcode/pcd?key=e30b66c95726d5f9d7bf4bf9019b5e1f --> ...
- 【BZOJ2004】公交线路(动态规划,状态压缩,矩阵快速幂)
[BZOJ2004]公交线路(动态规划,状态压缩,矩阵快速幂) 题面 BZOJ 题解 看到\(k,p\)这么小 不难想到状态压缩 看到\(n\)这么大,不难想到矩阵快速幂 那么,我们来考虑朴素的\(d ...
- 基于android公交车线路查询论文文献,本科毕业论文---基于android的手机公交线路查询系统.doc...
毕 业 设 计( 论 文 ) 题目手机公交线路查询系统作者学院专业学号指导教师 摘 要 关键词: Abstract With the level of people's life improving, ...
- 74LS139改3―8线译码器_3、5号线沿线楼盘6800起!另:为无缝衔接地铁 新增调整公交线路一览!...
点击蓝字关注我们 近日,地铁3号线.5号线接连通过安全评审,正式载客运营的日子离咱们越来越近了!同时,长沙也新增.调整了一批公交线路无缝接驳地铁,有木有你经常坐的公交线路呢?地铁3号线.5号线周边有哪 ...
- java实现找一条转乘次数最少的公交线路?,基于最优换乘次数的城市公交查询算法...
摘要:城市公交查询系统是一个城市非常重要的基础设施,也是城市文明的一个重要标志.该文探讨城市公交查询系统中最优换乘次数的查询算法.算法以图论中邻接矩阵为基础,结合矩阵算术运算的特点和公交查询系统的要求 ...
最新文章
- 一文综述人脸检测算法(附资源)
- golang string切片解析json
- 深度学习(十三)caffe之训练数据格式
- Java 洛谷 P1085 不高兴的津津
- BI Content、Metadata Repository
- Android 6.0 权限管理最佳实践
- Java 中的异常和处理详解
- td 双击 编辑 php,双击表格td进行编辑
- javascript/jquery获取图片的原始大小
- 5行Python 代码就能让你的电脑永不息屏
- ELK笔记(一)elasticsearch安装
- 【论文写作】网上办公自动系统中功能需求如何写
- Akka查询设备组《fourteen》译
- ​每一页都是知识点,这本Flutter企业级实践指南太绝了
- c语言程序设计数组说课,C语言程序设计说课PPT课件(超好)
- 【C语言】一文彻底理解指针,通俗易懂
- Flash Tech: this.el_.vjs_getProperty is not a function video.js
- Python Behave框架学习
- 计算机网络-CSMA/CD协议
- 人工神经网络图像识别,神经网络如何识别图像
热门文章
- Netty实战 IM即时通讯系统(五)客户端启动流程
- 解决Coursera视频无法观看的问题
- 【STM32】SPI简介
- python的requests.session()_Python+requests之session保持会话
- 笔记本平板电脑推荐_ONETALK 亦说便携式平板电脑推荐
- 每天一道LeetCode----位运算实现加减乘除四则运算
- HTML字体小于12谷歌不兼容,Chrome谷歌浏览器下不支持css字体小于12px的解决办法【原创】...
- 记录kubesphere的安装与使用
- iOS 12.0-12.1.2 完整越狱支持 Cydia
- linux内核通用提权漏洞expliot 脏牛Dirty COW