首页 > 其他分享 >『模拟赛』暑假集训CSP提高模拟10

『模拟赛』暑假集训CSP提高模拟10

时间:2024-07-28 17:21:27浏览次数:11  
标签:aa 10 ch bb ll bmatrix CSP 模拟

Rank

image

A. 黑暗型高松灯

原[CF1025G] Company Acquisitions

第一题直接上黑。

B. 速度型高松灯

原[HNOI2011] 数学作业

想递推来着,但确实没考虑矩阵加速。

对矩阵的掌握感觉也没那么好了,找机会复习得。

按照下发题解里的矩阵是这样的:

\[\begin{bmatrix} dp_i\\ i+1\\ 1 \end{bmatrix} = \begin{bmatrix} 10^k & 1 & 0\\ 0 & 1 & 1\\ 0 & 0 & 1 \end{bmatrix} \begin{bmatrix} dp_{i-1}\\ i\\ 1 \end{bmatrix} \]

注意这个 \(k\) 是指 \(i\) 的位数,所以在对 \(n\) 以下不同位数要不同考虑。

还有就是,矩阵里的 \(10^k\) 这一项可以提前取模,但指数上不行,所以求这一项的时候保留原型。

点击查看丑陋的代码
#include<bits/stdc++.h>
#define fo(x,y,z) for(register int (x)=(y);(x)<=(z);(x)++)
#define fu(x,y,z) for(register int (x)=(y);(x)>=(z);(x)--)
using namespace std;
typedef unsigned long long ll;
#define lx ll
inline lx qr()
{
	char ch=getchar();lx x=0,f=1;
	for(;ch<'0'||ch>'9';ch=getchar())if(ch=='-')f=-1;
	for(;ch>='0'&&ch<='9';ch=getchar())x=(x<<3)+(x<<1)+(ch^48);
	return x*f;
}
#undef lx
#define qr qr()
const int Ratio=0;
const int N=2e5+5;
ll n,mod;
int tot;
struct rmm
{
    ll a[5][5];
    rmm(){memset(a,0,sizeof a);}
};
rmm mul(rmm a,rmm b,int x,int y,int z)
{
    rmm c;
    fo(i,0,x-1)
        fo(j,0,y-1)
            fo(k,0,z-1)
                c.a[i][j]=(c.a[i][j]+a.a[i][k]*b.a[k][j]%mod+mod)%mod;
    return c;
}
rmm pow(rmm a,ll t)
{
    rmm b;
    fo(i,0,2) b.a[i][i]=1;
    while(t)
    {
        if(t&1) b=mul(a,b,3,3,3);
        a=mul(a,a,3,3,3);
        t>>=1;
    }
    return b;
}
namespace Wisadel
{
    ll Wqp(ll x,ll y)
    {
        ll res=1;
        while(y)
        {
            if(y&1) res=res*x;
            x=x*x;
            y>>=1;
        }
        return res;
    }
    short main()
    {
        // freopen(".in","r",stdin),freopen(".out","w",stdout);
        n=qr,mod=qr;
        ll xax=n;
        while(xax) tot++,xax/=10;
        rmm aa,bb;
        aa.a[0][0]=0,aa.a[0][1]=1,aa.a[0][2]=1;
        // bb.a[0][1]=0,bb.a[0][2]=0;
        // bb.a[1][0]=1,bb.a[1][1]=1,bb.a[1][2]=0;
        // bb.a[2][0]=0,bb.a[2][1]=1,bb.a[2][2]=1;
        fo(i,1,tot-1)
        {// 位数
            ll bol=Wqp(10,i);
            bb.a[0][0]=bol%mod,bb.a[0][1]=0,bb.a[0][2]=0;
            bb.a[1][0]=1,bb.a[1][1]=1,bb.a[1][2]=0;
            bb.a[2][0]=0,bb.a[2][1]=1,bb.a[2][2]=1;
            bb=pow(bb,bol-bol/10);
            aa=mul(aa,bb,1,3,3);
        }
        ll bol=Wqp(10,tot);
        bb.a[0][0]=bol%mod,bb.a[0][1]=0,bb.a[0][2]=0;
        bb.a[1][0]=1,bb.a[1][1]=1,bb.a[1][2]=0;
        bb.a[2][0]=0,bb.a[2][1]=1,bb.a[2][2]=1;
        bb=pow(bb,n+1-bol/10);
        aa=mul(aa,bb,1,3,3);
        printf("%lld\n",aa.a[0][0]);
        return Ratio;
    }
}
signed main(){return Wisadel::main();}

C. 力量型高松灯

原 P6156 简单题

感觉不是那么简单,需要用莫反,硬推式子应该也能做,等我推一推。

D. 高松灯

原[AGC021A] Digit Sum 2

调换 T1 T4 顺序可真是神了,导致我以为难度是降序所以 T2 打完暴力就摆了。

