除了考试,线代还是很有用的

大一上学了线代,脑子里面还没有对线代的具体应用有过认识,听说以后机器学习什么的会用上,但好像学到的时候线代知识也容易忘了……

那么今天就说说在oi里面,我用到线代的知识的题目吧。

矩阵快速幂。

这类题目主要是用来推导公式的,比如经典的斐波那契数列就可以用上这个。

F【n】=F【n-1】+F【n-2】

那么我们求的时候就之间算单位矩阵的n次方就行了,

怎么求呢?其实就是把快速幂里面的整数换成矩阵相乘。代码就不贴了。

矩阵树定理

https://www.cnblogs.com/twilight-sx/p/9064208.html这篇博客有题目也有讲解,十分详细。

矩阵树定理用于求解一个图上的生成树个数。实现方法就是博客里面所说的,求出那个K矩阵后,之间高斯消元,算出行列式,然后就得出答案。

原理是什么我不懂,记住就好。

贴上洛谷模板题P4111 [HEOI2015]小 Z 的房间

#include <bits/stdc++.h>
#define maxn 90
#define mod 1000000000
typedef long long ll;
using namespace std;
const int dx[3]={0,1,0};
const int dy[3]={0,0,1};
ll n, m, f[maxn][maxn];
ll cnt, b[maxn][maxn];
int i,j,k;
char c;
ll Gauss()
{
     ll ans = 1;
    for(int i = 1; i < cnt; i ++)
    {
        for(int j = i + 1; j < cnt; j ++)
            while(f[j][i])
            {
                ll t = f[i][i] / f[j][i];
                for(int k = i; k < cnt; k ++)
                    f[i][k] = (f[i][k] - t * f[j][k] + mod) % mod;
                swap(f[i], f[j]);
                ans = - ans;
            }
        ans = (ans * f[i][i]) % mod;
    }
    return (ans + mod) % mod;
}
int main()
{
    scanf("%d%d",&n,&m);
    //getchar();
    for (i=1;i<=n;i++)
    {
        //getchar();
        for (j=1;j<=m;j++)
        {
        //    getchar();
            cin>>c;
            //cout<<a[i][j];
            if (c==‘.‘) b[i][j]=++cnt;
        }
    }
    //cnt--;
    for (i=1;i<=n;i++)
        for (j=1;j<=m;j++)
        {
            if (b[i][j])
                for (k=1;k<=2;k++)
                {
                    int xx=i+dx[k];
                    int yy=j+dy[k];
                    if (b[xx][yy] && xx>=1 && xx<=n && yy>=1 && yy<=m)
                    {
                        f[b[xx][yy]][b[xx][yy]]++;
                        f[b[i][j]][b[i][j]]++;
                        f[b[xx][yy]][b[i][j]]--;
                        f[b[i][j]][b[xx][yy]]--;
                    }
                }
        }
    printf("%lld\n",Gauss());
    return 0;
}

对了,高斯消元那里最好按照那篇博客里面的那种写法,我想模拟现实中的算法,发现不行,也不知道哪里错。

原文地址:https://www.cnblogs.com/Y-Knightqin/p/12364723.html

时间: 2024-11-06 15:47:49

除了考试,线代还是很有用的的相关文章

线代考试总结&amp;&amp;周记

今天终于考完线代了,因为之前授课老师说今年难度会加大很多,所以把14-18五年的线代卷子做完后就抱着必死的决心考试去了.结果特别幸运,难度并没有加大,无论是难度还是题型都和前5年十分近似.麻钊和我说他们班好多人说难,其实如果昨天下午没有突发奇想把那5套卷子翻出来狂写一晚上,我可能也要凉了. 有必要讲述一下昨晚的情况:从下午两点半开始做,中间洗澡啊拿蓝桥杯的奖啊杂七杂八...下午东九,晚上前段时间在图书馆,图书馆闭馆了后在东十二.第一套,40分,都看不懂题目在问什么.第二套,48,一个10分的递推

重学线代——声明篇

