首页 > 其他分享 >2024寒假自主提升日记

2024寒假自主提升日记

时间:2024-02-12 13:22:43浏览次数:31  
标签:begin ma ll 2024 寒假 bmatrix ans end 日记

2.7

闲话

做题纪要

SP26368 PWRANDMOD - Power and Mod

  • 龟速乘板子。

    点击查看代码
    #define ll __int128_t 
    ll read()
    {
        ll x=0,f=1;
        char c=getchar();
        while(c>'9'||c<'0')
        {
            if(c=='-')
            {
                f=-1;
            }
            c=getchar();
        }
        while('0'<=c&&c<='9')
        {
            x=x*10+c-'0';
            c=getchar();
        }
        return x*f;
    }
    void write(ll x)
    {
        if(x<0)
        {
            putchar('-');
            x=-x;
        }
        if(x>9)
        {
            write(x/10);
        }
        putchar((x%10)+'0');
    }
    ll smul(ll a,ll b,ll p)
    {
        ll ans=0;
        while(b>0)
        {
            if(b&1)
            {
                ans=(ans+a)%p;
            }
            b>>=1;
            a=(a+a)%p;
        }
        return ans;
    }
    ll qpow(ll a,ll b,ll p)
    {
        ll ans=1;
        while(b>0)
        {
            if(b&1)
            {
                ans=smul(ans,a,p);
            }
            b>>=1;
            a=smul(a,a,p);
        }
        return ans;
    }
    int main()
    {
        ll t,a,b,p,i;
        t=read();
        for(i=1;i<=t;i++)
        {
            a=read();
            b=read();
            p=read();
            write(qpow(a,b,p));
            cout<<endl;
        }
        return 0;
    }
    

SP277 CTGAME - City Game

2.8

闲话

做题纪要

2.9

闲话

做题纪要

luogu P2440 木材加工

  • 简单的二分答案,为什么我考场上没有看出来醉了。

  • 注意可能会出现除数为 \(0\) 的情况,即 \(mid=\left\lfloor\dfrac{0+1}{2}\right\rfloor=0\) 时。将二分左端点初始化为 \(1\) 或对 \(mid=0\) 进行特判即可。

    点击查看代码
    int a[1000001];
    bool check(int mid,int n,int m)
    {
        int sum=0,i;
        for(i=1;i<=n;i++)
        {
            sum+=a[i]/mid;
        }
        return sum>=m;
    }
    int main()
    {
        int n,m,ans,l=1,r=0,mid,i;
        cin>>n>>m;
        for(i=1;i<=n;i++)
        {
            cin>>a[i];
            r=max(r,a[i]);
        }
        while(l<=r)
        {
            mid=(l+r)/2;
            if(check(mid,n,m)==true)
            {
                ans=mid;
                l=mid+1;
            }
            else
            {
                r=mid-1;
            }
        }
        cout<<ans<<endl;
        return 0;
    }
    

CF1331G Lingua Romana

  • 愚人节的题,建议去看官方题解要简化题意。

    点击查看代码
    double a[1001];
    int main()
    {
        int i;
        for(i=1;i<=11;i++)
        {
            cin>>a[i];
        }
        for(i=11;i>=1;i--)
        {
            if(a[i]<5)
            {
                printf("f(%.0lf) = %.2lf\n",a[i],5*a[i]*a[i]*a[i]+sqrt(abs(a[i])));
            }
            else
            {
                printf("f(%.0lf) = MAGNA NIMIS!\n",a[i]);
            }
        }
        return 0;
    }
    

2.10

闲话

做题纪要

HZOJ 863. 金牌

luogu P8670 [蓝桥杯 2018 国 B] 矩阵求和

2.11

闲话

做题纪要

