题意:(0,0)走到(k,0),每一部分有一条线段作为上界,求方案数。

解题关键:dp+矩阵快速幂,盗个图,注意ll

关于那条语句为什么不加也可以,因为我的矩阵C,就是因为多传了了len的原因,其他位置都是0,所以不需要加

 #include<cstdio>
#include<cstring>
#include<cstdlib>
#include<algorithm>
#include<cmath>
#include<iostream>
using namespace std;
typedef long long ll;
const ll mod=1e9+;
struct mat{
ll m[][];
}A; mat mul(mat &A,mat &B,ll len){
mat C={};
for(int i=;i<=len;i++){
for(int k=;k<=len;k++){
for(int j=;j<=len;j++){
C.m[i][j]=(C.m[i][j]+A.m[i][k]*B.m[k][j]%mod+mod)%mod;
}
}
}
return C;
} mat mod_pow(mat A,ll n,ll len){
mat B={};
for(int i=;i<=len;i++) B.m[i][i]=;
while(n>){
if(n&) B=mul(B,A,len);
A=mul(A,A,len);
n>>=;
}
return B;
} int main(){
ll n,k;
ios::sync_with_stdio();
cin.tie();
cout.tie();
for(int i=;i<;i++){
int j=i->=?i-:;
for(;j<=i+&&j<;j++){
A.m[i][j]=;
}
}
mat C;
cin>>n>>k;
mat B={};
B.m[][]=;
ll cnt=;
for(int i=;i<n&&cnt<k;i++){
ll a,b,c;
cin>>a>>b>>c;
if(b>k) b=k;
cnt+=b-a;
C=mod_pow(A, b-a, c);
B=mul(B, C, c);
for(ll j=c+;j<;j++) B.m[j][]=;//这句话不加也可以,为什么?
}
cout<<(B.m[][]+mod)%mod<<"\n";
return ;
}

最新文章

  1. 支付宝集成后报错ALI38173
  2. android 蓝牙串口通讯使用简介
  3. maya user guider第一课,一些基本概念
  4. 谈FTP服务器攻击技术及其展望 (下)
  5. vs2010+ Ankhsvn使用详解
  6. ubuntu eclipse CDT 问题
  7. ;(function($,window,undefined){})(jQuery,window)详细解析————借助B5教程解析自己整理了一下
  8. CSS3实现一束光划过图片、和文字特效
  9. 一起来学linux:shell script(一)关于变量
  10. git 的常用命令(未完待补充)
  11. More Moore and More than Moore
  12. ES5-ES6-ES7_解构赋值
  13. MySQL信息提示不是英文问题
  14. C#中转换函数Convert、Parse、TryParse、(int) 的区别
  15. BZOJ.2653.[国家集训队]middle(可持久化线段树 二分)
  16. hive 基础
  17. 函数和常用模块【day04】:递归(五)
  18. 前端ps部分
  19. go语言log包的学习(log,Logger)
  20. SQL截取字符串分隔符中间部门的办法

热门文章

  1. 关于随机浏览头伪装fake-UserAgent
  2. HDU - 2701 Lampyridae Teleportae 【模拟】
  3. Kattis - triangle 【数学】
  4. &lt;linux报错解决&gt;在Fedora21下安装vmware报错的解决办法
  5. bootstrap0
  6. BZOJ 1656 [Usaco2006 Jan] The Grove 树木:bfs【射线法】
  7. java:Eclipse插件springsource-tool-suite的下载和安装
  8. 浅谈WebService开发(一)
  9. Ffmpeg移植S3C2440
  10. HTML5视音频标签参考