AGC013 E Placing Squares——模型转化+矩阵乘法
题目:https://atcoder.jp/contests/agc013/tasks/agc013_e
边长的平方,可以看做是在该范围内放两个不同的球的方案数。两个球可以重合。
题意变成:给长为 n 的段放若干隔板,最前/后面有隔板,指定位置不能放隔板,相邻隔板间放两个不同球的方案数。
dp[ 0/1/2 ] 表示从上一个隔板至今已经放了几个球。把 “能放隔板” 和 “不能放隔板” 写成两个转移矩阵,就能转移了。
- #include<cstdio>
- #include<cstring>
- #include<algorithm>
- #define ll long long
- using namespace std;
- int rdn()
- {
- int ret=;bool fx=;char ch=getchar();
- while(ch>''||ch<''){if(ch=='-')fx=;ch=getchar();}
- while(ch>=''&&ch<='')ret=ret*+ch-'',ch=getchar();
- return fx?ret:-ret;
- }
- const int N=1e5+,mod=1e9+;
- int n,m,x[N];
- struct Mtr{
- int a[][];
- Mtr(){memset(a,,sizeof a);}
- Mtr operator* (const Mtr &b)const
- {
- Mtr c;
- for(int i=;i<;i++)
- for(int k=;k<;k++)
- for(int j=;j<;j++)
- c.a[i][j]=(c.a[i][j]+(ll)a[i][k]*b.a[k][j])%mod;
- return c;
- }
- void init()
- {
- for(int i=;i<;i++)for(int j=;j<;j++)a[i][j]=;
- a[][]=a[][]=a[][]=; a[][]=;
- }
- }ans,b0,b1,tp,one;
- void pw(int n)
- {
- b0=one; tp.init();
- while(n)
- { if(n&)b0=b0*tp; tp=tp*tp; n>>=;}
- }
- int main()
- {
- n=rdn();m=rdn();
- for(int i=;i<=m;i++)x[i]=rdn(); x[++m]=n;
- b1.init(); b1.a[][]=b1.a[][]=; b1.a[][]=;
- for(int i=;i<;i++)one.a[i][i]=;
- ans.a[][]=; pw(x[]); ans=ans*b0;
- for(int i=;i<m;i++)
- {
- ans=ans*b1;
- pw(x[i+]-x[i]-); ans=ans*b0;
- }
- printf("%d\n",ans.a[][]);
- return ;
- }
AGC013 E Placing Squares——模型转化+矩阵乘法的更多相关文章
- C# 矩阵乘法实现
矩阵乘法是一种高效的算法可以把一些一维递推优化到log( n ),还可以求路径方案等,所以更是是一种应用性极强的算法.矩阵,是线性代数中的基本概念之一.一个m×n的矩阵就是m×n个数排成m行n列的一个 ...
- CNN卷积神经网络_深度残差网络 ResNet——解决神经网络过深反而引起误差增加的根本问题,Highway NetWork 则允许保留一定比例的原始输入 x。(这种思想在inception模型也有,例如卷积是concat并行,而不是串行)这样前面一层的信息,有一定比例可以不经过矩阵乘法和非线性变换,直接传输到下一层,仿佛一条信息高速公路,因此得名Highway Network
from:https://blog.csdn.net/diamonjoy_zone/article/details/70904212 环境:Win8.1 TensorFlow1.0.1 软件:Anac ...
- 矩阵乘法&&矩阵快速幂&&最基本的矩阵模型——斐波那契数列
矩阵,一个神奇又令人崩溃的东西,常常用来优化序列递推 在百度百科中,矩阵的定义: 在数学中,矩阵(Matrix)是一个按照长方阵列排列的复数或实数集合 ,最早来自于方程组的系数及常数所构成的方阵.这一 ...
- 学习心得:《十个利用矩阵乘法解决的经典题目》from Matrix67
本文来自:http://www.matrix67.com/blog/archives/tag/poj大牛的博文学习学习 节选如下部分:矩阵乘法的两个重要性质:一,矩阵乘法不满足交换律:二,矩阵乘法满足 ...
- HDU 5895 Mathematician QSC(矩阵乘法+循环节降幂+除法取模小技巧+快速幂)
传送门:HDU 5895 Mathematician QSC 这是一篇很好的题解,我想讲的他基本都讲了http://blog.csdn.net/queuelovestack/article/detai ...
- OpenGL学习进程(12)第九课:矩阵乘法实现3D变换
本节是OpenGL学习的第九个课时,下面将详细介绍OpenGL的多种3D变换和如何操作矩阵堆栈. (1)3D变换: OpenGL中绘制3D世界的空间变换包括:模型变换.视图变换.投影变换和视口 ...
- 基于OpenMP的矩阵乘法实现及效率提升分析
一. 矩阵乘法串行实现 例子选择两个1024*1024的矩阵相乘,根据矩阵乘法运算得到运算结果.其中,两个矩阵中的数为double类型,初值由随机数函数产生.代码如下: #include <i ...
- [BZOJ 1875] [SDOI 2009] HH去散步【矩阵乘法】
题目链接:BZOJ - 1875 题目分析: 这道题如果去掉“不会立刻沿着刚刚走来的路走回”的限制,直接用邻接矩阵跑矩阵乘法就可以了.然而现在加了这个限制,建图的方式就要做一些改变.如果我们把每一条边 ...
- 【转】Matrix67:十个利用矩阵乘法解决的经典题目
好像目前还没有这方面题目的总结.这几天连续看到四个问这类题目的人,今天在这里简单写一下.这里我们不介绍其它有关矩阵的知识,只介绍矩阵乘法和相关性质. 不要以为数学中的矩阵也是黑色屏幕上不断变化的 ...
随机推荐
- 拒绝从入门到放弃_《Openstack 设计与实现》必读目录
目录 目录 关于这本书 必看知识点 最后 关于这本书 <Openstack 设计与实现>是一本非常值得推荐的书,为数不多的 Openstack 开发向中文书籍中的精品.如果希望从事 Ope ...
- Vue过渡:JavaScript钩子
一 App.vue <template> <div id="app"> <button @click="show = !show" ...
- 逻辑回归提高阈值对p和r的影响
这里我做了一个实验 也就是随着阈值的增大,precision增加或者不变,recall减少或者不变.
- SQL常用语句之数据库中表的创建、删除以及属性的修改-篇幅3
一.表的创建: CREATE TABLE [database_name.[schema_name].|schema_name.]table_name (column_name1 data_type ...
- struts框架的一些注意点
1.Struts.xml文件中<include file="">标签的运用 用法:此标签引用配置文件,Struts2提供了一个默认的struts.xml文件,当此配置文 ...
- MySQL基础(查)
#新建一个表create database exercise; #查询表的信息SELECT * FROM student;SELECT * FROM score; #查询student表的第二条到第四 ...
- c3p0连接池在spring中的配置
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destr ...
- 爬取王垠的博客并生成pdf
尚未完善,有待改进 #!/usr/bin/env python3 # -*- coding: utf-8 -*- __author__ = 'jiangwenwen' import pdfkit im ...
- 禁止html复制文本
<body class="content" oncontextmenu="return false" onselectstart="return ...
- SqlServer 查看表注释
SELECT DISTINCT d.name, f.value FROM syscolumns a LEFT JOIN systypes b ON a.xusertype= b.xusertype I ...