2026 团体程序设计天梯赛 游记 254分 个人国一 后附所有题目代码(后两题骗分)

凌晨睡不着呀 洛克王国启动 抓了抓赛季限定的精灵

五点半睡,十点半醒

天梯赛

去拍照片,拍完后和高康嘉去万达吃了 KFC,还是牛肉汉堡好吃 吃完一下午有力气

十二点多回学校了,要等好长时间。和他们打了打扑克,到比赛前十分钟才结束

开始!

20 分钟左右做完了L1 1-7,L1-8 有点没写好,写了将近 20 分钟才

看了看榜单,大家基本都是顺序做题,说明前面应该没有什么难度不合理的题

50 分钟左右做完了 L2

这次的 L2 整体偏简单吧,直接模拟就好了。

两个树的题,也没什么其他东西,顺着题意去做就可以

做到 L3 还剩一小时,先看了看题看了看榜单

大家基本都是顺着做的

L3-1 一看就是模拟的那种,看上去很不是很好写但是可做

3-2 和 3-3 一看就是很复杂的算法题,最后看群里说 3-2 是网络流,3-3 是基环树 DP

先去写了 3-1,因为有一个不好写的预期,所以实际写代码的时候还好。写了半小时左右

开始看 3-2,感觉有个思路,但是细想发现不对,试着去想贪心,二分,DP但都没什么思路

写了个假做法骗到了 14 分

看了看 3-3,一眼不可做,写了个 DFS 骗了 10 分

此时离结束还差 10 分钟,254分

一看在国一线的上面,高了两分

忐忑的等了几分钟,发现线没有变化。

结束!

因为提前知道了国一,所以刚结束的时候没什么感觉

但是从教学楼出来之后,春天的微风吹在脸上 不热不冷的温度 晴朗的天空

这时候才后知后觉发现好爽 国一诶

虽然是天梯赛 但还是很爽

可能上周在 icpc 赛场上丢失的气运回来了

最后一次天梯赛拿到了个人国一

希望在后续的 icpc 西安和南昌能拿到银牌吧 会银吗会银的

晚上去吃了火锅

做到火锅店的时候才感觉好累 甚至吃饭的力气和胃口都没有了

晚上又加餐了一根巧乐兹

好困 作息居然要调回来了

L1-1

点击查看代码
#include<bits/stdc++.h>
#define int long long
using namespace std;

void solve(){
    cout<<"Building the Future, One Line of Code at a Time.";   
}

signed main(){
    ios::sync_with_stdio(0);
    cin.tie(0);

    int ct=1;
    // cin>>ct;

    while(ct--){
        solve();
    }
}

L1-2

点击查看代码
#include<bits/stdc++.h>
#define int long long
using namespace std;

void solve(){
    int n;
    cin>>n;

    cout<<n*15;
}

signed main(){
    ios::sync_with_stdio(0);
    cin.tie(0);

    int ct=1;
    // cin>>ct;

    while(ct--){
        solve();
    }
}

L1-3

点击查看代码
#include<bits/stdc++.h>
#define int long long
using namespace std;

void solve(){
    int a,b;
    cin>>a>>b;

    int val=b-a;

    cout<<val<<endl;

    if(val<0){
        cout<<"hai sheng ma?";
    }
    else if(val<=250){
        cout<<"nin tai cong ming le!";
    }
    else{
        cout<<"jiu ting tu ran de...";
    }
}

signed main(){
    ios::sync_with_stdio(0);
    cin.tie(0);

    int ct=1;
    // cin>>ct;

    while(ct--){
        solve();
    }
}

L1-4

点击查看代码
#include<bits/stdc++.h>
#define int long long
using namespace std;

void solve(){
    int n;
    cin>>n;

    int cnt=0;
    for(int i=1;i<=n;i++){
        int val;
        cin>>val;
        cnt+=(val<1700);
    }

    cout<<cnt;
}

signed main(){
    ios::sync_with_stdio(0);
    cin.tie(0);

    int ct=1;
    // cin>>ct;

    while(ct--){
        solve();
    }
}

L1-5

点击查看代码
#include<bits/stdc++.h>
#define int long long
using namespace std;

