T1 面试

描述

题目描述

牛牛内推了好多人去牛客网参加面试,面试总共分四轮,每轮的面试官都会对面试者的发挥进行评分。评分有 A B C D 四种。如果面试者在四轮中有一次发挥被评为 D,或者两次发挥被评为 C,就不会通过面试。如果面试者没有一次被评为 D,并且有三个或以上的 A,则会获得 special offer。其余情况会获得普通 offer。

现在告诉你一些面试者的发挥,请你算一算,他们的面试结果分别是什么。

输入描述:

第一行输入一个 T,代表面试者的个数。

接下来有 T 行,每行都有一个长度为 4 的字符串,每个位置的字符分别代表面试者每一轮的发挥。

输出描述:

输出 T 行,分别表示 T 个面试者的面试结果。如果面试失败,输出failed,如果面试通过,但不是 special offer,则输出offer,否则输出 sp offer。

题解

人口普查

代码

#include<bits/stdc++.h>
using namespace std; int main(){
int n;
cin>>n;
for(int i=1;i<=n;i++){
char a[15];
scanf("%s",a+1);
int ans1=0,ans2=0;
bool f=0;
for(int j=1;j<=4;j++){
if(a[j]=='C'){
ans1++;
}
if(a[j]=='D'){
f=1;
}
if(a[j]=='A'){
ans2++;
}
}
if(f||ans1>=2){
printf("failed\n");
continue;
}
if(ans2>=3&&f==0){
printf("sp offer\n");
continue;
}
printf("offer\n");
}
return 0;
}

T2 纸牌游戏

描述

题目描述

公司举办团建活动,许多人在一起玩一个纸牌游戏。规则如下:

总共有 n 个人,每个人初始有 n 张牌。每一轮从第一个人开始轮流操作,第 i 个人每次操作必须选min(people-1,ai) 个不同的人,分别从他们手中拿走一张牌。其中people 为游戏现存人数,手上没有牌的人立即被淘汰出局。大家希望有尽可能多的人出局,游戏无限的进行下去,问最终游戏中最少还有几个人没有出局。

注意:不能从自己手中拿牌

输入描述:

第一行输入一个数字 n, 代表游戏的总人数。接下来输入 n 个数字,分别代表 ai

输出描述:

输出一行一个整数表示游戏最终最少剩几个人。

题解

贪心

对于每个人,如果他现在可以抽取的牌数小于当前人数-1,则他一定会被别人淘汰

如果现在的所有人都可以抽取当前人数-1张牌,那么游戏就可以无限进行下去

代码

#include<bits/stdc++.h>
using namespace std; int n;
int a[100005]; priority_queue <int,vector<int>,greater<int> > q; int main(){
scanf("%d",&n);
for(int i=1;i<=n;i++){
scanf("%d",&a[i]);
q.push(a[i]);
}
while(n>1){
int x=q.top();
if(x>=n-1){
printf("%d",n);
return 0;
}
else{
q.pop();
n--;
}
}
printf("%d",n);
return 0;
}

T3 涨薪

描述

题目描述

公司中总共有 n 个人,其中第 i 个人的初始工资为 ai
。公司根据每个人的绩效(工作表现)来评定每个人的涨薪幅度。每年有 x 个人绩效为 A,工资可以变为原来的 3 倍;y 个人绩效为 B,工资可以变为原来的 2 倍,其余人绩效为 C,工资不变,连续两年绩效为 C 会被开除。

假如公司没有一直招聘新员工,请问 m 年后,公司需要给所有在职员工支付的工资总和最多为多少。由于答案可能很大,请输出对 10^9+7 取模后的结果。

输入描述:

输入第一行包含四个正整数 n, m,x,y,意义如题面所示。

接下来一行包含 n 个正整数,第 i 个正整数为 ai

代表第 i 个人的初始工资。

输出描述:

输出一行一个整数表示 m 年后工资总和对 10^9+7 取模后的结果。

题解

贪心易得,绩效得C 的人一定是初始薪资最少的人。

其余的人进行排序,最大的x个和次大的y个分别乘3和2,其余的都不要;

因为有m天,每天都是乘同样的数,所以快速幂;

值得注意的是,如果m==1,则所有的人都不会被开除,需要特判;

代码

