首页 > 其他分享 >牛客2022跨年场

牛客2022跨年场

时间:2023-01-02 11:35:29浏览次数:60  
标签:输出 小沙 int 牛客 2022 YES 跨年场 输入 数字

牛客2022跨年场

image

F题使用python,就是加了一个end = '\0',然后寄了好多。

A 猜群名

小沙为了这场元旦比赛绞尽脑汁,他现在在每个题目中藏入了一个字,收集所有的字,并将按照题号排列成一句话即可通过本题!

其次关于本场比赛难度预告:

输入描述:

输出描述:

将每个题隐藏的文字按照题号的顺序进行输出。
例如:
ABCDEFGH

首先有两个误区:

  1. 题目包括具体的内容而不仅仅是题目的“题目”(标题)
  2. 文字不一定是文字,也有可能是感叹号

对应情况:

A-> !
B-> A
C-> K
D-> 百
E-> 跨
F-> 赛
G-> 年
H-> 五

跨年五百AK赛!

print('EGHDBCFA')

B 分赃

题目描述

小沙和兰子在分赃(bushi,他们获得了一个长度为 �n 的数列 A ,他们都觉得如果一个数字自己只拥有一个,那么他是有用的,如果拥有了两个及以上那么就会变得不珍惜。
所以我们定义,对于每个人他的快乐值为他所拥有的数字中独一无二的个数。请问你能否让兰子和小沙的快乐值相等。
例如对于数列 1 2 2 3 3 3 ,小沙可以获得 1 2 3 3 ,兰子可以获得 2 3 ,他们的快乐值都为 2 。因为小沙手中独一无二的有 1 和 2 ,兰子手中独一为二的有 2 和 3 。

小沙和兰子的分赃结果中,允许有人获得的数字数目为 0 。

输入描述:

第一行输入一个整数n,代表数列的长度,1≤n≤105。
第二行输入n个整数a,1≤ai​≤105。

输出描述:

如果可以相等那么输出"YES"(不带引号)
否则输出"NO"(不带引号)。

示例1

输入

6
1 2 2 3 3 3

输出

YES

首先,我们分析:

对于某一个数字,如果有一个,那么必须要分给一个人,所以必定会引起一个人的快乐值变化

如果某个数字的个数是2,如果全部给一个人,不影响快乐值,如果分给两个人,不影响快乐值的大小。
综上:出现两次的数字相当于没有出现

如果某个数字出现的次数大于等于3,那么可以给一个人分给1,另一个2,可以给一个人增加快乐值。也可以全部给一个人,使得这个数字作废。

所以:

  • 对于出现一次的,如果个数是偶数,那么均分,大于等于三的(有的话)全部给一个人。
  • 对于出现一次的,如果个数是奇数,均分,显然一个人的比另一个人的数字多一。
    如果有大于等于三的,那么可以填补平。
    如果没有,就寄了。
#include <bits/stdc++.h>
using namespace std;
#define N 100200
int n;
int a[N];
int f[N];
int cnt[N];
int main()
{
    scanf("%d", &n);
    for(int i = 1; i <= n; i++){
        scanf("%d", a+i);
    }   
    for(int i =1; i <= n; i++){
        f[a[i]]++;
    }
    int n1 = 0, n2 = 0, n3 = 0; 
    for(int i = 1; i <= 1e5; i++){
        if(f[i] == 1) n1++;
        else if(f[i] >= 3) n2 ++;
        //else if(f[i] >= 4) n3 ++;
         
    }
    if(n2) puts("YES");
    else{
        if((n1)%2){
            puts("NO");
        }
        else{
            puts("YES");
        }
    }
    return 0;
}

C 翻卡牌

小沙有9张扑克牌,上面分别有 A23456789 各一张,没有 10JQK 。其中 A 我们使其为数字 1 ,下文也皆由数字 1 表示。现在小沙将其打乱,排列至一排,全部背置。
小沙手里有一个神秘的魔法,可以对于这九张扑克牌从前往后拼成的九位数,会将其复制一份前后拼接成一个十八位数字,然后获得该数字对 7 取模之后的金币数。
例如小沙手上的扑克牌全部翻开之后为 2 5 4 3 6 7 1 9 8,拼接之后的九位数为 254367198 ,复制一份之后为 254367198254367198 ,对7取模之后为 0,所以小沙无法获得金币。
现在小沙将问题抛给你,小沙会翻开几张(可能是 0 )扑克牌,剩下几张扑克牌仍处于背置状态。小沙想你帮他算一下,剩下的所有可能出现的情况中,小沙赚金币的期望是多少。

image

输入描述:

输出一行长度为9的字符串,其中仅包括数字1到9,和字符?。其中?代表该位置未翻开。

输出描述:

输出一个整数代表答案。

输入

254367?9?

输出

0

说明

无论结果是 254367198还是254367891他们获得的金币都是0个。

这一道题目可以使用暴力:

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
ll a[15];
char s[20];
const int mod = 1e9+7;
bool ck()
{
    for(int i = 1; i <= 9; i++){
        if(s[i] != '?' && (ll)a[i] + '0' != (ll)s[i]) return false;
    }
    return true;
}
ll ksm(ll a, ll b){
    ll ret = 1;
    while(b){
        if(b & 1) ret = ret * a % mod;
        a = a * a % mod;
        b >>= 1;
    }
    return ret;
}
int main()
{
    ll cnt = 0;
    ll ans = 0;
    for(int i = 1; i <= 9; i++){
        a[i] = i;
    }   
    scanf("%d", s+1);
    do{
        if(!ck()) continue;
        ll tmp = 0;
        for(int i = 1; i <= 9; i++) tmp = tmp * 10 + a[i];
        for(int i = 1; i <= 9; i++) tmp = tmp * 10 + a[i];
        cnt ++;
        ans = (ans + tmp) % mod;
    }while(next_permutation(a+1, a+9+1));
    printf("%lld", ksm(ans, mod - 2));
    return 0;
}

但是官方的题解中,复制一遍相当于乘以1000000001,而有\(1000000001/7 = 142,857,143\)可以整除。所以最终的答案一定是0

print(0)

D ygg的分数运算

image

示例1

输入

2 3 18

输出

YES

输入

3 5 10

输出

NO

在这一道题目中,

\[\frac{1}{a} + \frac{1}{b} = \frac{a + b}{a\times b} \]

\[\frac{1}{a} \times \frac{1}{b} = \frac{1}{a\times b} \]

在相加的过程中,可能会产生约分,但是分母是可以表示为两个素数的乘积,所以无伤大雅,约分之后还是这两个素数某次方的乘积。

所以仅仅使用乘法运算所得到的情况等价于使用两种运算得到的情况。

在这里我顿时想起了《NOJ.加一乘二平方》,使用了伟大的《分支限界法》,暴力枚举了经过若干次乘法的所有情况。

#include <bits/stdc++.h>
using namespace std;
#define int long long
int a, b, c;
queue<int> q;
map<int, bool> vis;
bool bfs()
{
    q.push(a);   
    q.push(b);
    vis[a] = 1;
    vis[b] = 1;
    if(a == c || b == c) return true;
    while(q.size()){
        int  t = q.front();
        q.pop();
        int nx = t * a;
        if(nx <= 1e9)
        {
            if(!vis[nx]){
                q.push(nx);
                vis[nx] = 1;
            }
            if(nx == c) return true;
        }
        nx = t * b;
        if(nx <= 1e9)
        {
            if(!vis[nx]){
                q.push(nx);
                vis[nx] = 1;
            }
            if(nx == c) return true;
        }
    }  
    return false; 
}
signed main()
{
    scanf("%lld%lld%lld", &a, &b, &c);
    if(bfs()){
        puts("YES");
    }  
    else{
        puts("NO");
    }
    return 0;
}

但是在这里,好像仅仅用c除以a,b看余数是不是等于0就可以了

#include <bits/stdc++.h>
using namespace std;
int main()
{
    int a, b, c;
    scanf("%d%d%d", &a, &b, &c);
    while(c % a == 0) c /= a;
    while(c % b == 0) c /= b;
    if(c == 1)puts("YES");
    else puts("NO");
    return 0;
}

EFG

由于太水,不做题解

H nana吃蛋糕

题目描述

nana有一天肚子很饿,呜呜,很想吃蛋糕,她进入了一个边长大小为 n 的蛋糕正方形方阵,每一个矩阵方格上面都会放置一些蛋糕,我们规定( x , y )代表矩阵的第 x 行第 y 列,nana出发的起点为( 1 , 1 ),终点为( n , n )。

她遵循以下四种行走方式,同时她每个格子只能走一次:
image
如果该行走方式会跨越边界,那么nana会从另一边出现。

例如:

红色地点向右行走会到达蓝色地点。

上下边界同理。

问nana最多能吃到多少蛋糕

标签:输出,小沙,int,牛客,2022,YES,跨年场,输入,数字
From: https://www.cnblogs.com/xjsc01/p/17019625.html

相关文章

  • 2022年最有开创性的10篇AI论文总结
    2022年随着聊天GPT和Mid-journey和Dall-E等图像生成器的流行,我们看到了整个人工智能领域的重大进展。在人工智能和计算机科学的时代,这是令人振奋的一年。本文我们总结了......
  • 2022前端二面react面试题(边面边更)
    何为JSXJSX是JavaScript语法的一种语法扩展,并拥有JavaScript的全部功能。JSX生产React"元素",你可以将任何的JavaScript表达式封装在花括号里,然后将其嵌入到JS......
  • 牛客练习赛107
    挺有难度的比赛。A求\((n!)!\modm,n,m\le1e6\)容易发现n!>m之后答案为0。B仔细看题。考虑两个序列中的1能不能都放在一号位可以的话就是最优的。不能的话考虑一个......
  • 2022-12月读书整理
    12月读书整理:12.10认识自己,选择生活唯一不变的是改变本身。Theonlythingthatdoesn'tchangeischangeitself.12.11精要主义试图做所有“正确”的事情,追求尽善......
  • .NET周报【12月第4期 2022-12-31】
    祝大家新年快乐!国内文章『再看.NET7』数值类型https://mp.weixin.qq.com/s/ctiBMPY6Hditk81AzHSRng在C#中,有int16,用short来定义;有int32,用int定义;用int64,用long来定义......
  • 云锵投资 2022 年收益统计及 12 月简报
    本月是本年度最后一月,对本年的各策略进行了年度的收益统计:2022年12月云锵投资团队月报:摘要本月量化基金策略业绩:中;本月量化股票策略业绩:中;(优良中差,表明全国排名......
  • Metagenome宏基因组 singularity 容器安装使用 2022.12.29 -2022.01.01
    exportPATH=/home/ubuntu/software:$PATH#PATH=PWD:$PATHcondacreat-cbioconda-nname_envsfastqc#conda子环境安装fastqccondaactivatename_envs#切换到子环境......
  • Codeforces Round #840 (Div. 2) and Enigma 2022 - Cybros LNMIIT A--B
    ​​https://codeforces.com/contest/1763​​A.AbsoluteMaximization二进制操作经典的利用二进制位数操作的题,|和&。最大值肯定是所有元素的或。最小值是所有元素的与......
  • 【2022年年终总结-个人】
    先反问自己除专业和工作外,业余时间在干什么呢?手机有哪些必备应用呢?每日是否在荒废时间呢?生于忧患是否是时刻在准备着?在过去的一年里对家或对社会做了哪些贡献?提升了哪些生......
  • 我的2022年度总结
    看博客园的很多技术大牛都写了,自己也来水一水丢丢人。\(What\I\achieved\in\2022?\)\(NOIP\)和\(CSP\)场外同步混赛(\(AH\)疫情)\(1=\)\(whk\)的\(rk\)升了一倍,没......