void solve(){
    int n;
    cin>>n;

    map<int,int> mp;
    set<int> st;

    for(int i=1;i<=n;i++){
        int id,ch;
        cin>>id>>ch;
        mp[id]+=ch;
    }

    for(auto [x,y]:mp){
        if(y==0){
            st.insert(x);
        }
    }

    if(st.size()==0){
        cout<<"NONE";
        return;
    }
    
    cout<<*st.begin();
    st.erase(st.begin());

    for(auto val:st){
        cout<<" "<<val;
    }
}

signed main(){
    ios::sync_with_stdio(0);
    cin.tie(0);

    int ct=1;
    // cin>>ct;

    while(ct--){
        solve();
    }
}

L1-6

点击查看代码
#include<bits/stdc++.h>
#define int long long
using namespace std;

void solve(){
    for(int i=1;i<=11;i++){
        string s;
        getline(cin,s);
        cout<<s.size();
    }
}

signed main(){
    ios::sync_with_stdio(0);
    cin.tie(0);

    int ct=1;
    // cin>>ct;

    while(ct--){
        solve();
    }
}

L1-7

点击查看代码
#include<bits/stdc++.h>
#define int long long
using namespace std;

void solve(){
    int n;
    cin>>n;

    vector<int> a(n+1);
    for(int i=1;i<=n;i++){
        cin>>a[i];
    }

    int sum=accumulate(a.begin()+1,a.end(),0ll);

    cout<<*max_element(a.begin()+1,a.end())<<" ";
    cout<<*min_element(a.begin()+1,a.end())<<" ";
    cout<<sum/n<<"\n";

    vector<int> ans;
    for(int i=1;i<=n;i++){
        if(a[i]>(sum/n)*2){
            ans.push_back(i);
        }
    }

    if(ans.size()==0){
        cout<<"Normal";
        return;
    }

    for(int i=0;i<ans.size()-1;i++){
        cout<<ans[i]<<" ";
    }
    cout<<ans.back();
}

signed main(){
    ios::sync_with_stdio(0);
    cin.tie(0);

    int ct=1;
    // cin>>ct;

    while(ct--){
        solve();
    }
}

L1-8

点击查看代码
#include<bits/stdc++.h>
#define int long long
using namespace std;

void solve(){
    int q;
    string s;
    cin>>q>>s;

    auto check=[&](int idx,string t)-> bool {
        int j=0,i=idx;
        for(i=idx,j=0;i<s.size() && j<t.size();i++,j++){
            if(s[i]!=t[j]) return 0;
        }

        if(j!=t.size()){
            return 0;
        }
        return 1;
    };  

    while(q--){
        int ch,l,r,p;
        string st;

        cin>>ch;

        if(ch==1){
            cin>>st;
            vector<int> ans;

            for(int i=0;i<s.size();i++){
                if(check(i,st)){
                    ans.push_back(i);
                    if(ans.size()==3) break;
                }
            }

            if(ans.size()==0) cout<<-1<<endl;
            else{
                for(int i=0;i<ans.size()-1;i++) cout<<ans[i]<<" ";
                cout<<ans.back()<<endl;
            }
        }
        else if(ch==2){
            cin>>p>>st;

            string tmp;
            for(int i=0;i<p;i++){
                tmp.push_back(s[i]);
            }
            tmp+=st;
            for(int i=p;i<s.size();i++){
                tmp.push_back(s[i]);
            }

            s=tmp;

            cout<<s<<endl;
        }
        else{
            int l,r;
            cin>>l>>r;

            string tmp;

            for(int i=0;i<l;i++){
                tmp.push_back(s[i]);
            }
            for(int i=r;i>=l;i--){
                tmp.push_back(s[i]);
            }
            for(int i=r+1;i<s.size();i++){
                tmp.push_back(s[i]);
            }

            cout<<tmp<<endl;
            s=tmp;
        }
    }
}

signed main(){
    ios::sync_with_stdio(0);
    cin.tie(0);

    int ct=1;
    // cin>>ct;

    while(ct--){
        solve();
    }
}

L2-1

点击查看代码
#include<bits/stdc++.h>
#define int long long
using namespace std;
using pii=pair<int,int>;

void solve(){
    int n,t;
    cin>>n>>t;

    vector<pii> a(n+1);
    vector<int> ans;


    for(int i=1;i<=n;i++){
        cin>>a[i].first;
        a[i].second=i;
    }

    int cnt=0;
    

    while(ans.size()<n){
        cnt++;
        int sum=0;

        for(int i=1;i<=n;i++){
            if(a[i].second==0) continue;

            if(a[i].first<=t){
                ans.push_back(a[i].second);
                a[i]={0,0};
            }
            else{
                sum+=a[i].first;
            }
        }

        if(ans.size()==n) break;

        t=sum/(n-(int)ans.size());

        reverse(a.begin()+1,a.end());
    }


    cout<<ans[0];
    for(int i=1;i<ans.size();i++){
        cout<<" "<<ans[i];
    }
    

}