#include<bits/stdc++.h>
using namespace std;
const long long Mod=1e9+7; long long a[100005]; bool cmp(long long a,long long b){
return a>b;
} long long Pow(long long a,int b){
long long ans=1;
while(b){
if(b&1){
ans=ans*a%Mod;
}
a=a*a%Mod;
b>>=1;
}
return ans;
} long long sum=0; int main(){
int n,m,x,y;
scanf("%d%d%d%d",&n,&m,&x,&y);
for(int i=1;i<=n;i++){
scanf("%lld",&a[i]);
sum=sum+a[i]%Mod;
}
sort(a+1,a+n+1,cmp);
int len=0;
long long sum1=0,sum2=0;
while(len<x){
sum1=sum1+a[++len]%Mod;
}
while(len<x+y){
sum2=sum2+a[++len]%Mod;
}
sum=sum-sum1-sum2;
sum1=sum1*Pow(3,m)%Mod;
sum2=sum2*Pow(2,m)%Mod;
if(m==1){
sum1=sum1+sum%Mod;
}
printf("%lld",(sum1+sum2)%Mod);
return 0;
}

T4

描述

题目描述

给出一个序列A,其中第 i 个数字为 ai,你每次操作可以选择一个数字不变,其他数字乘以 x,其中 x 为任意素数

无需考虑这些数字在变换过程中是否超过 long long 的存储范围。请回答:最少经过多少次操作,可以使得序列中所有数字全部相同。

输入描述:

第一行包含一个正整数 n,代表序列长度。

接下来一行包含 n 个正整数,描述序列中的每一个元素。

输出描述:

输出一行一个正整数表示答案。

题解

对于任何一列数来说,选取一个数,让其它数乘一个素数其实就等价于让选取的数除以一个素数,所以这道题就转换为如下题目:

给定一个序列,其中第 i 个数字为 ai,你每次操作可以选择一个数字除以x,x为任意素数,请问最少经过多少次操作,可以使得序列中所有数字全部相同。

让所有数字相同,即使所有数字的GCD,于是它又可以转换为如下题目:

给定一个序列,其中第 i 个数字为 ai,你每次操作可以选择一个数字除以x,x为任意素数,请问最少经过多少次操作,才可以让每个数都变成所有原数的GCD。

所以就很简单了,分解序列中每个数的质因数,除去GCD,相加

代码

#include<bits/stdc++.h>
using namespace std; int Prime[10005];
bool f[1000005];
int n;
int a[1000005]; void In_prime(){
for(int i=2;i<=1e3;i++){
if(!f[i])
Prime[++Prime[0]]=i;
for(int j=0;j<Prime[0]&&i*Prime[j]<=1e3;j++)
f[i*Prime[j]]=1;
}
} int GCD(int a,int b){
if(b==0){
return a;
}
return GCD(b,a%b);
} int main(){
In_prime();
cin>>n;
for(int i=1;i<=n;i++){
scanf("%d",&a[i]);
} int sum=a[1];
for(int i=2;i<=n;i++){
sum=GCD(sum,a[i]);
}
for(int i=1;i<=n;i++){
a[i]/=sum;
}
int tot=0;
for(int i=1;i<=n;i++){
for(int j=1;j<=Prime[0]&&Prime[j]*Prime[j]<=a[i];j++){
while(a[i]%Prime[j]==0){
tot++;
a[i]/=Prime[j];
}
}
if(a[i]!=1){
tot++;
}
}
printf("%d\n",tot);
return 0;
}

