竞赛讨论区 > 2022年牛客竞赛六一儿童节题解~

2022年牛客竞赛六一儿童节题解~

头像
沙烬
编辑于 2022-06-02 15:22:03 APP内打开
赞 0 | 收藏 0 | 回复4 | 浏览1077

嘿,这里是小沙组织的第一场比赛希望大家玩的都很开心~

感谢出题人小沙,嘤嘤,小七,琢喵,智乃,兰子的友情出题!

小沙:A
嘤嘤:CDF
小七:G
智乃:HI
琢喵:B
兰子:E

A

这是一道语法题
首先我们需要判断几个条件:
1.朋友和小沙的年龄差距不能超过3
2.朋友要会跑
3.小沙也是小朋友 也要会跑才行

#include<iostream>
using namespace std;


int main(){
    int n,x,c;
    cin>>n>>x>>c;
    int ans=0;
    for(int i=1;i<=n;i++){
        int p;
        cin>>p;
        if(p>=x-3&&p<=x+3&&p>=c) ans++;
    }
    printf("%d",((x>=c)?ans:0));
} 

B

不知道有木有勾起大家的儿时回忆呢~
出题人の夹带私货:https://www.bilibili.com/video/BV19R4y1T7Ep
第一问:可以在这个链接中找到
http://web.4399.com/ddt/remendaoju/wq/3423-2.html

关于第二大问:
勇闯地穴:
弹弹堂boss

C

解法一

810975什么意思?|【逗鱼时刻317期】片尾单品_哔哩哔哩_bilibili 视频1:40有正解。

解法二

提示中每行第一句的最后一个汉字连起来 = 衣锦夜行,B站搜索,即可得810975。

解法三

柯南的好基友+儿童节 --> 基德 --> KID --> 1412,打开文件夹找到1412,即可找到答案。

解法四

写一份代码,遍历文件夹,找到一个内容不同的文件。

解法五

来自一血的神奇做法,出题人一脸懵逼。

I3T8$~U$HN3O}{LLZWHL6Z2

解法六
图片说明
出题人意想不到的巧合。

D

第一个问题:

​ 特判x=1和y=1,否则直接暴力乘即可。

第二个问题:

​ 两个操作都会使数变小,所以优先操作大的数,若大的数无法操作,则无法完成。

第三个问题:

​ 观察易知,对于从0开始的前 个数,二进制下 1 的个数为奇数的数有 个,并且此性质对于 个数也成立。所以只要算出 的二进制下 1 的个数为奇数的个数,减一下即可。

第四个问题:

​ 让一行或一列的炮都往一个方向打,最终只能剩余两列,若一开始只有一行或一列,则行或列不能操作。所以答案是

第五个问题:

​ 对于当前 件物品:
​ ①若 能整除 ,则我们分成 堆,每堆有 件物品。我们把前 堆东西放到天平上,如果这 堆东西一样重,那说明重的那件物品在最后一堆中,否则天平可以告诉我们,重的那件物品在这 堆东西的哪堆中。

​ ②若 不能整除 ,则我们分成 堆,前 堆每堆有 要向下取整)件物品,最后一堆物品数小于等于 ,可证 一定小于等于 。我们把前 堆东西放到天平上,如果这 堆东西一样重,那说明重的那件物品在最后一堆中,否则天平可以告诉我们,重的那件物品在这 堆东西的哪堆中。
​ 重复以上过程,最终便可找到重的那件物品,不难发现这个过程本质上就是求 (向上取整)的值。

最后求一个异或和即可。

小沙的代码如下:

#include<bits/stdc++.h>
#define fre(z) freopen(z".in","r",stdin),freopen(z".out","w",stdout)

#define range(x) begin(x), end(x)
#define sz(x) (int)(x).size()
#define pb push_back

#define sto                             \
    std::ios::sync_with_stdio(false);   \
    std::cin.tie(nullptr);              \
    std::cout.tie(nullptr);

using namespace std;

typedef long long ll;
typedef pair<ll,ll> PII;

ll lowit(ll x){
    return x&-x;
}

inline ll read(){
    ll x=0;char ch;bool f=true;
    for(ch=getchar();!isdigit(ch);ch=getchar())if(ch=='-')f^=f;
    for(;isdigit(ch);ch=getchar())x=(x<<3)+(x<<1)+(ch^48);
    return f?x:-x;
}

