洛谷——P2722 总分 Score Inflation(背包)

USACO竞赛分数最大化问题
本文介绍了一个关于USACO竞赛中如何选择不同类型的题目以最大化总分的问题。通过给定的时间限制和每种类型题目的分数及完成时间,算法能够计算出在规定时间内可以获得的最大分数。

P2722 总分 Score Inflation

题目背景

学生在我们USACO的竞赛中的得分越多我们越高兴。

我们试着设计我们的竞赛以便人们能尽可能的多得分,这需要你的帮助

题目描述

我们可以从几个种类中选取竞赛的题目,这里的一个"种类"是指一个竞赛题目的集合,解决集合中的题目需要相同多的时间并且能得到相同的分数。你的任务是写一个程序来告诉USACO的职员,应该从每一个种类中选取多少题目,使得解决题目的总耗时在竞赛规定的时间里并且总分最大。输入包括竞赛的时间,M(1 <= M <= 10,000)(不要担心,你要到了训练营中才会有长时间的比赛)和N,"种类"的数目1 <= N <= 10,000。后面的每一行将包括两个整数来描述一个"种类":

第一个整数说明解决这种题目能得的分数(1 <= points <= 10000),第二整数说明解决这种题目所需的时间(1 <= minutes <= 10000)。

你的程序应该确定我们应该从每个"种类"中选多少道题目使得能在竞赛的时间中得到最大的分数。

来自任意的"种类"的题目数目可能是任何非负数(0或更多)。

计算可能得到的最大分数。

输入输出格式

输入格式:

 

第 1 行: M, N--竞赛的时间和题目"种类"的数目。

第 2-N+1 行: 两个整数:每个"种类"题目的分数和耗时。

 

输出格式:

 

单独的一行包括那个在给定的限制里可能得到的最大的分数。

 

输入输出样例

输入样例#1: 复制
300 4
100 60
250 120
120 100
35 20
输出样例#1: 复制
605

说明

题目翻译来自NOCOW。

USACO Training Section 3.1

 

#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#define N 45001
using namespace std;
int n,m,f[N],t[N],s[N];
int read()
{
    int x=0,f=1; char ch=getchar();
    while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}
    while(ch>='0'&&ch<='9') x=x*10+ch-'0',ch=getchar();
    return x*f;
}
int main()
{
    n=read(),m=read();
    for(int i=1;i<=m;i++)
     s[i]=read(),t[i]=read();
    for(int i=1;i<=m;i++)
     for(int j=t[i];j<=n;j++)
      f[j]=max(f[j-t[i]]+s[i],f[j]);
    printf("%d",f[n]);
    return  0;
}

 

转载于:https://www.cnblogs.com/z360/p/7898510.html

### 方差膨胀因子 (Variance Inflation Factor, VIF) 方差膨胀因子是一种用于检测多重共线性的统计量。它衡量了一个回归模型中的某个自变量与其他自变量之间的线性关系强度[^1]。具体来说,VIF表示由于其他自变量的存在而导致该自变量的标准误差增加的程度。 #### 计算方法 对于给定的自变量 \( X_i \),其对应的 VIF 可通过以下公式计算: \[ \text{VIF}_i = \frac{1}{1 - R_i^2} \] 其中,\( R_i^2 \) 是通过对 \( X_i \) 进行关于其余自变量的回归所得到的决定系数(即拟合优度)。如果 \( R_i^2 \) 接近于 1,则表明 \( X_i \) 和其他自变量之间存在较强的线性关系,从而导致较高的 VIF 值;反之,如果 \( R_i^2 \) 较低,则说明 \( X_i \) 的独立性强,VIF 值也较低。 以下是 Python 中实现 VIF 计算的一个简单例子: ```python import pandas as pd from statsmodels.stats.outliers_influence import variance_inflation_factor def calculate_vif(X): vif_data = pd.DataFrame() vif_data["feature"] = X.columns vif_data["VIF"] = [variance_inflation_factor(X.values, i) for i in range(X.shape[1])] return vif_data # 示例数据集 data = { 'X1': [1, 2, 3, 4], 'X2': [2, 4, 6, 8], # 几乎完全相关 'X3': [5, 7, 9, 10] } df = pd.DataFrame(data) vif_result = calculate_vif(df[['X1', 'X2', 'X3']]) print(vif_result) ``` #### 解释 通常情况下,当某自变量的 VIF 超过 10 时,可以认为该变量可能受到严重的多重共线性影响,应考虑将其移除或重新构建模型结构。然而,在实际应用中,阈值的选择可能会因领域而异。 另外需要注意的是,即使某些变量具有高 VIF 值,但如果这些变量本身对目标预测非常重要,则不应轻易删除它们。此时可以通过正则化技术(如岭回归 Ridge Regression 或 Lasso 回归)来缓解多重共线性带来的负面影响[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值