第九周第四天

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

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;

}

相关推荐
大龄程序员狗哥6 小时前
第47篇:使用Speech-to-Text API快速构建语音应用(操作教程)
人工智能
KKKlucifer6 小时前
数据安全合规自动化:策略落地、审计追溯与风险闭环技术解析
人工智能·安全
RWKV元始智能6 小时前
RWKV超并发项目教程,RWKV-LM训练提速40%
人工智能·rnn·深度学习·自然语言处理·开源
dyj0956 小时前
Dify - (一)、本地部署Dify+聊天助手/Agent
人工智能·docker·容器
墨染天姬6 小时前
【AI】Hermes的GEPA算法
人工智能·算法
小超同学你好6 小时前
OpenClaw 深度解析系列 · 第8篇:Learning & Adaptation(学习与自适应)
人工智能·语言模型·chatgpt
紫微AI6 小时前
前端文本测量成了卡死一切创新的最后瓶颈,pretext实现突破了
前端·人工智能·typescript
码途漫谈7 小时前
Easy-Vibe开发篇阅读笔记(四)——前端开发之结合 Agent Skills 美化界面
人工智能·笔记·ai·开源·ai编程
易连EDI—EasyLink7 小时前
易连EDI–EasyLink实现OCR智能数据采集
网络·人工智能·安全·汽车·ocr·edi
冬奇Lab7 小时前
RAG 系列(二):用 LangChain 搭建你的第一个 RAG Pipeline
人工智能·langchain·llm