[codeforces821E]Okabe and El Psy Kongroo
2024-10-11 05:42:21
题意:(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 ;
}
最新文章
- 支付宝集成后报错ALI38173
- android 蓝牙串口通讯使用简介
- maya user guider第一课,一些基本概念
- 谈FTP服务器攻击技术及其展望 (下)
- vs2010+ Ankhsvn使用详解
- ubuntu eclipse CDT 问题
- ;(function($,window,undefined){})(jQuery,window)详细解析————借助B5教程解析自己整理了一下
- CSS3实现一束光划过图片、和文字特效
- 一起来学linux:shell script(一)关于变量
- git 的常用命令(未完待补充)
- More Moore and More than Moore
- ES5-ES6-ES7_解构赋值
- MySQL信息提示不是英文问题
- C#中转换函数Convert、Parse、TryParse、(int) 的区别
- BZOJ.2653.[国家集训队]middle(可持久化线段树 二分)
- hive 基础
- 函数和常用模块【day04】:递归(五)
- 前端ps部分
- go语言log包的学习(log,Logger)
- SQL截取字符串分隔符中间部门的办法
热门文章
- 关于随机浏览头伪装fake-UserAgent
- HDU - 2701 Lampyridae Teleportae 【模拟】
- Kattis - triangle 【数学】
- <;linux报错解决>;在Fedora21下安装vmware报错的解决办法
- bootstrap0
- BZOJ 1656 [Usaco2006 Jan] The Grove 树木:bfs【射线法】
- java:Eclipse插件springsource-tool-suite的下载和安装
- 浅谈WebService开发(一)
- Ffmpeg移植S3C2440
- HTML5视音频标签参考