2020牛客NOIP赛前集训营-普及组(第二场) 题解的更多相关文章

  1. 2020牛客NOIP赛前集训营-普及组(第二场)A-面试

    面 试 面试 面试 题目描述 牛牛内推了好多人去牛客网参加面试,面试总共分四轮,每轮的面试官都会对面试者的发挥进行评分.评分有 A B C D 四种.如果面试者在四轮中有一次发挥被评为 D,或者两次发 ...

  2. 2020牛客NOIP赛前集训营-提高组(第三场)C-牛半仙的妹子Tree【虚树,最短路】

    正题 题目链接:https://ac.nowcoder.com/acm/contest/7609/C 题目大意 给出\(n\)个点的一棵树,\(m\)个时刻各有一个操作 标记一个点,每个点被标记后的每 ...

  3. 2020牛客NOIP赛前集训营-提高组(第三场) C - 牛半仙的妹子Tree (树链剖分)

    昨天教练问我:你用树剖做这道题,怎么全部清空状态呢?    我:???不是懒标记就完了???    教练:树剖不是要建很多棵线段树吗,不止log个,你要一个一个清?    我:为什么要建很多棵线段树? ...

  4. 2020牛客NOIP赛前集训营-提高组(第二场)- B.包含 (FWT)

    题面 题解 这题就是个快速沃尔什变换的模板题,输入ai时,令s[ai]=1,对s[]做一遍DWT_AND(s)(快速沃尔什正变换,按位与),然后直接访问s[x]完事. #include<map& ...

  5. 牛客网NOIP赛前集训营-普及组(第二场)和 牛客网NOIP赛前集训营-提高组(第二场)解题报告

    目录 牛客网NOIP赛前集训营-普及组(第二场) A 你好诶加币 B 最后一次 C 选择颜色 D 合法括号序列 牛客网NOIP赛前集训营-提高组(第二场) A 方差 B 分糖果 C 集合划分 牛客网N ...

  6. [牛客网NOIP赛前集训营-普及组(第二场)]D-合法括号序列

    链接:https://www.nowcoder.com/acm/contest/165/D来源:牛客网 合法括号序列 键盘上有左括号(,右括号),和退格键-,共三个键. 牛牛希望按键n次,使得输入的字 ...

  7. 牛客网NOIP赛前集训营-普及组(第七场)

    链接:C 来源:牛客网 牛牛的同学给牛牛表演了一个读心术:牛牛先任意选定一个非负整数,然后进行N次操作:每次操作前,假设牛牛当前的数是a,那么这个操作可能是a = a + x, 或者a = a * x ...

  8. 牛客网NOIP赛前集训营-普及组(第一场)

    前三题略 T4: 题目描述 小A有n个长度都是L的字符串.这些字符串只包含前8个小写字符,'a'~'h'.但这些字符串非常的混乱,它们几乎长得互不相同.小A想通过一些规则,让它们长得尽可能相同.小A现 ...

  9. Nowcoder | [题解-N165]牛客网NOIP赛前集训营-普及组(第二场)

    啊...表示一大早还没睡醒就开始打比赛(开始前一分钟的我还在桌子上趴着休眠)...表示题目思路清奇(尤其C题)...但是我还是太蒻了...\(D\)题暴力都没打...题解正式开始之前先\(\%\)一下 ...

随机推荐

  1. [刷题] 79 Word Search

    要求 给定一个二维平面的字母和一个单词,从一个字母出发,横向或纵向连接二维平面上的其他字母 同一位置的字母只能使用一次 示例 board = [   ['A','B','C','E'],   ['S' ...

  2. [刷题] 437 Paths Sum III

    要求 给出一棵二叉树及一个数字sum,判断这棵二叉树上存在多少条路径,其路径上的所有节点和为sum 路径不一定始于根节点,终止于叶子节点 路径要一直向下 思路 分情况讨论:根节点在路径上(8) / 根 ...

  3. Zookeeper——Docker下安装部署

    单节点安装 一. 环境说明 docker: 18.09.9-ce zookeeper: 3.5.6 二. 拉取 zookeeper 镜像 拉取镜像 docker pull zookeeper 默认是摘 ...

  4. 007.Ansible变量Fact,魔法变量和lookup生成变量

    一 fact变量 1.1  fact简介 ansible有一个模块叫setup,用于获取远程主机的相关信息,并可以将这些信息作为变量在playbook里进行调用.而setup模块获取这些信息的方法就是 ...

  5. git cherry-pick(不同分支的提交合并)

    git cherry-pick可以选择某一个分支中的一个或几个commit(s)来进行操作.例如,假设我们有个稳定版本的分支,叫v2.0,另外还有个开发版本的分支v3.0,我们不能直接把两个分支合并, ...

  6. JavaSE 知识图谱

    JAVA基础语法 DOS命令 JAVA介绍 JDK安装 JAVA环境的搭建 关键字 注释 标识符命名规则(编码规范) 字面值常量 进制转换 基本类型 变量(局部变量.静态变量) 运算符 表达式 控制语 ...

  7. C++的构造函数为何不能为虚函数

    1. 存储空间角度:虚函数对应一个vtable,vtable存储于对象的内存空间 若构造函数是虚的,则需要通过 vtable来调用,若对象还未实例化,即内存空间还没有,无法找到vtable 2. 使用 ...

  8. Linux Access.conf安全配置

    access.conf is the configuration file used to logins to the Linux or Unix systems. This file is loca ...

  9. 使用nuget包下载Entity Framework6.0无法使用模型类与数据库上下文自动生成controller与view

    解决方法:卸载掉原有的6.0版本EF,从控制台安装5.0版本的. >工具>库程序包管理器>程序包管理器控制台.在PM>后面输入安装命令. 命令如下 Install-Packag ...

  10. spark算子优化

    一.在聚合前在map端先预聚合 使用reduceByKey/aggregateByKey代替groupByKey 二.一次处理一个分区的数据,不过要注意一个分区里的数据不要太大,不然会报oom * 使 ...