洛谷 1707 刷题比赛

/*
矩阵稍微有点难搞 不过也是可以推出来
注意防爆...
*/
#include<iostream>
#include<cstdio>
#include<cstring>
#define ll long long
using namespace std;
ll n,mod,p,q,r,t,u,v,w,x,y,z;
ll f[12][12],a[12][12];
ll slow_mul(ll a,ll b)
{
    ll ans=0;
    while(b)
      {
          if(b&1)
            {
                b--;ans+=a;ans%=mod;
          }
        a<<=1;a%=mod;b>>=1;
      }
    return ans;
}
void mul(ll a[12][12],ll b[12][12])
{
    ll c[12][12];memset(c,0,sizeof(c));
    for(int i=1;i<=11;i++)
      for(int j=1;j<=11;j++)
        for(int k=1;k<=11;k++)
          c[i][j]=(c[i][j]+slow_mul(a[i][k],b[k][j]))%mod;
    for(int i=1;i<=11;i++)
      for(int j=1;j<=11;j++)
        a[i][j]=c[i][j];
}
int main()
{
    cin>>n>>mod>>p>>q>>r>>t>>u>>v>>w>>x>>y>>z;n-=2;
    f[1][1]=f[1][3]=f[1][5]=3;f[1][2]=f[1][4]=f[1][6]=1;
    f[1][7]=f[1][8]=f[1][9]=1;f[1][10]=w;f[1][11]=z;
    a[1][1]=p;a[2][1]=q;a[7][1]=r;a[8][1]=t;a[3][3]=u;
    a[4][3]=v;a[5][5]=x;a[6][5]=y;a[9][5]=a[8][7]=2;
    a[10][10]=w;a[11][11]=z;
    a[1][2]=a[1][3]=a[1][5]=a[3][1]=a[3][4]=a[3][5]=1;
    a[5][1]=a[5][3]=a[7][7]=a[8][5]=a[8][8]=a[9][1]=1;
    a[9][7]=a[9][8]=a[9][9]=a[10][3]=a[11][5]=a[5][6]=1;
    while(n)
      {
          if(n&1)mul(f,a);
          mul(a,a);n>>=1;
      }
    cout<<"nodgd"<<" "<<f[1][1]<<endl;
    cout<<"Ciocio"<<" "<<f[1][3]<<endl;
    cout<<"Nicole"<<" "<<f[1][5]<<endl;
    return 0;
}
时间: 2024-10-11 23:06:41

洛谷 1707 刷题比赛的相关文章

P1707 刷题比赛

P1707 刷题比赛 10通过 38提交 题目提供者nodgd 标签倍增递推矩阵洛谷原创 难度提高+/省选- 提交该题 讨论 题解 记录 最新讨论 不科学 题目背景 nodgd是一个喜欢写程序的同学,前不久洛谷OJ横空出世,nodgd同学当然第一时间来到洛谷OJ刷题.于是发生了一系列有趣的事情,他就打算用这些事情来出题恶心大家…… 题目描述 洛谷OJ当然算是好地方,nodgd同学打算和朋友分享一下.于是他就拉上了他的朋友Ciocio和Nicole两位同学一起刷题.喜欢比赛的他们当然不放过这样一次

洛谷P2070 刷墙 离散化

洛谷P2070 刷墙 离散化题意 区间覆盖 求覆盖了2次以上的线段有多少长 离散化一下,一条线段两个点,2n个点排序一下就行了 1 #include <bits/stdc++.h> 2 #define For(i, j, k) for(int i=j; i<=k; i++) 3 #define Dow(i, j, k) for(int i=j; i>=k; i--) 4 #define LL long long 5 using namespace std; 6 inline int

洛谷图论入门题--基本题必做 图-最短路径-1.信使(msner)

