题意:给n条水平线段点终点高度,只能右上方向走,向右走,右下方向走,只能在第一象限及坐标轴上线段下面运动问到(K,0)有多少种方案

题解:可以推出DP式子,对每一条线段使用快速幂

#include <bits/stdc++.h>
#define maxn 20
using namespace std;
long long mod = 1e9+7, len=20, n, k, sta[110], en[110], c[110];
struct mat{long long m[maxn][maxn];//注意初始化mat friend operator*(mat a,mat b){mat d;memset(d.m, 0, sizeof(d.m));for(int i=0;i<len;i++)for(int j=0;j<len;j++)for(int k=0;k<len;k++)d.m[i][j] = (d.m[i][j]%mod+(a.m[i][k]*b.m[k][j])%mod)%mod;return d;}
};
mat f(mat x,long long num){mat t;memset(t.m, 0, sizeof(t.m));for(int i=0;i<len;i++) t.m[i][i] = 1;while(num){if(num&1) t = t*x;x = x*x;num >>= 1;}return t;
}
int main(){int i,j;mat s, ss;memset(s.m, 0, sizeof(s.m));memset(ss.m, 0, sizeof(ss.m));s.m[0][0] = 1;for(i=0;i<len;i++)for(j=i-1;j<=i+1;j++)if(j>=0&&j<len)ss.m[i][j] = 1;cin>>n>>k;for(i=0;i<n;i++) cin>>sta[i]>>en[i]>>c[i];i = 0;while(i<n&&k>=en[i]){len = c[i]+1;s = s*f(ss, en[i]-sta[i]);i++;}len = c[i]+1;s = s*f(ss, k-en[i-1]);cout<<s.m[0][0]<<endl;return 0;
}

转载于:https://www.cnblogs.com/Noevon/p/7102777.html

Codeforce821E Okabe and El Psy Kongroo相关推荐

  1. E.Okabe and El Psy Kongroo

    传送门 E. Okabe and El Psy Kongroo time limit per test 2 seconds memory limit per test 256 megabytes in ...

  2. codeforce#420 E. Okabe and El Psy Kongroo(图论+矩阵快速幂)

    题目链接 E. Okabe and El Psy Kongroo 分析 首先对于坐标为 (x,y)(x,y) 的点,设 f(x,y)f(x,y) 表示从原点到 (x,y)(x,y) 的路径不难得到递推 ...

  3. 【codeforces 821E】Okabe and El Psy Kongroo

    [题目链接]:http://codeforces.com/problemset/problem/821/E [题意] 一开始位于(0,0)的位置; 然后你每次可以往右上,右,右下3走一步; (x+1, ...

  4. CF821 E. Okabe and El Psy Kongroo 矩阵快速幂

    LINK 题意:给出$n$条平行于x轴的线段,终点$k$坐标$(k <= 10^{18})$,现在可以在线段之间进行移动,但不能超出两条线段的y坐标所夹范围,问到达终点有几种方案. 思路:刚开始 ...

  5. [CF 821E] Okabe and El Psy Kongroo

    题目 洛谷 题意 给定一个二维坐标系和一些线段,求从 (0,0)(0,0)(0,0) 走到 (k,0)(k,0)(k,0) 的方案总数.若当前坐标为 (x,y)(x,y)(x,y),下一步可以拓展到 ...

  6. CF821E Okabe and El Psy Kongroo

    一.题目 点此看题 好像某谷还没有翻译,建议翻译看看第一篇题解(还有一个提示比较重要) 二.解法 首先不考虑线段的限制,容易写出式子dp[i][j]=dp[i−1][j]+dp[i−1][j+1]+d ...

  7. CF821E 【Okabe and El Psy Kongroo】

    首先我们从最简单的dp开始 \(dp[i][j]=dp[i-1][j]+dp[i-1][j+1]+dp[i-1][j-1]\) 然后这是一个O(NM)的做法,肯定行不通,然后我们考虑使用矩阵加速 \( ...

  8. cf 821E Okabe and El Psy Kongroo(矩阵快速幂)

    链接:http://codeforces.com/problemset/problem/821/E 分析:由于有边界而且不同段边界还不同,直接算是不行的..k是1e18,dp也不行..用一个16维的向 ...

  9. EL PSY CONGROO

    加粗样式 #include <bits/stdc++.h> using namespace std; int mod = 98319; vector<int> edge[100 ...

最新文章

  1. C语言 字符串和字符串数组动态分配及赋值
  2. boost 库 enable_shared_from_this 实现原理分析
  3. java lambda表达式详解_Java8新特性Lambda表达式详解
  4. 【转载】java读取.properties配置文件的几种方法
  5. Codeforces 313
  6. 动态规划求解装箱问题(洛谷P1049题题解,Java语言描述)
  7. charcoal editor installation
  8. 杭电1232(图—并查集)
  9. Andorid音频工具tinymix,tinyplay,tinycap使用
  10. Linux svn服务器自身回退版本
  11. Python 从底层结构聊 Beautiful Soup 4(内置豆瓣最新电影排行榜爬取案例)
  12. 怎样才能压缩PDF文件大小
  13. 怎么在自己的网站中插入网易云播放器
  14. 计算机网络常见协议英文全称
  15. 智慧城市的应用挑战,昇腾AI给出了新解法
  16. 用Word编辑论文的小经验(转)
  17. HBase 在滴滴出行的应用场景和最佳实践
  18. WMS多仓库调拨模块设计
  19. 阿里巴巴新手,如何入门,该从哪里开始学习-阿里巴巴学习--潭州阿里巴巴
  20. 易基因:染色质免疫共沉淀测序(ChIP-seq)的数据挖掘思路 |干货系列

热门文章

  1. 面向对象(static关键字)
  2. javascript:加入收藏的代码
  3. NVIDIA NeMo 简介——教程和示例
  4. 旁流综合水处理器的安装与连接技巧
  5. 堡垒机如何传输文件_堡垒机环境下使用putty传输文件
  6. Marvelous Necklace Gym - 102020M
  7. “疯狂”抗癌史:从以毒攻毒,再到用犯人进行试验,成就一个诺奖
  8. 暗时间(普通的一种时间概念)
  9. 方便记忆的电话号码C语言
  10. 《零基础入门学习Python》读书笔记