贪一下就行了,只有两种情况,一种就是原数,另一种是原数的最高位减一,剩下全是 \(9\)。

状态还是不行,睡过头导致的。

明天开始还是早起去跑步吧。

放这套一眼全是数学的题估计就是为了让我们抓抓这个薄弱项,确实,菜就得多练。


完结撒花~

标签:aa,10,ch,bb,ll,bmatrix,CSP,模拟
From: https://www.cnblogs.com/Ratio-Yinyue1007/p/18328471

相关文章

  • Python用GARCH、离散随机波动率模型DSV模拟和估计股
    原文链接:http://tecdat.cn/?p=25165 原文出处:拓端数据部落公众号这篇文章介绍了一类离散随机波动率模型,并介绍了一些特殊情况,包括GARCH和ARCH模型。本文展示了如何模拟这些过程以及参数估计。本文为这些实验编写的Python代码在文章末尾引用。离散随机波动率模型是一个......
  • 算法笔记|Day10栈与队列II
    算法笔记|Day10栈与队列II☆☆☆☆☆leetcode150.逆波兰表达式求值题目分析代码☆☆☆☆☆leetcode239.滑动窗口最大值题目分析代码☆☆☆☆☆leetcode347.前K个高频元素(待补充)题目分析代码☆☆☆☆☆leetcode150.逆波兰表达式求值题目链接:leetcode150.......
  • gym102114K. Kaleidoscope
    神必burnside题题目大意给出一个60面体,求用n种颜色染色的方案数(旋转同构),第i种要用至少\(c_i\)次对p取模(p不是质数)展开图:题解显然一眼burnside/polya,考虑求出所有的置换感受一下,一个二维的正方形需要1种顺时针旋转90°得到所有置换,一个三维的正方体需要2种90°旋转得到所......
  • STM32F103 SPI详解及示例代码
    1SPI协议详解 SPI是串行外设接口(SerialPeripheralInterface)的缩写,是美国摩托罗拉公司(Motorola)最先推出的一种同步串行传输规范,也是一种单片机外设芯片串行扩展接口,是一种高速、全双工、同步通信总线,所以可以在同一时间发送和接收数据,SPI没有定义速度限制,通常能达到甚至超过10......
  • web期末作业设计网页/web前端开发期末大作业/html css网页制作成品(第51-60套/总计100
     博主介绍:黄菊华老师《Vue.js入门与商城开发实战》《微信小程序商城开发》图书作者,CSDN博客专家,在线教育专家,CSDN钻石讲师;专注大学生毕业设计教育和辅导。所有项目都配有从入门到精通的基础知识视频课程,学习后应对毕业设计答辩。项目配有对应开发文档、开题报告、任务书、P......
  • 一文掌握YOLOv1-v10
    引言YOLO目标检测算法,不过多介绍,是基于深度学习的目标检测算法中最出名、发展最好的检测器,没有之一。本文简要的介绍一下从YOLOv1-YOLOv10的演化过程,详细技术细节不过多介绍,只提及改进点,适合初学者当综述阅读,也适合有基础的同学用于复习回顾。YOLO系列检测器的整体结构包......
  • 暑假集训SCP提高模拟10
    我(看着百度百科):我已经知道这场谁组的题了CTH:谁我:你想想,能在模拟赛里塞四道数学题还玩邦的,还能有谁CTH:我不知道我:我不知道CTH:我知道了我:我知道了我:我是BobB.速度型高松灯很容易发现一种暴力思路:每次都将答案乘以对应的位数,然后直接把要加的数加进去,暴力模一下,不......
  • LeetCode1005. K 次取反后最大化的数组和
    题目链接:https://leetcode.cn/problems/maximize-sum-of-array-after-k-negations/description/题目叙述:给你一个整数数组nums和一个整数k,按以下方法修改该数组:选择某个下标i并将nums[i]替换为-nums[i]。重复这个过程恰好k次。可以多次选择同一个下标i。以这种......
  • 【HW系列】事前准备(10):事前阶段小结
    本章为该系列的第10篇,也是事前准备阶段的第10篇,通过本章做个小结,来结束事前准备阶段的介绍,从下一篇开始,将正式进入事中迎战阶段。有幸观摩过一场线下沙龙,在讨论过程中,我发现不同性质的企业,安全的建设方案完全不一样。当时在讨论邮件安全的议题,一位互联网公司的小伙直接打趣金融行......
  • 【Linux应用编程】Day10_进程 一文详细剖析进程,从基本概念到创建再到进程操作直至消亡
    进程详细剖析进程,包括以下内容:⚫程序与进程基本概念;⚫程序的开始与结束;⚫进程的环境变量与虚拟地址空间;⚫进程ID;⚫fork()创建子进程;⚫进程的消亡与诞生;⚫僵尸进程与孤儿进程;⚫父进程监视子进程;⚫进程关系与进程的六种状态;⚫守护进程;⚫进程间通信概......