1 //带病打代码的我,心好累,脑子更累. 看到此代码的请给点个赞 ,谢谢. 2 //这个题还是比较简单的,用弗洛伊德完全就能过: 3 /*由衷的感谢江山,帮忙看程序的错误 , 4 5 ,--^----------,--------,-----,-------^--, 6 | ||||||||| `--------' | O 7 `+---------------------------^----------| 8 `\_,-------, _________________________|

AC自动机(附洛谷P3769模板题)

首先,介绍一下AC自动机(Aho-Corasick automaton),是一种在一个文本串中寻找每一个已给出的模式串的高效算法. 在学习AC自动机之前,你需要先学习Trie树和KMP算法,因为AC自动机正式利用并结合了两者的思想. 说到实际的不同,其实AC自动机只是在Trie树上引入了一个类似KMP中next数组的东西叫做Fail指针. 对于每一个节点,Fail指针指向该节点所代表的字符串中,次长的.在Trie树中存在的后缀(因为最长的在Trie树种存在的后缀就是其本身)所代表的节点. 举例:

洛谷——P2658 汽车拉力比赛

P2658 汽车拉力比赛 题目描述 博艾市将要举行一场汽车拉力比赛. 赛场凹凸不平,所以被描述为M*N的网格来表示海拔高度(1≤ M,N ≤500),每个单元格的海拔范围在0到10^9之间. 其中一些单元格被定义为路标.组织者希望给整个路线指定一个难度系数D,这样参赛选手从任一路标到达别的路标所经过的路径上相邻单元格的海拔高度差不会大于D.也就是说这个难度系数D指的是保证所有路标相互可达的最小值.任一单元格和其东西南北四个方向上的单元格都是相邻的. 输入输出格式 输入格式: 第一行两个整数M和N

洛谷P3601签到题(欧拉函数)

题目背景 这是一道签到题! 建议做题之前仔细阅读数据范围! 题目描述 我们定义一个函数:qiandao(x)为小于等于x的数中与x不互质的数的个数. 这题作为签到题,给出l和r,要求求. 输入输出格式 输入格式: 一行两个整数,l.r. 输出格式: 一行一个整数表示答案. 输入输出样例 输入样例#1: 233 2333 输出样例#1: 1056499 输入样例#2: 2333333333 2333666666 输出样例#2: 153096296 说明 对于30%的数据,. 对于60%的数据,.

洛谷2658 汽车拉力比赛

本题地址:http://www.luogu.org/problem/show?pid=2658 题目描述 博艾市将要举行一场汽车拉力比赛. 赛场凹凸不平,所以被描述为M*N的网格来表示海拔高度(1≤ M,N ≤500),每个单元格的海拔范围在0到10^9之间. 其中一些单元格被定义为路标.组织者希望给整个路线指定一个难度系数D,这样参赛选手从任一路标到达别的路标所经过的路径上相邻单元格的海拔高度差不会大于D.也就是说这个难度系数D指的是保证所有路标相互可达的最小值.任一单元格和其东西南北四个方向

洛谷—— P2658 汽车拉力比赛

https://www.luogu.org/problem/show?pid=2658 题目描述 博艾市将要举行一场汽车拉力比赛. 赛场凹凸不平,所以被描述为M*N的网格来表示海拔高度(1≤ M,N ≤500),每个单元格的海拔范围在0到10^9之间. 其中一些单元格被定义为路标.组织者希望给整个路线指定一个难度系数D,这样参赛选手从任一路标到达别的路标所经过的路径上相邻单元格的海拔高度差不会大于D.也就是说这个难度系数D指的是保证所有路标相互可达的最小值.任一单元格和其东西南北四个方向上的单元

洛谷 P2965 [USACO09NOV]农活比赛The Grand Farm-off

P2965 [USACO09NOV]农活比赛The Grand Farm-off 题目描述 Farmer John owns 3*N (1 <= N <= 500,000) cows surprisingly numbered 0..3*N-1, each of which has some associated integer weight W_i (1 <= W_i <= d). He is entering the Grand Farm-off, a farming comp