为啥重学线代呢? 1.当初学得模棱两可,时间长了啥也没剩下 2.越来越发现线代很流弊,很有用(不只是线代,各门数学都有此感触) 3.比较巧合地在网络上发现了个很好的线代教学资源 4.假期浪费了太可惜了 你这堆博客要写点啥呢? 课程笔记.个人领悟.无知吐槽.等等等等 你还想说点啥么? 没了 哦 恩

WCF技术剖析之三十:一个很有用的WCF调用编程技巧[上篇]

原文:WCF技术剖析之三十:一个很有用的WCF调用编程技巧[上篇] 在进行基于会话信道的WCF服务调用中,由于受到并发信道数量的限制,我们需要及时的关闭信道:当遇到某些异常,我们需要强行中止(Abort)信道,相关的原理,可以参考我的文章<服务代理不能得到及时关闭会有什么后果?>.在真正的企业级开发中,正如我们一般不会让开发人员手工控制数据库连接的开启和关闭一样,我们一般也不会让开发人员手工去创建.开启.中止和关闭信道,这些工作是框架应该完成的操作.这篇文章,我们就来介绍如果通过一些编程技巧,

Web 开发中很有用的8款在线工具

在工作中借助一些非常好用的工具可以让你专注于更重要的事情,进而提高工作效率.本文收集了一些在 Web 设计和开发中很有帮助的在线工具分享给大家,希望对你有帮助. ProCSSor ProCSSor是一个很不错的CSS代码美化工具,它可以帮助你很轻松的把代码转换成很美观. jsFiddle JsFiddle有多种用途,其中一个用法就是可以在线编辑HTML, CSS 和JavaScript片段,而且代码可以分享,还可以嵌入到你的博客中等等. Frame Box Frame Box是一个非常好用的用于

对于Linux系统管理员很有用的16个在线工具

1. ExplainShell.com 命令解释 ??对于Linux用户来说每天都会写各种命令和脚本,那么你可以使用这个网站工具来查看命令式如何工作的,这样可以避免不必要的错误出现:也是一个很好的学习命令的方式 2. BashrcGenerator.com 定制个性命令提示符 ??简单说就是个性化生成命令提示符,可将生成的代码写入到用户家目录的.bashrc或者可以设置全局变量文件/etc/profile对所有用户生效 ??可参考:http://stackoverflow.com/questio

Web 开发中 20 个很有用的 CSS 库

转自:http://www.oschina.net/translate/css-libraries-for-developers 在过去的几年中,CSS已经成为一大部分开发者和设计者的最爱,因为它提供了一系列功能和特性.每个月都有无数个围绕CSS的工具被开发者发布以简化WEB开发.像CSS 库,框架,应用这样的工具能够为开发者做很多事,而且可以使开发者创造出创新立异的WEB应用. 在这篇文件章中我们找到了一系列对开发者有用的CSS库,它们能帮助开发者在一定的期限内取得有创造性和创新性的成果.我们

19个很有用的 JavaScript库推荐

流行的 JavaScript 库有jQuery,MooTools,Prototype,Dojo和YUI等,这些 JavaScript 库功能丰富,加上它们众多的插件,几乎能实现任何你需要的功能 然而需要实现一些特定的功能,则可以选择功能更专一的轻量库,今天这篇文章与大家分享16个很有用的 JavaScript 库. Blackbird: Open Source JavaScript Logging UtilityBlackbird 是一款非常酷的 JavaScript 调试工具,带有一个漂亮的界

java android布局里的控件值 反射绑定给实体类,实体类绑定给控件,表单提交绑定很有用

注意了:根据实际情况,添加实体里字段的类型,控件类型的判断才可使用.这里控件只有TextView EditText 实体类字段只有String int类型,带值的控件添加tag ,值和实体类的字段值一致 package ice.ui.service; import java.lang.reflect.Field;import java.lang.reflect.InvocationTargetException;import java.lang.reflect.Method;import jav

acdream1075 神奇的%系列三(线代-矩阵-数论)

题目链接:http://115.28.76.232/problem?pid=1075 题意:定义一个f(n)函数,f(n) = a * f(n - 1) + b * f(n - 2), f(1) = c, f(2) = d.问f(n)在模1000000007情况下的最小循环节.即求最小的m,使对任意的n有f(n) % 1000000007 = f(n + m) % 1000000007. 思路: + ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 1