signed main(){
    ios::sync_with_stdio(0);
    cin.tie(0);

    int ct=1;
    // cin>>ct;

    while(ct--){
        solve();
    }
}

L2-2

点击查看代码
#include<bits/stdc++.h>
#define int long long
using namespace std;
using pii=pair<int,int>;

void solve(){
    int n;
    cin>>n;

    vector<int> a(n+1);
    map<int,int> mp;
    set<int> st;

    for(int i=1;i<=n;i++){
        cin>>a[i];
        if(mp[a[i]]==0) mp[a[i]]=i;
        st.insert(a[i]);
    }

    int mx=*max_element(a.begin()+1,a.end());
    vector<int> ans;
    for(int i=1;i<=n;i++){
        if(a[i]==mx) ans.push_back(i);
    }

    for(int i=0;i<ans.size();i++){
        cout<<ans[i]<<" \n"[i==ans.size()-1];
    }

    int q;
    cin>>q;

    while(q--){
        int x;
        cin>>x;

        auto it=st.upper_bound(x);
        if(it==st.end()){
            cout<<0<<endl;
        }
        else{
            cout<<mp[*it]<<endl;
        }
    }
}

signed main(){
    ios::sync_with_stdio(0);
    cin.tie(0);

    int ct=1;
    // cin>>ct;

    while(ct--){
        solve();
    }
}

L2-3

点击查看代码
#include<bits/stdc++.h>
#define int long long
using namespace std;
using pii=pair<int,int>;

void solve(){
    int n;
    cin>>n;

    vector<vector<pii>> g(n+1);
    vector<int> f(n+1,10101);

    for(int i=1;i<n;i++){
        int pre,w;
        cin>>pre>>w;
        g[pre].push_back({i,w});
        f[i]=w;
    }


    auto dfs=[&](auto dfs,int u)-> void {
        // cout<<u<<" ";
        for(auto[v,w]:g[u]){
            f[v]=min(w,f[u]);
            dfs(dfs,v);

        }
    };

    dfs(dfs,0);
    // cout<<endl;

    int mx=0;
    vector<int> ans;

    for(int i=1;i<n;i++){
        if(g[i].size()) continue;
        if(f[i]>mx){
            mx=f[i];
            ans.clear();
            ans.push_back(i);
        }
        else if(f[i]==mx) ans.push_back(i);
    }

    cout<<mx<<endl;

    sort(ans.begin(),ans.end());

    for(int i=0;i<ans.size();i++){
        cout<<ans[i]<<" \n"[i==ans.size()-1];
    }
}

signed main(){
    ios::sync_with_stdio(0);
    cin.tie(0);

    int ct=1;
    // cin>>ct;

    while(ct--){
        solve();
    }
}

L2-4

点击查看代码
#include<bits/stdc++.h>
#define int long long
using namespace std;
using pii=pair<int,int>;

void solve(){
    int n,m;
    cin>>n>>m;

    vector<vector<pii>> g(n+1);

    while(m--){
        int u,v,p;
        cin>>u>>v>>p;
        g[u].push_back({p,v});
    }

    for(int i=1;i<=n;i++){
        sort(g[i].begin(),g[i].end(),[&](pii a,pii b)-> bool {
            if(a.first!=b.first) return a.first>b.first;
            return a.second<b.second;
        });
    }

    int q;
    cin>>q;
    
    while(q--){
        int now;
        cin>>now;
        

        vector<int> ans;
        ans.push_back(now);

        map<int,int> mp;
        mp[now]=1;

        while(g[now].size()){
            int tmp=0;
            for(auto [p,ne]:g[now]){
                if(mp[ne]==0){
                    mp[ne]=1;
                    tmp=ne;
                    break;
                }
            }

            if(tmp==0) break;
            now=tmp;
            ans.push_back(now);
        }

        cout<<ans[0];
        for(int i=1;i<ans.size();i++){
            cout<<"->"<<ans[i];
        }
        cout<<endl;
    }

}

