【牛客训练记录】牛客2025年情人节比赛

训练情况

赛后反思

今年比赛比去年有意思多了,太搞笑了

A题

我们构造一对就可以了,和为 \(x\),直接扔上去 \(1\)\(x-1\) 即可

点击查看代码
#include <bits/stdc++.h>
// #define int long long
#define endl '\n'

using namespace std;

void solve(){
    int x; cin>>x;
    cout<<1<<endl;
    cout<<1<<" "<<x-1<<endl;
}

signed main(){
    // int T; cin>>T; while(T--)
    solve();
    return 0;
}

B题

好抽象的题,SHA-256加密后奇偶性和输出一样,我随便输了个 1,一看还对上了,就直接交了

点击查看代码
#include <bits/stdc++.h>
// #define int long long
#define endl '\n'

using namespace std;

void solve(){
    cout<<"1";
}

signed main(){
    // int T; cin>>T; while(T--)
    solve();
    return 0;
}

D题

这题能hack掉的点在于map<int,int>,里面sum可能会超过int,所以我们int溢出刚好为零的情况,4294967296 这个数刚好溢出为 0,我们直接让sum出现溢出为 0 的情况即可 WA 了

点击查看代码
#include <bits/stdc++.h>
// #define int long long
#define endl '\n'

using namespace std;

int a[10000] = {2,3,5,6,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,30,31,32,33,34,38,39,40,46};

void solve(){
    map<int,int> v;
    for(int i = 0;i<34;i++) v[a[i]] = 1;
    cout<<49<<endl;
    for(int i = 1;i<=49;i++){
        if(v[i]){
            cout<<6<<endl;
            cout<<(int)1e9<<" ";
            cout<<(int)1e9<<" ";
            cout<<(int)1e9<<" ";
            cout<<(int)1e9<<" ";
            cout<<(int)294967296<<" ";
            cout<<0<<" ";
            cout<<endl;
        } else {
            cout<<1<<endl;
            cout<<1<<endl;
        }
    }
}

signed main(){
    // int T; cin>>T; while(T--)
    solve();
    return 0;
}

E题

太经典了,数组开小了,我们直接数据压满查询即可爆 RE

点击查看代码
#include <bits/stdc++.h>
// #define int long long
#define endl '\n'

using namespace std;

int a[10000] = {2,3,5,6,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,30,31,32,33,34,38,39,40,46};

void solve(){
    map<int,int> v;
    for(int i = 0;i<34;i++) v[a[i]] = 1;
    cout<<49<<endl;
    for(int i = 1;i<=49;i++){
        if(v[i]){
            cout<<2e4<<" "<<1<<" "<<2e4<<endl;
            for(int j = 1;j<=2e4;j++) cout<<1<<" ";
            cout<<endl;
        } else {
            cout<<1<<" "<<1<<" "<<1<<endl;
            cout<<1<<endl;
        }
    }
}

signed main(){
    // int T; cin>>T; while(T--)
    solve();
    return 0;
}

F题

好一个暴力求和,我们直接数据压满就超时了

点击查看代码
#include <bits/stdc++.h>
// #define int long long
#define endl '\n'

using namespace std;

int a[10000] = {2,3,5,6,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,30,31,32,33,34,38,39,40,46};

void solve(){
    map<int,int> v;
    for(int i = 0;i<34;i++) v[a[i]] = 1;
    cout<<49<<endl;
    for(int i = 1;i<=49;i++){
        if(v[i]){
            cout<<1e4<<" "<<1e4<<endl;
            for(int j = 1;j<=1e4;j++) cout<<1<<" ";
            cout<<endl;
            for(int j = 1;j<=1e4;j++) cout<<1<<" "<<1e4<<endl;
            cout<<endl;
        } else {
            cout<<1<<" "<<1<<endl;
            cout<<1<<endl;
            cout<<1<<" "<<1<<endl;
        }
    }
}

signed main(){
    // int T; cin>>T; while(T--)
    solve();
    return 0;
}

G题

盲猜了一个这题加密用了hash,由于秘钥范围有限,直接枚举ka和kb,去找能和答案匹配的,我们发现 ka = 5,kb = 6的时候能对上,直接hash输出就行

点击查看代码
#include <bits/stdc++.h>
// #define int long long
#define endl '\n'

using namespace std;

void solve(){
    string s; cin>>s;
    int ka = 5;
    int kb = 6;
    for(int i = 0;i<s.size();i++){
        if(s[i] >= 'a' && s[i] <= 'z'){
            cout<<(char)(((s[i]-'a')*ka+kb)%26+'a');
        } else {
            cout<<(char)(((s[i]-'A')*ka+kb)%26+'A');
        }
    }
}

signed main(){
    // int T; cin>>T; while(T--)
    solve();
    return 0;
}

H题

翻阅日历可知,2027情人节是周日

点击查看代码
#include <bits/stdc++.h>
// #define int long long
#define endl '\n'

using namespace std;

void solve(){
    cout<<"2027";
}

signed main(){
    // int T; cin>>T; while(T--)
    solve();
    return 0;
}

K题

题目暗示了低头看键盘,我们直接面向样例编程,我们发现给出的字母答案就是它周围的字母,我们直接大力分类讨论即可

点击查看代码
#include <bits/stdc++.h>
// #define int long long
#define endl '\n'

using namespace std;

void solve(){
    string s; cin>>s;
    if(s == "A") cout<<"QWSZ";
    else if(s == "B") cout<<"VGHN";
    else if(s == "C") cout<<"XDFV";
    else if(s == "D") cout<<"REFSXC";
    else if(s == "E") cout<<"WSDR";
    else if(s == "F") cout<<"RTDGCV";
    else if(s == "G") cout<<"TYFHVB";
    else if(s == "H") cout<<"YUGJBN";
    else if(s == "I") cout<<"UJKO";
    else if(s == "J") cout<<"UIHKNM";
    else if(s == "K") cout<<"IOJLM";
    else if(s == "L") cout<<"POK";
    else if(s == "M") cout<<"NJK";
    else if(s == "N") cout<<"BHJM";
    else if(s == "O") cout<<"IKLP";
    else if(s == "P") cout<<"OL";
    else if(s == "Q") cout<<"WA";
    else if(s == "R") cout<<"EDFT";
    else if(s == "S") cout<<"WEADZX";
    else if(s == "T") cout<<"RFGY";
    else if(s == "U") cout<<"YHJI";
    else if(s == "V") cout<<"CFGB";
    else if(s == "W") cout<<"QASE";
    else if(s == "X") cout<<"ZSDC";
    else if(s == "Y") cout<<"TGHU";
    else if(s == "Z") cout<<"ASX";
}

signed main(){
    // int T; cin>>T; while(T--)
    solve();
    return 0;
}
posted @ 2025-02-14 23:10  MNNUACM_2024ZY  阅读(30)  评论(0)    收藏  举报