【杭电多校训练记录】2025"钉耙编程"中国大学生算法设计春季联赛 - 热身赛
训练情况
赛后反思
有幸抢到了签到题的一血,据说是去年杭电新生赛,题面写的很神秘,简单题差点不会做了,还被卡常TLE了一发
1008 金牌
签到题,统计Au数量和Ag、Cu数量,因为Ag和Cu能合出来一个Au,所以答案是 Au+min(Ag,cu)
点击查看代码
#include <bits/stdc++.h>
#define int long long
#define endl '\n'
using namespace std;
void solve(){
int n; cin>>n;
int cnt1 = 0,cnt2 = 0;
int ans = 0;
for(int i = 1;i<=n;i++){
string s; cin>>s;
if(s == "Au") ans++;
else if(s == "Ag") cnt1++;
else if(s == "Cu") cnt2++;
}
cout<<ans+min(cnt1,cnt2)<<endl;
}
signed main(){
int T; cin>>T; while(T--)
solve();
return 0;
}
1010 绝对值
题面写的很神秘,实则划分我们可以每个数都划分,区间长度为 1,那就等效于每个数取绝对值,这题答案要最大,那这题实际上就是绝对值前缀和上再求个和就是答案了
点击查看代码
#include <bits/stdc++.h>
#define int long long
#define endl '\n'
using namespace std;
void solve(){
int n; cin>>n;
vector<int> a(n + 1);
for(int i = 1;i<=n;i++) cin>>a[i],a[i] = abs(a[i]);
for(int i = 1;i<=n;i++) a[i] += a[i-1];
int ans = 0;
for(int i = 1;i<=n;i++) ans += a[i];
cout<<ans<<endl;
}
signed main(){
// int T; cin>>T; while(T--)
solve();
return 0;
}
1003 找回x
差点没开出来的简单题,我们把等号左边全部加起来,右边全部加起来,等号左边 x 提出来,实则就是 \(\sum{a_i} x + \sum{b_i} = \sum{c_i}\),直接对 a,b,c 数列求和反解 x 即可。
点击查看代码
#include <bits/stdc++.h>
#define int long long
#define endl '\n'
using namespace std;
const int N = 2e5 + 3;
void solve(){
int n; cin>>n;
vector<int> a(n + 1),b(n + 1),c(n + 1);
int suma = 0,sumb = 0,sumc = 0;
for(int i = 1;i<=n;i++) cin>>a[i],suma+=a[i];
for(int i = 1;i<=n;i++) cin>>b[i],sumb+=b[i];
for(int i = 1;i<=n;i++) cin>>c[i],sumc+=c[i];
cout<<(sumc-sumb)/suma<<endl;
}
signed main(){
ios::sync_with_stdio(false);
cin.tie(0),cout.tie(0);
int T; cin>>T; while(T--)
solve();
return 0;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】