第九周第四天

过拟合是机器学习模型训练过程中常见的问题。当一个模型在训练数据上表现非常好,但在测试数据上表现不佳时,就被认为存在过拟合问题。当模型过于复杂或训练数据量不足时,通常会出现这种情况。为了减少过拟合,研究人员提出了各种技术,如正则化、数据增强和交叉验证。正则化方法在损失函数中引入惩罚项来限制模型参数的大小,从而使模型更简单、更稳定。数据增强通过对原始数据应用旋转、裁剪或添加噪声等操作来增加训练数据的多样性。此外,交叉验证通过反复将数据集拆分为训练集和验证集来评估模型的泛化能力。这些技术可以有效地提高机器学习模型在现实应用中的性能。

52

#include<bits/stdc++.h>

using namespace std;

int main(){

int num,sq;

while(scanf("%d",&num)!=EOF){

int total=0;

int arr[10001];

int valid[10001]={0};

for(int i = 0;i<=10000;i++){

if(total<num){

arr[i]=i;

total+=i;

sq=i;

}else{

arr[total-num]=0;

break;

}

}

int flag=0;

for(int i=0;i<=sq;i++){

if(arr[i]!=0){

if(flag){

printf(",");

}

flag=1;

printf("%d",arr[i]);

}

}

printf("\n");

}

}

53

#include <iostream>

#include <vector>

using namespace std;

// 判断num在base进制下是否为回文数

bool isPalindrome(int num, int base) {

vector<int> digits;

if (num == 0) return true; // 0在任何进制都是回文,但本题num>S>0,不会用到

while (num > 0) {

digits.push_back(num % base);

num /= base;

}

// 回文数首位不能为0(digits最后一位是最高位)

// if (digits.back() == 0) return false;

// 首尾对比

int left = 0, right = digits.size() - 1;

while (left < right) {

if (digits[left] != digits[right]) return false;

left++;

right--;

}

return true;

}

// 判断num是否是双重回文数(2~10进制中至少2种是回文)

bool isDoublePalindrome(int num) {

int cnt = 0;

for (int base = 2; base <= 10; base++) {

if (isPalindrome(num, base)) {

cnt++;

if (cnt >= 2) return true; // 满足条件,提前退出

}

}

return false;

}

int main() {

int N, S;

cin >> N >> S;

int found = 0;

int num = S + 1;

while (found < N) {

if (isDoublePalindrome(num)) {

cout << num << endl;

found++;

}

num++;

}

return 0;

}

54

#include <iostream>

#include <vector>

#include <set> // 替换 unordered_set 为 set

#include <algorithm>

using namespace std;

int main() {

int N, M;

cin >> N >> M;

// 1. 生成所有双平方数,去重并记录最大值

set<int> s_set; // 红黑树集合,O(logn)查询(替换原unordered_set)

vector<int> s_list; // 存储所有双平方数,用于枚举a

int max_num = 0;

for (int p = 0; p <= M; ++p) {

int p2 = p * p; // 提前计算,避免重复乘法

for (int q = 0; q <= M; ++q) {

int num = p2 + q * q;

if (s_set.insert(num).second) { // set的insert返回值和unordered_set完全一致

s_list.push_back(num);

if (num > max_num) max_num = num;

}

}

}

sort(s_list.begin(), s_list.end()); // 排序a,保证输出有序

int list_len = s_list.size();

vector<pair<int, int>> res; // 存储(a, b)

// 2. 枚举a,再按b步进验证(核心优化:减少无效枚举)

for (int a : s_list) {

// b的最大可能值:a + (N-1)*b ≤ max_num → b ≤ (max_num - a)/(N-1)

int max_b = (max_num - a) / (N - 1);

if (max_b <= 0) continue; // b必须为正整数

// 枚举b的可能值(从1到max_b)

for (int b = 1; b <= max_b; ++b) {

bool valid = true;

// 验证后续N-1项是否都在集合中

for (int k = 1; k < N; ++k) {

int current = a + k * b;

if (s_set.find(current) == s_set.end()) { // set的find用法和unordered_set完全一致

valid = false;

break; // 提前终止,无需验证剩余项

}

}

if (valid) {

res.emplace_back(a, b);

}

}

}

// 3. 按b升序、a升序排序输出

sort(res.begin(), res.end(), [](const pair<int, int>& x, const pair<int, int>& y) {

if (x.second != y.second) return x.second < y.second;

return x.first < y.first;

});

// 4. 输出结果

if (res.empty()) {

cout << "NONE" << endl;

} else {

for (auto& p : res) {

cout << p.first << " " << p.second << endl;

}

}

return 0;

}

相关推荐
math_learning1 小时前
方法思路推广|EG:基于机器学习的岩石坠落危害下桥梁脆弱性量化
人工智能·机器学习
Rubin智造社2 小时前
# OpenClaude命令实战|核心控制三剑客/reasoning+/verbose+/status 实操指南
大数据·人工智能
码路高手2 小时前
Trae-Agent中的Function Calling逻辑分析
人工智能·架构
小白_史蒂夫2 小时前
【环境搭建】(九)飞桨EasyDL发布的模型转换onnx(附工程代码)
人工智能·paddlepaddle
星浩AI2 小时前
现在最需要被 PUA 的,其实是 AI
人工智能·后端·github
superior tigre2 小时前
CUDA算子开发(LLM方向)常见的一些术语
人工智能·加速推理
weixin_463923422 小时前
知网更新后,这4种降AI方法已失效!
人工智能
WenGyyyL2 小时前
ColBERT论文研读——NLP(IR)里程碑之作
人工智能·python·语言模型·自然语言处理
彩旗工作室2 小时前
Cursor 全面深度指南:从诞生到实战,AI 编程时代的终极武器
人工智能·ai编程