signed main(){
    ios::sync_with_stdio(0);
    cin.tie(0);

    int ct=1;
    // cin>>ct;

    while(ct--){
        solve();
    }
}

L3-1

点击查看代码
#include<bits/stdc++.h>
#define int long long
using namespace std;
using pii=pair<int,int>;

struct node{
    /**
     * 实际时间
     */
    int act;
    /**
     * 预约时间
     */
    int pt;
    /**
     * 患者 id
     */
    string id;
    /**
     * 年龄
     */
    int age;

    bool operator<(const node &t) const{
        if((age>=80) == (t.age>=80)){
            return pt>t.pt;
        }
        else{
            return age<t.age;
        }
    }

};

void solve(){
    int n;
    cin>>n;

    vector<node> a(n+1);
    vector<int> ans,ans2;

    map<int,node> mp;

    for(int i=1;i<=n;i++){
        int q,w,e,r;
        string id;
        cin>>q>>w>>id>>r;
        a[i]={q,w,id,r};
        mp[w]=a[i];
    }

    int now=1;
    priority_queue<node,vector<node>> q;
    map<int,int> inq;
    map<int,int> f;

    for(int t=1;t<=2*n;t++){
        while(a[now].act<=t && now<=n){
            inq[a[now].pt]=1;
            q.push(a[now]);
            now++;
        }
        if(inq[t] && f[t]==0){
            f[t]=1;
            ans.push_back(t);
            // if(t==2) cout<<"!!\n";
            ans2.push_back(t);
        }
        else{
            if(q.size()==0) continue;

            while(q.size() && f[q.top().pt] == 1){
                inq[q.top().pt]=0;
                q.pop();
            }
            if(q.size()==0) continue;

            f[q.top().pt]=1;
            // inq[q.top().pt]=0;
            ans.push_back(q.top().pt);
            // if(q.top().pt==2) cout<<"!!\n";
            ans2.push_back(t);
            q.pop();
        }
    }

    // cout<<"---\n";

    for(int i=0;i<ans.size();i++){
        cout<<ans2[i]<<" "<<mp[ans[i]].id<<endl;
    }
}

signed main(){
    ios::sync_with_stdio(0);
    cin.tie(0);

    int ct=1;
    // cin>>ct;

    while(ct--){
        solve();
    }
}

L3-2

14 分 假做法

点击查看代码
#include<bits/stdc++.h>
#define int long long
using namespace std;
using pii=pair<int,int>;

void solve(){
    int n;
    cin>>n;

    vector<int> r(n+1),b(n+1);
    map<int,int> mr,mb;

    int ans=0;
    map<int,int> cr,cb;

    for(int i=1;i<=n;i++){
        cin>>r[i]>>b[i];
        ans++;
        if(mr.count(r[i])) mr[r[i]]++;
        else if(mb.count(b[i])) mb[b[i]]++; 
        else{
            mb[b[i]]=0;
            ans++;
        }
    }

    cout<<ans<<endl;
}

signed main(){
    ios::sync_with_stdio(0);
    cin.tie(0);

    int ct=1;
    cin>>ct;

    while(ct--){
        solve();
    }
}

L3-3

DFS 纯暴力骗分 10分

点击查看代码
#include<bits/stdc++.h>
// #define int long long
using namespace std;
using pii=pair<int,int>;

void solve(){
    int n,ans=0;
    cin>>n;

    vector<int> a(n+1);
    for(int i=1;i<=n;i++){
        cin>>a[i];
    }
    vector<int> t(n+1);

    auto dfs=[&](auto dfs,int pos)-> void {
        if(pos>n){
            bool f=1;
            for(int i=1;i<=n;i++){
                if(a[t[i]]!=t[a[i]]){
                    f=0;
                    break;
                }
            }
            ans+=f;
            return;
        } 

        for(int i=1;i<=n;i++){
            
            t[pos]=i;

            if(i<=pos){
                if(a[t[i]]!=t[a[i]] && a[i]<=pos){
                    continue;
                }
            }

            dfs(dfs,pos+1);
        }
    };

    dfs(dfs,1);

    cout<<ans<<endl;
}

signed main(){
    ios::sync_with_stdio(0);
    cin.tie(0);

    int ct=1;
    cin>>ct;

    while(ct--){
        solve();
    }
}

posted @ 2026-04-19 00:11  LYET  阅读(767)  评论(0)    收藏  举报