void solve(){
    ll a=read(),b=read();
    auto f1=[&](ll a,ll b)->ll{
        if(a==1)return 0;
        if(a>b)return 0;
        ll c=1;
        for(int i=0;;i++,c*=a)
            if(c>b)return i-1;
        return 0;
    };
     auto f2=[&](ll a,ll b)->ll{
        int ans1=0,ans2=0,ans3=0,ans4=0;
         while(a%5==0||b%5==0){
             if(a%5==0)ans3++,a=a/5*3;
             if(b%5==0)ans4++,b=b/5*3;
         }
         while(a%3==0||b%3==0){
             if(a%3==0)ans1++,a/=3;
             if(b%3==0)ans2++,b/=3;
         }
         if(a!=b)return 0;
         return abs(ans1-ans2)+abs(ans3-ans4);
    };
     auto f3=[&](ll l,ll r)->ll{
        if(l>r)swap(l,r);
         auto f=[&](ll n)->ll{
            int x=n,cnt=0;
            while(x){
                if(x&1)cnt++;
                x/=2;
            }
            int c=0;
            if(cnt%2==0)c+=n/2;
            else c+=(n-1)/2;
            return n-c;
         };
         return f(r)-f(l-1);
    };
     auto f4=[&](ll a,ll b)->ll{
        return min(a,2ll)*min(b,2ll);
    };
     auto f5=[&](ll n,ll m)->ll{
        if(m==1)return 0;
         int res=0;
        while(n!=1){
            res++;
            n=(n+m)/(m+1);
        }
        return res;
    };
    cout<<(f1(a,b)^f2(a,b)^f3(a,b)^f4(a,b)^f5(a,b))<<"\n";
}

int main(){
    ll T=1;
    T=read();
    for(int i=1;i<=T;i++)solve();
    return 0;
}

E

答案:

等
瞬间
丢铜板
因为是你
还是好朋友

qcjj搜索法(qcjj友情提供的题解)
我们可以发现,3. 一口吃下全部 看起来就非常的特别。那我们就看看能不能把这句对应的歌手搜出来
关键词,一口吃下全部 歌词
图片说明
发现是王心凌的歌。结合时事,以及出题人,我们大概率就能确定歌手是王心凌了。
然后再开启万能搜索格式
"想哭了" 王心凌 歌词
"你是爱我的" 王心凌 歌词
"我为什么爱你" 歌词 王心凌
"不要想得太多" 歌词 王心凌
图片说明

F

DJWCB

ELYSI

RNMTQ

AKXGU

OPHVF

A. 克蕾亚(克蕾亚·哈维,百套路战记,不熟)

B.艾斯(艾丝·华伦斯坦,在下求搞,天然呆)

C.莎夏(莎夏·涅库罗,魔王学院的不适格者,不太熟)

D.安洁莉娜(安洁莉娜·库都·希尔兹,抗世界神剧来访者篇,傲娇)

E.瑟莉卡(瑟莉卡·阿尔弗涅亚,不正经的魔术讲师与禁忌教典,涩姐姐)

F.DIO(DIO的奇妙冒险,金发傲娇吸血鬼)

G.拉娜·提耶儿(拉娜·提耶儿·夏尔敦·莱儿·凡瑟芙,Overload,变态+病娇?)

H.安洁莉卡(乙女游戏世界对路人角色很不友好,不太熟)

I.布蕾德(某知名异世界重生番,这个不好说,变态+百合)

J.菲丽希亚(百炼霸王与圣约女武神,不熟)

K.琉璃(失格纹的最强贤者,不熟)

L.莉夏(莉姿夏尔蒂·亚提司玛特,最弱无败的神装机龙,傲娇中的傲娇)

M.铃兰(明日方舟,zngg放的)

N.四门摩耶(圣剑使的禁咒咏唱,四大名著之一,不熟)

O.夏洛特(夏洛特·德诺阿,IS(无限无斯特拉托斯),名作之壁!!!不熟)

P.达克妮丝(为世界的美好献上祝福第二季第4话,变态+M)

Q.菲洛(盾之勇者憋屈录,可爱萝莉yyds)

R.艾莉亚莉亚(被神捡到的男人,不熟)

S.相泽梓(打了300年的史莱姆,不知不觉就练到了满级,不熟)