luogu P4783 【模板】矩阵求逆

  • 矩阵求逆板子。

  • 若对于矩阵 \(A\) 存在一个矩阵 \(A^{-1}\) 使得 \(A \times A^{-1}=I\) 且 \(A^{-1} \times A =I\) ,其中 \(I\) 为单位矩阵 \(I= \begin{bmatrix} 1 & 0 & \cdots & 0 \\ 0 & 1 & \cdots & 0 \\ \vdots & \vdots & \ddots & \vdots \\ 0 & 0 & \cdots & 1 \end{bmatrix}\) ,则称 \(A\) 是可逆的且逆是唯一的, \(A^{-1}\) 为 \(A\) 的逆矩阵。

  • 已知 \(\begin{bmatrix} A & I \end{bmatrix}\) ,考虑将其变成 \(\begin{bmatrix} I & A^{-1} \end{bmatrix}\) 。第一种方法是 \(\begin{bmatrix} A & I \end{bmatrix} \times A^{-1}= \begin{bmatrix} I & A^{-1} \end{bmatrix}\) ;另一种方法是对 \(A\) 进行高斯消元,使其变成系数为 \(1\) 的对角矩阵,变成 \(\begin{bmatrix} I & A^{-1} \end{bmatrix}\) 。

    点击查看代码
    ll a[1001][1001];
    ll qpow(ll a,ll b,ll p)
    {
        ll ans=1;
        while(b>0)
        {
            if(b&1)
            {
                ans=ans*a%p;
            }
            b>>=1;
            a=a*a%p;
        }
        return ans;
    }
    int main()
    {
        ll n,inv,val=0,flag=0,i,j,k,p=1000000007;
        cin>>n;
        for(i=1;i<=n;i++)
        {
            a[i][i+n]=1;
            for(j=1;j<=n;j++)
            {
                cin>>a[i][j];
            }
        }
        for(i=1;i<=n;i++)
        {
            val=i;
            for(j=i+1;j<=n;j++)
            {
                if(abs(a[j][i])-abs(a[val][i])>0)
                {
                    val=j;
                }
            }
            for(j=1;j<=2*n;j++)
            {
                swap(a[i][j],a[val][j]);
            }
            if(a[i][i]==0)
            {
                flag=1;
                cout<<"No Solution"<<endl;
                break;
            }
            else
            {
                inv=qpow(a[i][i],p-2,p);
                for(j=1;j<=n;j++)
                {
                    if(j!=i)
                    {
                        for(k=i+1;k<=2*n;k++)
                        {
                            a[j][k]=(a[j][k]-a[i][k]*(a[j][i]*inv%p)%p+p)%p;		
                        }
                    }
                }
                for(j=1;j<=2*n;j++)
                {
                    a[i][j]=a[i][j]*inv%p;
                }
            }
        }
        if(flag==0)
        {
            for(i=1;i<=n;i++)
            {
                for(j=n+1;j<=2*n;j++)
                {
                    cout<<a[i][j]<<" ";
                }
                cout<<endl;
            }
        }
        return 0;
    }	
    

2.12

闲话

做题纪要

luogu P2044 [NOI2012] 随机数生成器

  • 令 \(F_{n}=\begin{bmatrix} x_{n} & c \end{bmatrix}\) ,容易有 \(\begin{aligned} F_{n} &=\begin{bmatrix} x_{n} & c \end{bmatrix} \\ &=\begin{bmatrix} x_{n-1} & c \end{bmatrix} \times \begin{bmatrix} a & 0 \\ 1 & 1 \end{bmatrix} \\ &=\begin{bmatrix} x_{n-2} & c \end{bmatrix} \times \begin{bmatrix} a & 0 \\ 1 & 1 \end{bmatrix}^{2} \\ &=\begin{bmatrix} x_{n-3} & c \end{bmatrix} \times \begin{bmatrix} a & 0 \\ 1 & 1 \end{bmatrix}^{3} \\ &=\dots \\ &=\begin{bmatrix} x_{0} & c \end{bmatrix} \times \begin{bmatrix} a & 0 \\ 1 & 1 \end{bmatrix}^{n} \\ &=F_{0} \times \begin{bmatrix} a & 0 \\ 1 & 1 \end{bmatrix}^{n} \end{aligned}\) 。

    点击查看代码
    struct Matrix
    {
        ll ma[5][5];
        Matrix()
        {
            memset(ma,0,sizeof(ma));
        }
    }f,a;
    ll read()
    {
        ll x=0,f=1;
        char c=getchar();
        while(c>'9'||c<'0')
        {
            if(c=='-')
            {
                f=-1;
            }
            c=getchar();
        }
        while('0'<=c&&c<='9')
        {
            x=x*10+c-'0';
            c=getchar();
        }
        return x*f;
    }
    void write(ll x)
    {
        if(x<0)
        {
            putchar('-');
            x=-x;
        }
        if(x>9)
        {
            write(x/10);
        }
        putchar((x%10)+'0');
    }
    Matrix mul(Matrix a,Matrix b,ll n,ll m,ll k,ll p)
    {
        Matrix c;
        for(ll i=1;i<=n;i++)
        {
            for(ll j=1;j<=k;j++)
            {
                for(ll h=1;h<=m;h++)
                {
                    c.ma[i][j]=(c.ma[i][j]+(a.ma[i][h]%p)*(b.ma[h][j]%p)%p)%p;
                }
            }
        }
        return c;
    }
    Matrix qpow(Matrix a,ll b,ll p,ll n)
    {
        Matrix ans;
        for(ll i=1;i<=n;i++)
        {
            ans.ma[i][i]=1;
        }
        while(b>0)
        {
            if(b&1)
            {
                ans=mul(ans,a,n,n,n,p);
            }
            b>>=1;
            a=mul(a,a,n,n,n,p);
        }
        return ans;
    }
    int main()
    {
        ll p,b,g,n=1,m=2,k=2;
        p=read();
        a.ma[1][1]=read();
        f.ma[1][2]=read();
        f.ma[1][1]=read();
        b=read();
        g=read();
        a.ma[1][2]=0;
        a.ma[2][1]=a.ma[2][2]=1;
        write(mul(f,qpow(a,b,p,m),n,m,k,p).ma[1][1]%g);
        return 0;
    }
    

