202012-2 期末预测之最佳阈值

简介: 202012-2 期末预测之最佳阈值

24f4d7c21f3f464a986c25fe8586458d.jpg

a4f343cbb9c143aab0e8edfbdf256343.jpg

70分代码:

/*暴力70*/
#include <bits/stdc++.h>
using namespace std;
const int maxn = 1005;
int m;
struct point
{
  int y;
  int result;
} a[maxn];
int theta[maxn];
int cmp(point a1, point a2)
{
  if (a1.y < a2.y)
  {
    return true;
  }
  return false;
}
int main()
{
  cin >> m;
  for (int i = 1; i <= m; i++) // 选预测准确率最高的
  {
    cin >> a[i].y >> a[i].result;
  }
  int ans = 0;
  int ansnum = 0;
  sort(a + 1, a + 1 + m, cmp);
  for (int i = 1; i <= m; i++)
  { // 选第i个的y作为theta
    int sum = 0;
    for (int j = 1; j <= m; j++)
    { // 算正确次数
      if ((a[j].y >= a[i].y && a[j].result == 1) || (a[j].y < a[i].y && a[j].result == 0))
      {
        sum++;
      }
    }
    if (sum >= ansnum)
    {
      ans = a[i].y;
      ansnum = sum;
    }
  }
  cout << ans;
}


100分代码:

/*前缀和100*/
#include <bits/stdc++.h>
using namespace std;
const int maxn = 100005;
int m;
struct point
{
  int y;
  int result;
} a[maxn];
int theta[maxn];
int cmp(point a1, point a2)
{
  if (a1.y < a2.y)
  {
    return true;
  }
  return false;
}
struct nn
{ // 每个theta 01个数前缀和
  int theta;
  int zero;
  int one;
} num[maxn];
int main()
{
  cin >> m;
  for (int i = 1; i <= m; i++) // 输入
  {
    cin >> a[i].y >> a[i].result;
  }
 
  sort(a + 1, a + 1 + m, cmp);//按从小到大对yi排序
  int uu = 1;//记录theta个数
  a[m + 1].y = a[m].y;
  a[m + 1].result = a[m].result;
  num[1].theta = a[1].y;
  for (int i = 1; i <= m; i++)
  {
    if (a[i].y != a[i + 1].y)
    {
      if (a[i].result == 1)
      {
        num[uu].one++;
      }
      else
      {
        num[uu].zero++;
      }
      uu++;
      num[uu].theta = a[i + 1].y;
      num[uu].zero += num[uu - 1].zero;
      num[uu].one += num[uu - 1].one; // 前缀和
    }
    else
    {
      if (a[i].result == 1)
      {
        num[uu].one++;
      }
      else
      {
        num[uu].zero++;
      }
    }
  }
  int ans = 0;
  int ansnum = 0;
  for (int i = 1; i <= uu; i++)
  { // 选第i个作为theta
    int sum = 0;
    if (i == 1)
    {
      sum = num[uu].one;
      if (sum >= ansnum)
      {
        ans = num[i].theta;
        ansnum=sum;
      }
    }
    else
    {
      //>=y:1
      sum +=num[uu].one-num[i-1].one;
      //<y:0
      sum+=num[i-1].zero;
      if (sum >= ansnum)
      {
        ans = num[i].theta;
        ansnum=sum;
      }
    }
  }
   cout << ans;
}


(PS:主要看样例输入输出和样例解释。这次的T2好简单,找规律即可)

相关文章
|
7月前
|
安全
202012-1 期末预测之安全指数
202012-1 期末预测之安全指数
|
7月前
|
数据挖掘 数据建模
R语言指数加权模型EWMA预测股市多变量波动率
R语言指数加权模型EWMA预测股市多变量波动率
R语言指数加权模型EWMA预测股市多变量波动率
|
7月前
|
弹性计算 运维 Shell
统计双色球各个数字的中奖概率
【4月更文挑战第29天】
161 1
|
7月前
|
算法 测试技术
R语言基于Garch波动率预测的区制转移交易策略
R语言基于Garch波动率预测的区制转移交易策略
|
7月前
数据分享|R语言回归模型诊断、离群值分析学生考试成绩、病人医护质量满意度、婴儿死亡率和人均收入、针叶树荫面积数据
数据分享|R语言回归模型诊断、离群值分析学生考试成绩、病人医护质量满意度、婴儿死亡率和人均收入、针叶树荫面积数据
|
7月前
|
数据挖掘
指数加权模型EWMA预测股市多变量波动率时间序列
指数加权模型EWMA预测股市多变量波动率时间序列
|
7月前
|
算法 测试技术
Garch波动率预测的区制转移交易策略
Garch波动率预测的区制转移交易策略
|
7月前
|
数据挖掘 C语言
时间序列GARCH模型分析股市波动率
时间序列GARCH模型分析股市波动率
|
算法
蓝桥杯 算法提高 统计平均成绩
蓝桥杯 算法提高 统计平均成绩
103 0
概率与统计 期末复习
概率与统计 期末复习
134 0
概率与统计 期末复习