【杭电多校训练记录】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;
}
posted @   MNNUACM_2024ZY  阅读(368)  评论(1编辑  收藏  举报
相关博文:
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
点击右上角即可分享
微信分享提示