第九周第四天

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

52

#include<bits/stdc++.h>

using namespace std;

int main(){

int num,sq;

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

int total=0;

int arr10001;

int valid10001={0};

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

if(total<num){

arri=i;

total+=i;

sq=i;

}else{

arrtotal-num=0;

break;

}

}

int flag=0;

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

if(arri!=0){

if(flag){

printf(",");

}

flag=1;

printf("%d",arri);

}

}

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 (digitsleft != digitsright) 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;

}

相关推荐
GuWenyue4 小时前
写Agent还要重复封装工具?一套MCP多服务方案,3个能力让AI自动查地图、读写文件、操控浏览器
人工智能·机器学习·开源
GuWenyue4 小时前
90%AI新手不会调参!LangChain双模型流水线实战,一套代码兼顾严谨+创意
人工智能
光锥智能6 小时前
WAIC亮点|兼具泛化能力与作业效率的极智嘉机器人天团
人工智能·机器人
阳光是sunny6 小时前
LangGraph中的Reducer是什么
前端·人工智能·后端
甲维斯6 小时前
Kimi K3 重构10000行单文件屎山代码!
人工智能
阳光是sunny6 小时前
从链到图:LangGraph 入门基础全解析
前端·人工智能·后端
新知图书7 小时前
11.3 详细实现与核心配置(作业批改智能体开发)
人工智能·agent·ai agent·智能体·扣子
深度研习笔记8 小时前
OpenCV工业视觉实战11|多线程解耦+视频流稳流+推理加速,彻底解决卡顿阻塞,实现毫秒级工业实时检测
人工智能·opencv·计算机视觉
delishcomcn8 小时前
AI视觉识别+分切算法:电化铝缺陷检测与裁切一体化解锁
人工智能·算法
触底反弹8 小时前
深入理解大模型采样:Temperature、Top-K、Top-P 的原理与实战
人工智能·算法·面试