第九周第四天

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

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;

}

相关推荐
财富自由且长命百岁15 小时前
移动端老兵转型端侧 AI:第一周,我跑通了 ResNet50 推理
机器学习
美酒没故事°15 小时前
Open WebUI安装指南。搭建自己的自托管 AI 平台
人工智能·windows·ai
云烟成雨TD15 小时前
Spring AI Alibaba 1.x 系列【6】ReactAgent 同步执行 & 流式执行
java·人工智能·spring
简简单单做算法15 小时前
基于GA遗传优化的Transformer-LSTM网络模型的时间序列预测算法matlab性能仿真
深度学习·matlab·lstm·transformer·时间序列预测·ga遗传优化·电池剩余寿命预测
AI攻城狮15 小时前
用 Obsidian CLI + LLM 构建本地 RAG:让你的笔记真正「活」起来
人工智能·云原生·aigc
鸿乃江边鸟15 小时前
Nanobot 从onboard启动命令来看个人助理Agent的实现
人工智能·ai
lpfasd12315 小时前
基于Cloudflare生态的应用部署与开发全解
人工智能·agent·cloudflare
俞凡15 小时前
DevOps 2.0:智能体如何接管故障修复和基础设施维护
人工智能
comedate15 小时前
[OpenClaw] GLM 5 关于电影 - 人工智能 - 的思考
人工智能·电影评价
财迅通Ai15 小时前
6000万吨产能承压 卫星化学迎来战略窗口期
大数据·人工智能·物联网·卫星化学