BZOJ4128 Matrix

  • map 重载运算符即可。

  • 因常数巨大,故尽可能减少 \(BSGS\) 中多次矩阵快速幂的使用。

    点击查看代码
    ll n;
    struct Matrix
    {
        ll ma[80][80];
        Matrix()
        {
            memset(ma,0,sizeof(ma));
        }
        bool operator < (Matrix another) const
        {
            for(ll i=1;i<=n;i++)
            {
                for(ll j=1;j<=n;j++)
                {
                    if(ma[i][j]<another.ma[i][j])
                    {
                        return true;
                    }
                    if(ma[i][j]>another.ma[i][j])
                    {
                        return false;
                    }
                }
            }
            return false;
        }
    }a,b;
    Matrix mul(Matrix a,Matrix b,ll n,ll m,ll k,ll p)
    {
        Matrix c;
        for(ll i=1;i<=n;i++)
        {
            for(ll j=1;j<=k;j++)
            {
                for(ll h=1;h<=m;h++)
                {
                    c.ma[i][j]=(c.ma[i][j]+a.ma[i][h]*b.ma[h][j]%p)%p;
                }
            }
        }
        return c;
    }
    Matrix qpow(Matrix a,ll b,ll p,ll n)
    {
        Matrix ans;
        for(ll i=1;i<=n;i++)	
        {	
            ans.ma[i][i]=1;
        }
        while(b>0)
        {
            if(b&1)
            {
                ans=mul(ans,a,n,n,n,p);
            }
            b>>=1;
            a=mul(a,a,n,n,n,p);
        }
        return ans;
    }
    ll bsgs(Matrix a,Matrix b,ll p,ll n)
    {
        map<Matrix,ll>vis;
        ll k=sqrt(p)+1,i;
        Matrix sum;
        for(i=0;i<=k-1;i++)
        {
            b=(i==0)?b:mul(b,a,n,n,n,p);
            vis[b]=i;
        }
        a=qpow(a,k,p,n);
        for(i=1;i<=n;i++)
        {
            sum.ma[i][i]=1;
        }
        for(i=0;i<=k;i++)
        {
            sum=(i==0)?sum:mul(sum,a,n,n,n,p);
            if(vis.find(sum)!=vis.end())
            {
                if(i*k-vis[sum]>=0)
                {
                    return i*k-vis[sum];
                }
            }
        }
        return -1;
    }
    int main()
    {
        ll p,i,j;
        cin>>n>>p;
        for(i=1;i<=n;i++)
        {
            for(j=1;j<=n;j++)
            {
                cin>>a.ma[i][j];
                a.ma[i][j]%=p;
            }
        }
        for(i=1;i<=n;i++)
        {
            for(j=1;j<=n;j++)
            {
                cin>>b.ma[i][j];
                b.ma[i][j]%=p;
            }
        }
        cout<<bsgs(a,b,p,n)<<endl;
        return 0;
    }	
    

luogu P3216 [HNOI2011]数学作业

luogu P4159 [SCOI2009] 迷路

  • 令 \(f_{i,j}\) 表示第 \(i\) 时刻走到 \(j\) 的不同路径数量。状态转移方程为 \(f_{i,j}=\sum\limits_{(k,j) \in E}^{}[i-dis_{k,j} \ge 0] \times f_{i-dis_{k,j},k}\) ;特别地,规定 \(f_{0,1}=1\) 。

luogu P2151 [SDOI2009] HH去散步

luogu P3193 [HNOI2008]GT考试

