复试打卡day31
1.单词

2,翻译
在机器学习模型的训练过程中,过拟合是一个常见问题。当模型在训练数据上表现非常好,但在测试数据上表现较差时,就说明模型发生了过拟合。这通常是因为模型过于复杂,或者训练数据数量不足。为了减少过拟合现象,研究人员提出了多种方法,例如正则化、数据增强和交叉验证等。正则化方法通过在损失函数中加入惩罚项,从而限制模型参数的大小,使模型更加简单和稳定。数据增强则通过对原始数据进行旋转、裁剪或添加噪声等操作来增加训练数据的多样性。此外,交叉验证方法可以通过多次划分训练集和验证集来评估模型的泛化能力。通过这些技术,可以有效提高机器学习模型在真实场景中的性能。
3.代码
117.混合牛奶
#include<bits/stdc++.h>
using namespace std;
vector<int> price;
bool compare(int i,int j)
{
return price[i]<price[j];//价格便宜的索引放前面
}
int main()
{
int m,n;
cin>>m>>n;
price.resize(n);
vector<int> size(n);
vector<int> temp(n);
for(int i=0;i<n;i++)
{
cin>>price[i];
cin>>size[i];
temp[i]=i;
}
sort(temp.begin(),temp.end(),compare);
int sumsize=0;
int min_money=0;
for(int i=0;i<n;i++)
{
int index=temp[i];
int currsize=size[index];
if(sumsize+currsize<=m)
{
sumsize=sumsize+currsize;
min_money=currsize*price[index]+min_money;
}
else
{
int need_size=m-sumsize;
min_money=min_money+need_size*price[index];
sumsize=m;//标记为已凑够,后续循环直接break
}
}
cout<<min_money;
return 0;
}
先用便宜的即可
119.挤牛奶
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n;
cin>>n;
vector<int> start_time(n);
vector<int> end_time(n);
for(int i=0;i<n;i++)
cin>>start_time[i]>>end_time[i];
int yes_time=0;
int max_yestime=0;
int no_time=0;
int max_notime=0;
int time1=end_time[0]-start_time[0];
yes_time=time1;//设置初次有人时间
for(int i=0;i<n-1;i++)
{
if(end_time[i]>=start_time[i+1])
{
int time2=end_time[i+1]-end_time[i];
yes_time=yes_time+time2;
}
else
{
if(yes_time>max_yestime)
max_yestime=yes_time;
yes_time=0;//清0,重新计算
}
}
for(int i=0;i<n-1;i++)
{
if(end_time[i]<start_time[i+1])
{
int time2=start_time[i+1]-end_time[i];
no_time=no_time+time2;
if(no_time>max_notime)
max_notime=no_time;
no_time=0;
}
}
cout<<max_yestime<<" "<<max_notime;
return 0;
}
逻辑需要理清楚,可以预先设置初始的有人时间,以防循环更新出问题。
int time1=end_time[0]-start_time[0];
yes_time=time1;//设置初次有人时间
112.密码分析
#include<bits/stdc++.h>
using namespace std;
// 全局数组:供排序函数访问(存储字母和对应频度)
char g_chars[26]; // 存储大写字母(A-Z)
int g_counts[26]; // 存储对应字母的频度
bool compare(int i,int j)
{
if(g_counts[i]!=g_counts[j])
return g_counts[i]>g_counts[j];
// 2. 频度相同,字母小的排前面
return g_chars[i]<g_chars[j];
}
int main()
{
string line;
while(getline(cin,line))
{
// 1. 初始化:26个字母的频度置0,字母数组赋值A-Z
int freq[26]={0};
char letters[26];
for(int i=0;i<26;i++)
{
letters[i]='A'+i;
}
// 2. 遍历字符串,统计有效字母频度
for(char c:line)
{
if(isalpha(c))// 只处理英文字母
{
char upper_c=toupper(c);// 统一转大写
int idx=upper_c-'A' ; // 映射到0-25的下标
freq[idx]++;
}
}
// 3. 筛选出出现过的字母(频度>0),存入临时数组
vector<int> valid_idx; // 存储出现过的字母的下标(0-25)
for(int i=0;i<26;i++)
{
if(freq[i]>0)
{
valid_idx.push_back(i);
}
}
// 4. 赋值给全局数组,供排序函数访问
for(int i=0;i<26;i++)
{
g_chars[i]=letters[i];
g_counts[i]=freq[i];
}
sort(valid_idx.begin(),valid_idx.end(),compare);
for(int idx: valid_idx)
{
cout << g_chars[idx] << " " << g_counts[idx] << endl;
}
}
return 0;
}
有点难
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐
所有评论(0)