第九周第四天

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

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;

}

相关推荐
冬奇Lab7 小时前
Workflow 系列(04):Multi-Agent 协调——编排器边界、并发控制与上下文隔离
人工智能·工作流引擎
冬奇Lab7 小时前
每日一个开源项目(第147篇):HyperGraphRAG - 用超图表示 N 元关系,RAG 的第三代范式
人工智能·开源·graphql
甲维斯8 小时前
Github + 阿里云oss实现类似codex的自动更新!
人工智能
阿里云大数据AI技术10 小时前
光轮智能 × 阿里云:共建 Physical AI 云上数据、评测与持续学习基础设施
人工智能·机器学习
机器之心10 小时前
实锤了:Claude Code偷查用户,时区、中国AI实验室全是关键词
人工智能·openai
网易云信10 小时前
Cursor点燃个人开发者,企业级AI为何频频受挫?Agent工厂从提效工具到AI员工的跃迁
人工智能·开源
网易云信10 小时前
解锁触手可及的温暖:网易智企 x Wander Puffs AI 云游泡芙
人工智能
转转技术团队10 小时前
从 PRD 到可验证代码:AI 需求开发闭环实践
人工智能