【动态规划21】Codeforces Round #420 821E Okabe and El Psy Kongroo(dp+矩阵快速幂)
来源:互联网 发布:名古屋大学研究生知乎 编辑:程序博客网 时间:2024/05/29 04:34
http://codeforces.com/problemset/problem/821/E
题目大意感觉好难描述啊..大家自己去看吧,我这机翻水平的英语也没啥意思。
考试的时候读错了题还行,怕不是石乐志。
大概是一个二维空间,给你n个限制{ai,bi,ci},告诉你ai~bi这个区间内,1<=y<=ci
然后f[i][j]=f[i-1][j]+f[i-1][j-1]+f[i-1][j+1],求f[k][1]。
(原题y最小为0,便于理解我将y的最小取值变为1)
矩阵十分容易构造
1 1 0 0 0 ……
1 1 1 0 0 ……
0 1 1 1 0 ……
………………
……0 0 0 1 1
然后每次更改矩阵的大小,然后算出b-a次幂,将这些矩阵相乘即可。
#include<bits/stdc++.h>#define fer(i,j,n) for(int i=j;i<=n;i++)#define far(i,j,n) for(int i=j;i>=n;i--)#define ll long longconst int maxn=100010;const ll mod=1e9+7;using namespace std;/*----------------------------------------------------------------------------*/inline ll read(){ char ls;ll x=0,sng=1; for(;ls<'0'||ls>'9';ls=getchar())if(ls=='-')sng=-1; for(;ls>='0'&&ls<='9';ls=getchar())x=x*10+ls-'0'; return x*sng;}/*----------------------------------------------------------------------------*/ll n,kk;struct kaga{ ll v[20][20]; kaga friend operator *(kaga a,kaga b) { kaga c; fer(i,1,16) fer(j,1,16) { c.v[i][j]=0; fer(k,1,16) c.v[i][j]=(c.v[i][j]+(a.v[i][k]*b.v[k][j]%mod)+mod)%mod; } return c; } kaga friend operator ^(kaga a,ll k) { kaga b; fer(i,1,16) fer(j,1,16) if(i==j)b.v[i][j]=1; else b.v[i][j]=0; for(;k;k>>=1,a=a*a) if(k&1)b=b*a; return b; } void friend print(kaga a) { fer(i,1,16) { fer(j,1,16) cout<<a.v[i][j]<<" "; cout<<endl; } }}ans,tmp;int main(){ n=read();kk=read(); memset(ans.v,0,sizeof(ans.v)); fer(i,1,16)ans.v[i][i]=1; fer(i,1,n) { ll a=read(),b=read(),c=read()+1; b=min(b,kk); memset(tmp.v,0,sizeof(tmp.v)); fer(j,1,c) fer(k,1,c) if(abs(j-k)<=1)tmp.v[j][k]=1; ll cha=b-a; tmp=tmp^(cha); ans=tmp*ans; } cout<<ans.v[1][1]<<endl; return 0;}
阅读全文
0 0
- 【动态规划21】Codeforces Round #420 821E Okabe and El Psy Kongroo(dp+矩阵快速幂)
- Codeforces Round #420 (Div. 2) E. Okabe and El Psy Kongroo dp+矩阵快速幂
- Codeforces Round #420 (Div. 2) E. Okabe and El Psy Kongroo 矩阵快速幂+dp
- Codeforces Round #420 (Div. 2) E. Okabe and El Psy Kongroo dp+矩阵快速幂
- Codeforces Round #420 (Div. 2) E. Okabe and El Psy Kongroo(矩阵快速幂)
- Codeforces Round #420 (Div. 2) E. Okabe and El Psy Kongroo(矩阵快速幂)
- Codeforces-821E Okabe and El Psy Kongroo(矩阵快速幂+dp)
- Codeforces Round #420 (Div. 2) E. Okabe and El Psy Kongroo [矩阵快速幂]
- Codeforces 821E Okabe and El Psy Kongroo【Dp+矩阵快速幂】套路题
- Codeforces 821E Okabe and El Psy Kongroo(Dp+矩阵快速幂)
- DP 矩阵快速幂 Okabe and El Psy Kongroo:CodeForces
- CF round#420 div.2 E Okabe and El Psy Kongroo【矩阵快速幂】
- 【codefoces821E】 Okabe and El Psy Kongroo【Dp+矩阵快速幂】
- Codeforces Round #420 (Div. 2) 821E. Okabe and El Psy Kongroo
- Codeforces 821E Okabe and El Psy Kongroo 递推+矩阵幂
- codeforce#420 E. Okabe and El Psy Kongroo(图论+矩阵快速幂)
- Codeforeces #420 E. Okabe and El Psy Kongroo 递推加矩阵快速幂
- E. Okabe and El Psy Kongroo(递推+矩阵快速幂)
- 第二天补
- linux 用户和用户组管理
- java集合练习题 <汽车租赁项目 有详解>
- COCOS2d + VS2013 + Python创建一个C++游戏项目
- hdu2892-area 求园和多边形的相交面积模板题
- 【动态规划21】Codeforces Round #420 821E Okabe and El Psy Kongroo(dp+矩阵快速幂)
- Java多态浅析
- 03_ARM汇编自学笔记模型之处理器模式
- 【SpringMVC】参数绑定注解
- Python的网络编程基础
- IO与线程状态
- Autowired 详解
- Java虚拟机 运行时数据区
- AOP的通知类型