T.莉丝妲黛(这个勇者明明很强却过分慎重,不熟)

U.川建国(知名地下党员,金发傲娇!(嘴上说着讨厌**,但实际上做了很多让**非常喜欢+开心的事))

V.荧(屑妹妹!其实本来想玩考哥梗叫包包的,但想想还是算了,屑+屑+屑+屑+屑+屑+非常屑)

W.赛莉丝(赛莉丝缇雅·兰格莉思,最弱无败的神装机龙,大大大大姐姐)

X.艾莲(艾莲,关我姆事,搞笑担当?)

Y.月(贫穷职业造就业界最强,金发吸血鬼,不熟)

几乎所有角色都来源于异世界、龙傲天番剧,番剧名字基本可以在另一道融合怪题(D)的标题中找到。

不会真有人全看过吧?不会吧不会吧?

应该很简单吧,打开猛男百科随便搜一搜就有了,要是觉得难的话,下次来认下面这些京都脸

图片说明

G

小乐的房间

​ 输出编号①的房间的周围房间编号,以及自己即可(记得去重排序

​ 我们可以发现无论房间的布局是:(数字代表空间编号。下图右布局仅仅是反转左布局的第二列到最后一列)

image-20220530130533629

​ 此时两种布局的每个空间的相邻空间是一样的。

​ 换句话说,此时对于任意一个空间 R,两种布局的R的相邻空间构成的集合都是相等的

​ 同理,可以交换第一种布局的第二行到最后一行。这两种操作使得 1周围的空间都可以成为角落。

​ 所以找出 1周围的点然后去重即可,n >= 3 输出9个坐标,n < 3 输出 1 ~ n * n

#include <bits/stdc++.h>


constexpr int N = 1005 * 1005;

int room[N][4];

signed main() {
    int len;
    std::cin.tie(nullptr)->sync_with_stdio(false);
    std::cin >> len, len *= len;
    for (int i = 1; i <= len; ++ i) {
        for (int j = 0; j < 4; ++ j) {
            std::cin >> room[i][j];
        }
    }
    std::map<int, int> mp{{room[1][0], 2}, {room[1][1], 2}, {room[1][2], 2}, {room[1][3], 2}}; // 自动去重
    for (int i = 0; i < 4; ++ i) {
        for (int j = 0; j < 4; ++ j) {
            ++ mp[room[room[1][i]][j]];
        }
    }
    for (auto& i : mp) {
        if (i.second > 1) {
            std::cout << i.first << ' ';
        }
    }
    return 0;
}

H

按题意模拟即可(好解)
出题人:写二分的反思一下。

I

这道题是上下界最小流的模板题,拆点模型也比较好建,不会做的话说明该补一补图论了。

对于一个城堡,我们可以将其分成三个阶段拆成三个点,分别为进攻、死亡、占领三个状态。
然后我们把流量看做是士兵按照题意:
1、因为必须要合力兵力达到D才能进攻,所以建边从进攻节点到死亡节点流量下界为D,上界INF(本题中所有边的上界都是INF,后面不再提了)
2、因为进攻后会死亡A人,所以建边从死亡节点到T下界流A回收流量。
3、因为结算后必须省1个人才能占领和招募,所以从死亡节点到占领节点建边下界1。
4、占领后贪心的直接招募到P人,所以从S节点下界先流P人到占领节点。

剩下的建边就按照原本的DAG图,建INF边连起来即可。
图片说明
建图大概就如上图所示。
顺便一提,数据范围比较小,没有卡二分的最小流写法,但是最小流不会有人写二分版吧。
非二分版的最小流只需要三步,又好写又快:
1、求扩展源ss到扩展汇tt的最大流ans1。
2、连接汇点t->源点s的INF边构造循环流。
3、在残量网络上再次求扩展源ss到扩展汇tt的最大流ans2。
若ans1+ans2满流,则ans2为源s到汇t的最小流,否则源s到汇t无可行流无解。

因为贪心提前给每个城堡都招募了P人,所以最终答案要减去Σp,所以答案为ans2-Σp

想学习更多图论知识,欢迎购买牛客图论课程。
牛客竞赛图论课程:https://ac.nowcoder.com/courses/cover/live/740

3条回帖

回帖
加载中...
话题 回帖

近期热帖

等你来战

查看全部

热门推荐