BZOJ2004: [Hnoi2010]Bus 公交线路
题目:http://www.lydsy.com/JudgeOnline/problem.php?id=2004
状压dp+矩阵乘法。
f[i][s]表示从第i位至前面的i-k位,第i位必须取的状态。
然后p->p‘的转移是每一次只走一步的,强制其跑得最远的一位转移。
那么判断能否转移就是v[i]<<1^bin[p]与v[j]是否只有一位不同。
于是我们要强制令每个s中的第p位为1。。
然后跑n-k步矩阵乘法就可以了。
- #include<cstring>
- #include<cstdio>
- #include<iostream>
- #include<algorithm>
- #include<cmath>
- #include<queue>
- #define rep(i,l,r) for (int i=l;i<=r;i++)
- #define down(i,l,r) for (int i=l;i>=r;i--)
- #define clr(x,y) memset(x,y,sizeof(x))
- #define inf int(1e9)
- #define maxn 20
- #define mm 30031
- using namespace std;
- struct data{int a[][];
- }ans,b;
- int bin[maxn],v[maxn],n,k,p,cnt;
- int read(){
- int x=,f=; char ch=getchar();
- while (!isdigit(ch)) {if (ch=='-') f=-; ch=getchar();}
- while (isdigit(ch)) {x=x*+ch-''; ch=getchar();}
- return x*f;
- }
- int lowbit(int x){
- return (x&(-x));
- }
- void dfs(int dep,int s,int now){
- if (dep>k){
- v[++cnt]=s;
- return ;
- }
- down(i,now-,){
- dfs(dep+,s+bin[i-],i);
- }
- }
- void pre(){
- rep(i,,cnt) rep(j,,cnt){
- int x=(v[i]*)^bin[p];
- x=x^v[j];
- if (x==lowbit(x)) b.a[i][j]=;
- }
- }
- data operator *(data a,data b){
- data c; clr(c.a,);
- rep(i,,cnt) rep(j,,cnt) rep(k,,cnt){
- c.a[i][j]=(c.a[i][j]+(a.a[i][k]*b.a[k][j])%mm)%mm;
- }
- return c;
- }
- void pow(int x){
- rep(i,,cnt) ans.a[i][i]=;
- while (x){
- if (x&) ans=ans*b;
- b=b*b;
- x/=;
- }
- printf("%d\n",ans.a[][]);
- }
- int main(){
- n=read(); k=read(); p=read();
- bin[]=; rep(i,,p) bin[i]=bin[i-]*;
- dfs(,bin[p-],p);
- pre();
- pow(n-k);
- return ;
- }
BZOJ2004: [Hnoi2010]Bus 公交线路的更多相关文章
- BZOJ2004:[HNOI2010]Bus 公交线路(状压DP,矩阵乘法)
Description 小Z所在的城市有N个公交车站,排列在一条长(N-1)km的直线上,从左到右依次编号为1到N,相邻公交车站间的距离均为1km. 作为公交车线路的规划者,小Z调查了市民的需求,决定 ...
- [Bzoj2004][Hnoi2010]Bus 公交线路(状压dp&&矩阵加速)
题目链接:https://www.lydsy.com/JudgeOnline/problem.php?id=2004 看了很多大佬的博客才理解了这道题,菜到安详QAQ 在不考虑优化的情况下,先推$dp ...
- bzoj2004 [Hnoi2010]Bus 公交线路 矩阵快速幂+状压DP
题目传送门 https://lydsy.com/JudgeOnline/problem.php?id=2004 题解 如果 \(N\) 没有那么大,考虑把每一位分配给每一辆车. 假设已经分配到了第 \ ...
- 【BZOJ2004】[Hnoi2010]Bus 公交线路 状压+矩阵乘法
[BZOJ2004][Hnoi2010]Bus 公交线路 Description 小Z所在的城市有N个公交车站,排列在一条长(N-1)km的直线上,从左到右依次编号为1到N,相邻公交车站间的距离均为1 ...
- 【BZOJ2004】[HNOI2010]Bus 公交线路
[BZOJ2004][HNOI2010]Bus 公交线路 题面 bzoj 洛谷 题解 $N$特别大$P,K$特别小,一看就是矩阵快速幂+状压 设$f[S]$表示公交车状态为$S$的方案数 这是什么意思 ...
- 【bzoj2004】[Hnoi2010]Bus 公交线路 状压dp+矩阵乘法
题目描述 小Z所在的城市有N个公交车站,排列在一条长(N-1)km的直线上,从左到右依次编号为1到N,相邻公交车站间的距离均为1km. 作为公交车线路的规划者,小Z调查了市民的需求,决定按下述规则设计 ...
- [bzoj2004] [洛谷P3204] [Hnoi2010] Bus 公交线路
Description 小Z所在的城市有N个公交车站,排列在一条长(N-1)km的直线上,从左到右依次编号为1到N,相邻公交车站间的距 离均为1km. 作为公交车线路的规划者,小Z调查了市民的需求,决 ...
- bzoj 2004: [Hnoi2010]Bus 公交线路
Description 小Z所在的城市有N个公交车站,排列在一条长(N-1)km的直线上,从左到右依次编号为1到N,相邻公交车站间的距 离均为1km. 作为公交车线路的规划者,小Z调查了市民的需求,决 ...
- [BZOJ 2004] [Hnoi2010] Bus 公交线路 【状压DP + 矩阵乘法】
题目链接: BZOJ - 2004 题目分析 看到题目完全不会..于是立即看神犇们的题解. 由于 p<=10 ,所以想到是使用状压.将每个连续的 p 个位置压缩成一个 p 位 2 进制数,其中共 ...
随机推荐
- AutoLayout的几种方法
1.XIB 2.Fram 3.屏幕比例适配(个人比较推荐) iOS屏幕适配(尺寸适配) 4.NSLayoutConstraint. 5.Masonry 概述 使用 Objective-C 纯代码编 ...
- python 将文件夹内的图片转换成PDF
import os import stringfrom PIL import Imagefrom reportlab.lib.pagesizes import A4, landscapefrom re ...
- bzoj 4345: [POI2016]Korale
Description 有n个带标号的珠子,第i个珠子的价值为a[i].现在你可以选择若干个珠子组成项链(也可以一个都不选),项链的价值为所有珠子的价值和.现在给所有可能的项链排序,先按权值从小到大排 ...
- readAsDataURL(file) & readAsText(file, encoding)
readAsDataURL(file)会把文件内容转换为data类型的URL: data:text/plain;base64,b3JkZXItaWQJb3JkZXItaXRlbS1p... 这种d ...
- Apache Avro# 1.8.2 Specification (Avro 1.8.2规范)一
h4 { text-indent: 0.71cm; margin-top: 0.49cm; margin-bottom: 0.51cm; direction: ltr; color: #000000; ...
- csv文件转json
http://stackoverflow.com/questions/19766266/directly-convert-csv-file-to-json-file-using-the-jackson ...
- redis 安装方式
1 参考网址 https://www.cnblogs.com/ahjx1628/p/6496529.html https://www.cnblogs.com/smail-bao/p/6164132.h ...
- Asp.net MVC在Razor中输出Html的两种方式
http://qubernet.blog.163.com/blog/static/177947284201485104616368/ Razor中所有的Html都会自动编码,这样就不需要我们手动去编码 ...
- UWP 手绘视频创作工具技术分享系列 - 文字的解析和绘制
本篇作为技术分享系列的第二篇,详细讲一下文字的解析和绘制,这部分功能的研究和最终实现由团队共同完成,目前还在寻找更理想的实现方式. 首先看一下文字绘制在手绘视频中的应用场景 文字是手绘视频中很重要的表 ...
- switchery按钮使用
1.先引入switchery.css 和 switchery.js 2.绘制 checkbox按钮 : a.静态页面写法 未选中时 <input type="checkbox&quo ...