标签:begin,ma,ll,2024,寒假,bmatrix,ans,end,日记
From: https://www.cnblogs.com/The-Shadow-Dragon/p/18013803

相关文章

  • #13 2024.2.8
    大概能从#12和#13的日期看出,博主到底摆了多久。博主没救了呜呜呜wuwuwuwuuwu。hbxql。568.xsy5348栞569.xsy5349Metropolis570.xsy5350bus571.xsy5351重排572.xsy5352黄焖鸡573.xsy5353Utopiosphere574.loj3706「ZJOI2022」树updateon2024.2.11:康......
  • 逆向实战29——某度-某家号2024旋转验证码识别
    前言本文章中所有内容仅供学习交流,抓包内容、敏感网址、数据接口均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关,若有侵权,请联系我立即删除!目标网站aHR0cHM6Ly9hdXRob3IuYmFpZHUuY29tL2hvbWU/ZnJvbT1iamhfYXJ0aWNsZSZhcHBfaWQ9MTU2NTA5MjE0MjUwO......
  • 2024牛客寒假算法基础集训营2 补题
    2024牛客寒假算法基础集训营2补题A.TokitsukazeandBracelet签到模拟参考代码:#include<bits/stdc++.h>usingnamespacestd;#definefffirst#definesssecond#defineebemplace_back#defineall(u)u.begin(),u.end()#defineendl'\n'#definedebug(x)cout......
  • 2024春晚刘谦魔术揭秘
    2024春晚刘谦魔术揭秘!魔术步骤任意4张扑克牌,叠在一起对半撕开,再叠在一起名字有几个字,就把几张扑克,依次放到最下面再将最上面3张,插到剩下扑克牌的中间任意位置拿出最上面一张扑克牌藏起来任意拿出一张、两张或三张扑克牌,再插到剩下扑克牌的中间任意位置如果是男生拿一张,如......
  • 寒假训练 2024/2/11凌晨
    紫书uva437标签:二位偏序,区间dp题意:给$n$种长方体,每种有无限块,要求罗列最高的高度。限制条件是在下面的长方体的长和宽要严格大于上面的。思路:思路很简单,题目给的$n的范围[1,50]$,模拟一下我们可以推断,每一种长方体有$A_3^{3}=6$种排列方式,我们把每一种的六种排列方式......
  • 2024/2/10学习进度笔记
    RDD,学名可伸缩的分布式数据集(ResilientDistributedDataset)。是一种对数据集形态的抽象,基于此抽象,使用者可以在集群中执行一系列计算,而不用将中间结果落盘。而这正是之前MR抽象的一个重要痛点,每一个步骤都需要落盘,使得不必要的开销很高。对于分布式系统,容错支持是必不可少的。......
  • 假期摸鱼日记
    2.10(大年初一)今天是大年初一,早上吃水饺,然后在家窝着,下午睡到四点,然后打开了celeste,发现自己是一个废物,果断选择了放弃,下午我妈说要出去玩,我觉得没意思就没去,我妈让我写会儿作业,只看了一眼,我就被电离水解平衡彻底打败,果断选择摆烂,开始推gal,摸鱼就是爽捏,但是感觉刷短视频纯纯就是浪......
  • BeginCTF 2024(自由赛道)MISC
    realcheckin题目:从catf1y的笔记本中发现了这个神秘的代码MJSWO2LOPNLUKTCDJ5GWKX3UN5PUEM2HNFXEGVCGL4ZDAMRUL5EDAUDFL5MU6VK7O5UUYMK7GEYWWZK7NE3X2===你能帮助我找到最后的flag吗?我的解答:base32解码begin{WELCOMe_to_B3GinCTF_2024_H0Pe_YOU_wiL1_11ke_i7}下一站上岸......
  • 2024年应该关注的十大人工智能创新
    人工智能(AI)不再只是一个流行词,它已成为我们日常生活的重要组成部分。人工智能在去年深入地融入我们社会的各个方面,改变我们的生活方式、工作方式以及与技术互动的方式。今年是大年初一,我们将探讨2024年可能出现的十大人工智能创新,拥抱这些即将到来的人工智能创新,可以为一个充满激......
  • 关于刘谦2024春晚的数学游戏原理
    自己想出来的!首先牌的顺序肯定是形如\(ABCDABCD\)。将牌的顺序考虑成一个字符环。按照名字长度对该字符环进行左移,本质上没有打乱这个环的顺序。因此在置换后,牌的顺序还是会形如\(ABCDABCD\)。将前三张随机放到牌堆中间,我们发现此时牌堆顶和牌堆底的两张牌是一样的。因此......