[HNOI2010]BUS 公交线路
题面
Sol
状压很显然
重点在于转移:题目就相当与每\(p\)长度的车站必须有且仅有\(k\)个被经过
那么转移时状压的二进制一定要有\(k\)个一
且两个相邻转移的状态之间必须满足:设为\(i->j\),则\((i >> 1) \&j\)要有\(k-1\)个\(1\)
然后就可以加上矩阵快速幂优化,注意把满足要求的状态记下来,只有一百多个
我常数丑是我的错
# include <bits/stdc++.h>
# define RG register
# define IL inline
# define Fill(a, b) memset(a, b, sizeof(a))
using namespace std;
typedef long long ll;
const int Zsy(30031);
IL int Input(){
RG int x = 0, z = 1; RG char c = getchar();
for(; c < '0' || c > '9'; c = getchar()) z = c == '-' ? -1 : 1;
for(; c >= '0' && c <= '9'; c = getchar()) x = (x << 1) + (x << 3) + (c ^ 48);
return x * z;
}
int n, k, p, cnt[1024], que[150], len, pos;
IL void Up(RG int &x, RG int y){
x += y;
if(x >= Zsy) x -= Zsy;
}
struct Matrix{
int a[150][150];
IL Matrix(){
Fill(a, 0);
}
IL int* operator [](RG int x){
return a[x];
}
IL void Init(){
for(RG int i = 0; i < len; ++i) a[i][i] = 1;
}
IL Matrix operator *(RG Matrix B){
RG Matrix C;
for(RG int i = 0; i < len; ++i)
for(RG int j = 0; j < len; ++j)
for(RG int l = 0; l < len; ++l)
Up(C[i][l], 1LL * a[i][j] * B[j][l] % Zsy);
return C;
}
} S, E, T;
int main(RG int argc, RG char* argv[]){
n = Input(), k = Input(), p = Input();
for(RG int i = 0; i < (1 << p); ++i){
for(RG int x = i; x; x -= x & -x) ++cnt[i];
if(cnt[i] == k && (i & 1)) que[len++] = i;
}
for(RG int i = 0; i < len; ++i)
if(que[i] == (1 << k) - 1) pos = i;
for(RG int i = 0; i < len; ++i)
for(RG int j = 0; j < len; ++j)
if(cnt[(que[i] >> 1) & que[j]] == k - 1) T[i][j] = 1;
E.Init(), S[0][pos] = 1;
for(RG int i = n - k; i; i >>= 1, T = T * T)
if(i & 1) E = E * T;
S = S * E;
printf("%d\n", S[0][pos]);
return 0;
}
[HNOI2010]BUS 公交线路的更多相关文章
- 【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$的方案数 这是什么意思 ...
- bzoj 2004: [Hnoi2010]Bus 公交线路
Description 小Z所在的城市有N个公交车站,排列在一条长(N-1)km的直线上,从左到右依次编号为1到N,相邻公交车站间的距 离均为1km. 作为公交车线路的规划者,小Z调查了市民的需求,决 ...
- BZOJ2004:[HNOI2010]Bus 公交线路(状压DP,矩阵乘法)
Description 小Z所在的城市有N个公交车站,排列在一条长(N-1)km的直线上,从左到右依次编号为1到N,相邻公交车站间的距离均为1km. 作为公交车线路的规划者,小Z调查了市民的需求,决定 ...
- 【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 公交线路 【状压DP + 矩阵乘法】
题目链接: BZOJ - 2004 题目分析 看到题目完全不会..于是立即看神犇们的题解. 由于 p<=10 ,所以想到是使用状压.将每个连续的 p 个位置压缩成一个 p 位 2 进制数,其中共 ...
- BZOJ 2004: [Hnoi2010]Bus 公交线路 [DP 状压 矩阵乘法]
传送门 题意: $n$个公交站点,$k$辆车,$1...k$是起始站,$n-k+1..n$是终点站 每个站只能被一辆车停靠一次 每辆车相邻两个停靠位置不能超过$p$ 求方案数 $n \le 10^9, ...
- 【BZOJ 2004】: [Hnoi2010]Bus 公交线路
题目链接: TP 题解: 所以说,超显眼的数据范围啊. 很显然我们对于每个P的区间都是要有k个站被bus停留,然后考虑转移的话应该是把这k个站里的某个bus往前走,那么转移也很显然了,n的范围很大 ...
- BZOJ2004: [Hnoi2010]Bus 公交线路
题目:http://www.lydsy.com/JudgeOnline/problem.php?id=2004 状压dp+矩阵乘法. f[i][s]表示从第i位至前面的i-k位,第i位必须取的状态. ...
随机推荐
- 阿里云学习之IOT物联网套件(配置篇)
文档时间:2018.-1-24 首注:此文章是参照以下文章的整合与补充: https://bbs.aliyun.com/read/309106.html?amp;displayMode=1&p ...
- [解决问题] E: 无法获得锁 /var/lib/dpkg/lock - open (11: 资源暂时不可用)
E: 无法获得锁 /var/lib/dpkg/lock - open (11: 资源暂时不可用)E: 无法锁定管理目录(/var/lib/dpkg/),是否有其他进程正占用它? 解决办法: 1.终端输 ...
- Centos7安装GitLab
GitLab CE Download Archives gitlab安装调试小记 Gitlab Free Trial GitLab搭建手记 Gitlab社区版的使用 GUI PNG Gitlab升级到 ...
- My GitHub
0.引言 利用python开发,借助Dlib库捕获摄像头中的人脸,进行实时特征点标定: 图1 工程效果示例(gif) 图2 工程效果示例(静态图片) (实现比较简单,代码量也比较少,适合入门或者兴趣学 ...
- llinux基本指令
1.关机重启1)关机shutdown -h now (立刻关机)shutdown -h 5 (5分钟后关机)2)重启shutdown -r now (立刻重启)shutdown -r 5 (5分钟后重 ...
- angular4升级angular5问题记录之No NgModule metadata found for 'AppModule'
在将项目从angular4升级到angular5的过程中,出现No NgModule metadata found for 'AppModule'问题,网上查找答案将app.module.ts进行再次 ...
- $.ajax的一些坑啊
1.如果发送ajax返回的数据为json务必设置其 Content-Type:application/json;charset=UTF-8 不然会导致其success:function(data)中的 ...
- Web API 之承载宿主IIS,SelfHost,OwinSelfHost
Asp.Net WebAPI这个大家应该都不陌生,在我的理解范围中就是数据提供和交换的一个方式,相比与WCF,WS而言,更加的简单轻量,但是在部署web Api的时候,一般往往需要与a ...
- 一不小心把Mysql数据库的root的账号的权限给弄没啦,该怎么办
别急啊,现在只要你还能连接到Mysql,就问题不大! 首先,连接道Mysql,这里用Navicat进行讲解. 说明:root@localhost和root@127.0.0.1不是一个账号,也不是一回事 ...
- properties基本用法
package control; import java.io.BufferedInputStream; import java.io.FileInputStream; import java.io. ...