2020牛客NOIP赛前集训营-普及组(第二场) 题解
目录
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赛前集训营-普及组(第二场) 题解的更多相关文章
- 2020牛客NOIP赛前集训营-普及组(第二场)A-面试
面 试 面试 面试 题目描述 牛牛内推了好多人去牛客网参加面试,面试总共分四轮,每轮的面试官都会对面试者的发挥进行评分.评分有 A B C D 四种.如果面试者在四轮中有一次发挥被评为 D,或者两次发 ...
- 2020牛客NOIP赛前集训营-提高组(第三场)C-牛半仙的妹子Tree【虚树,最短路】
正题 题目链接:https://ac.nowcoder.com/acm/contest/7609/C 题目大意 给出\(n\)个点的一棵树,\(m\)个时刻各有一个操作 标记一个点,每个点被标记后的每 ...
- 2020牛客NOIP赛前集训营-提高组(第三场) C - 牛半仙的妹子Tree (树链剖分)
昨天教练问我:你用树剖做这道题,怎么全部清空状态呢? 我:???不是懒标记就完了??? 教练:树剖不是要建很多棵线段树吗,不止log个,你要一个一个清? 我:为什么要建很多棵线段树? ...
- 2020牛客NOIP赛前集训营-提高组(第二场)- B.包含 (FWT)
题面 题解 这题就是个快速沃尔什变换的模板题,输入ai时,令s[ai]=1,对s[]做一遍DWT_AND(s)(快速沃尔什正变换,按位与),然后直接访问s[x]完事. #include<map& ...
- 牛客网NOIP赛前集训营-普及组(第二场)和 牛客网NOIP赛前集训营-提高组(第二场)解题报告
目录 牛客网NOIP赛前集训营-普及组(第二场) A 你好诶加币 B 最后一次 C 选择颜色 D 合法括号序列 牛客网NOIP赛前集训营-提高组(第二场) A 方差 B 分糖果 C 集合划分 牛客网N ...
- [牛客网NOIP赛前集训营-普及组(第二场)]D-合法括号序列
链接:https://www.nowcoder.com/acm/contest/165/D来源:牛客网 合法括号序列 键盘上有左括号(,右括号),和退格键-,共三个键. 牛牛希望按键n次,使得输入的字 ...
- 牛客网NOIP赛前集训营-普及组(第七场)
链接:C 来源:牛客网 牛牛的同学给牛牛表演了一个读心术:牛牛先任意选定一个非负整数,然后进行N次操作:每次操作前,假设牛牛当前的数是a,那么这个操作可能是a = a + x, 或者a = a * x ...
- 牛客网NOIP赛前集训营-普及组(第一场)
前三题略 T4: 题目描述 小A有n个长度都是L的字符串.这些字符串只包含前8个小写字符,'a'~'h'.但这些字符串非常的混乱,它们几乎长得互不相同.小A想通过一些规则,让它们长得尽可能相同.小A现 ...
- Nowcoder | [题解-N165]牛客网NOIP赛前集训营-普及组(第二场)
啊...表示一大早还没睡醒就开始打比赛(开始前一分钟的我还在桌子上趴着休眠)...表示题目思路清奇(尤其C题)...但是我还是太蒻了...\(D\)题暴力都没打...题解正式开始之前先\(\%\)一下 ...
随机推荐
- vimdiff env.txt export.txt set.txt
1. 环境变量 简单理解了变量的概念,就很容易理解环境变量了.环境变量的作用域比自定义变量的要大,如 Shell 的环境变量作用于自身和它的子进程.在所有的 UNIX 和类 UNIX 系统中,每个进程 ...
- Docker的介绍和安装(1)
一.虚拟化简介 1.虚拟化概念 计算机虚拟化(Computing Virtualization),一种资源管理技术,是指通过虚拟化技术将一台计算机的各种实体资源 , 如处理器 , 网络 , 内存及存储 ...
- 分布式存储ceph---ceph添加/删除osd(5)
一.添加osd 当前ceph集群中有如下osd,现在准备新添加osd: 1.选择一个osd节点,添加好新的硬盘: 2.显示osd节点中的硬盘,并重置新的osd硬盘: 列出节点磁盘:ceph-deplo ...
- CentOS 6.5新增加硬盘挂载并实现开机自动挂载
Centos7.x请参考:https://www.cnblogs.com/himismad/p/7851548.html 在内网主机Centos 6.5新增一个50G硬盘 (搭建在CAS服务器,直接新 ...
- Python数模笔记-Scipy库(1)线性规划问题
1.最优化问题建模 最优化问题的三要素是决策变量.目标函数和约束条件. (1)分析影响结果的因素是什么,确定决策变量 (2)决策变量与优化目标的关系是什么,确定目标函数 (3)决策变量所受的限制条件是 ...
- 大数据开发-Flink-窗口全解析
Flink窗口背景 Flink认为Batch是Streaming的一个特例,因此Flink底层引擎是一个流式引擎,在上面实现了流处理和批处理.而Window就是从Streaming到Batch的桥梁. ...
- [Django高级之forms组件]
[Django高级之forms组件] forms组件之校验字段 # 第一步:定义一个类,继承forms.Form # 第二步:在类中写字段,要校验的字段,字段属性就是校验规则 # 第三步:实例化得到一 ...
- 用golang刷LeetCode
用golang刷LeetCode 用Go语言刷LeetCode记录,只是为了练习Go语言,能力有限不保证都是最优解,只能在此抛转引玉了. 数据结构和算法 数据结构和算法是程序员的命根子,没了命根子也就 ...
- redis中AOF和RDB的关闭方法
redis中AOF和RDB的关闭方法 问题:当往redis中导入数据时,有时会出现redis server went away的情况: 原因: 导入的数据量太大,而内存不够(即内存1G,但数据有2 ...
- ML Pipelines管道
ML Pipelines管道 In this section, we introduce the concept of ML Pipelines. ML Pipelines provide a uni ...