洛谷P1719_最大加权矩阵和模板

#include <cstdio>
#include <cstring>
#include <algorithm>

using namespace std;

const int maxn = 122;
const int INF = 2147483640;

int dp[maxn], temp[maxn];
int a[maxn][maxn];
int n;

int solve();

int main()
{
    scanf("%d", &n);
    int i, j;
    for(i = 1; i <= n; ++i)
        for(j = 1; j <= n; ++j)
    {
        scanf("%d", &a[i][j]);
    }
    int ans = solve();
    printf("%d\n", ans);
    return 0;
}

int solve()
{
    int i, j, k;
    int ret = -INF;
    for(i = 1; i <= n; ++i)//枚举行的起点
    {
        memset(temp, 0, sizeof(temp));
        for(j = i; j <= n; ++j)//枚举行的终点
        {
            for(k = 1; k <= n; ++k)//i~j行,第k列的值,压缩维度
                temp[k] += a[j][k];
            memset(dp, 0, sizeof(dp));
            for(k = 1; k <= n; ++k)//dp_最长连续子序列和
            {
                dp[k] = max(temp[k], dp[k-1]+temp[k]);
                ret = max(ret, dp[k]);l
            }
        }
    }
    return ret;
}

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
加权矩阵加权最小二乘法中的一个重要概念,它用于对误差项进行加权,以便更好地拟合时间序列数据。加权矩阵的构造需要使用到加权函数,它描述了观测值之间的关系,通常是一个关于时间差的函数。 在C++代码中,我们使用了指数加权函数来构造加权矩阵,它的权重计算公式为: w_i = exp(-lambda * (t_i - t_n)) 其中,t_i 表示第 i 个观测值的时间戳,t_n 表示最新的观测值的时间戳,lambda 是一个调节指数衰减速率的参数。 具体来说,在构造加权矩阵时,我们需要先定义一个6x6的矩阵W,然后遍历所有的观测值对,计算它们之间的权重,并填充到矩阵W的相应位置上。代码中的实现如下: ```cpp // 定义指数加权函数 double lambda = 0.5; auto weight_fun = [&](double t_i, double t_n) { return exp(-lambda * (t_i - t_n)); }; // 构造加权矩阵 MatrixXd W(6, 6); for (int i = 0; i < 6; i++) { for (int j = 0; j < 6; j++) { double weight = weight_fun(data(i, 0), data(j, 0)); W(i, j) = (i == j) ? weight : 0.0; } } ``` 在上述代码中,我们首先定义了指数加权函数,并使用lambda = 0.5来设置指数衰减速率。然后,我们构造了一个6x6的矩阵W,并使用双重循环遍历所有的观测值对,计算它们之间的权重,并将结果填充到矩阵W的相应位置上。 需要注意的是,矩阵W是一个对称矩阵,且对角线上的元素为1。这是因为每个观测值自身的权重应该为1,且观测值之间的关系应该是对称的。因此,在代码中,我们对于W的对角线元素,直接将它们设置为相应的权重值,而对于非对角线元素,将它们设置为0或相应的权重值。 构造好加权矩阵后,我们就可以使用加权最小二乘法对时间序列数据进行拟合了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值