题目: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步矩阵乘法就可以了。

  1. #include<cstring>
  2. #include<cstdio>
  3. #include<iostream>
  4. #include<algorithm>
  5. #include<cmath>
  6. #include<queue>
  7. #define rep(i,l,r) for (int i=l;i<=r;i++)
  8. #define down(i,l,r) for (int i=l;i>=r;i--)
  9. #define clr(x,y) memset(x,y,sizeof(x))
  10. #define inf int(1e9)
  11. #define maxn 20
  12. #define mm 30031
  13. using namespace std;
  14. struct data{int a[][];
  15. }ans,b;
  16. int bin[maxn],v[maxn],n,k,p,cnt;
  17. int read(){
  18. int x=,f=; char ch=getchar();
  19. while (!isdigit(ch)) {if (ch=='-') f=-; ch=getchar();}
  20. while (isdigit(ch)) {x=x*+ch-''; ch=getchar();}
  21. return x*f;
  22. }
  23. int lowbit(int x){
  24. return (x&(-x));
  25. }
  26. void dfs(int dep,int s,int now){
  27. if (dep>k){
  28. v[++cnt]=s;
  29. return ;
  30. }
  31. down(i,now-,){
  32. dfs(dep+,s+bin[i-],i);
  33. }
  34. }
  35. void pre(){
  36. rep(i,,cnt) rep(j,,cnt){
  37. int x=(v[i]*)^bin[p];
  38. x=x^v[j];
  39. if (x==lowbit(x)) b.a[i][j]=;
  40. }
  41. }
  42. data operator *(data a,data b){
  43. data c; clr(c.a,);
  44. rep(i,,cnt) rep(j,,cnt) rep(k,,cnt){
  45. c.a[i][j]=(c.a[i][j]+(a.a[i][k]*b.a[k][j])%mm)%mm;
  46. }
  47. return c;
  48. }
  49. void pow(int x){
  50. rep(i,,cnt) ans.a[i][i]=;
  51. while (x){
  52. if (x&) ans=ans*b;
  53. b=b*b;
  54. x/=;
  55. }
  56. printf("%d\n",ans.a[][]);
  57. }
  58. int main(){
  59. n=read(); k=read(); p=read();
  60. bin[]=; rep(i,,p) bin[i]=bin[i-]*;
  61. dfs(,bin[p-],p);
  62. pre();
  63. pow(n-k);
  64. return ;
  65. }

BZOJ2004: [Hnoi2010]Bus 公交线路的更多相关文章

  1. BZOJ2004:[HNOI2010]Bus 公交线路(状压DP,矩阵乘法)

    Description 小Z所在的城市有N个公交车站,排列在一条长(N-1)km的直线上,从左到右依次编号为1到N,相邻公交车站间的距离均为1km. 作为公交车线路的规划者,小Z调查了市民的需求,决定 ...

  2. [Bzoj2004][Hnoi2010]Bus 公交线路(状压dp&&矩阵加速)

    题目链接:https://www.lydsy.com/JudgeOnline/problem.php?id=2004 看了很多大佬的博客才理解了这道题,菜到安详QAQ 在不考虑优化的情况下,先推$dp ...

  3. bzoj2004 [Hnoi2010]Bus 公交线路 矩阵快速幂+状压DP

    题目传送门 https://lydsy.com/JudgeOnline/problem.php?id=2004 题解 如果 \(N\) 没有那么大,考虑把每一位分配给每一辆车. 假设已经分配到了第 \ ...

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

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

  5. 【BZOJ2004】[HNOI2010]Bus 公交线路

    [BZOJ2004][HNOI2010]Bus 公交线路 题面 bzoj 洛谷 题解 $N$特别大$P,K$特别小,一看就是矩阵快速幂+状压 设$f[S]$表示公交车状态为$S$的方案数 这是什么意思 ...

  6. 【bzoj2004】[Hnoi2010]Bus 公交线路 状压dp+矩阵乘法

    题目描述 小Z所在的城市有N个公交车站,排列在一条长(N-1)km的直线上,从左到右依次编号为1到N,相邻公交车站间的距离均为1km. 作为公交车线路的规划者,小Z调查了市民的需求,决定按下述规则设计 ...

  7. [bzoj2004] [洛谷P3204] [Hnoi2010] Bus 公交线路

    Description 小Z所在的城市有N个公交车站,排列在一条长(N-1)km的直线上,从左到右依次编号为1到N,相邻公交车站间的距 离均为1km. 作为公交车线路的规划者,小Z调查了市民的需求,决 ...

  8. bzoj 2004: [Hnoi2010]Bus 公交线路

    Description 小Z所在的城市有N个公交车站,排列在一条长(N-1)km的直线上,从左到右依次编号为1到N,相邻公交车站间的距 离均为1km. 作为公交车线路的规划者,小Z调查了市民的需求,决 ...

  9. [BZOJ 2004] [Hnoi2010] Bus 公交线路 【状压DP + 矩阵乘法】

    题目链接: BZOJ - 2004 题目分析 看到题目完全不会..于是立即看神犇们的题解. 由于 p<=10 ,所以想到是使用状压.将每个连续的 p 个位置压缩成一个 p 位 2 进制数,其中共 ...

随机推荐

  1. AutoLayout的几种方法

    1.XIB 2.Fram 3.屏幕比例适配(个人比较推荐)  iOS屏幕适配(尺寸适配) 4.NSLayoutConstraint. 5.Masonry  概述 使用 Objective-C 纯代码编 ...

  2. python 将文件夹内的图片转换成PDF

    import os import stringfrom PIL import Imagefrom reportlab.lib.pagesizes import A4, landscapefrom re ...

  3. bzoj 4345: [POI2016]Korale

    Description 有n个带标号的珠子,第i个珠子的价值为a[i].现在你可以选择若干个珠子组成项链(也可以一个都不选),项链的价值为所有珠子的价值和.现在给所有可能的项链排序,先按权值从小到大排 ...

  4. readAsDataURL(file) & readAsText(file, encoding)

      readAsDataURL(file)会把文件内容转换为data类型的URL: data:text/plain;base64,b3JkZXItaWQJb3JkZXItaXRlbS1p... 这种d ...

  5. 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; ...

  6. csv文件转json

    http://stackoverflow.com/questions/19766266/directly-convert-csv-file-to-json-file-using-the-jackson ...

  7. redis 安装方式

    1 参考网址 https://www.cnblogs.com/ahjx1628/p/6496529.html https://www.cnblogs.com/smail-bao/p/6164132.h ...

  8. Asp.net MVC在Razor中输出Html的两种方式

    http://qubernet.blog.163.com/blog/static/177947284201485104616368/ Razor中所有的Html都会自动编码,这样就不需要我们手动去编码 ...

  9. UWP 手绘视频创作工具技术分享系列 - 文字的解析和绘制

    本篇作为技术分享系列的第二篇,详细讲一下文字的解析和绘制,这部分功能的研究和最终实现由团队共同完成,目前还在寻找更理想的实现方式. 首先看一下文字绘制在手绘视频中的应用场景 文字是手绘视频中很重要的表 ...

  10. switchery按钮使用

    1.先引入switchery.css 和 switchery.js 2.绘制 checkbox按钮 : a.静态页面写法  未选中时 <input type="checkbox&quo ...