牛客周赛 Round 29(A B C D E)

目录

A.小红大战小紫

题目大意:

解题思路:

AC代码:

B.小红的白日梦

题目大意:

解题思路:

AC代码:

C.小红的小小红

题目大意:

AC代码:

D.小红的中位数

题目大意:

解题思路:

AC代码:

E.小红构造数组

题目大意:

解题思路:

AC代码1:

AC代码2:

总结:


A.小红大战小紫

题目大意:

输出胜负还是平局

解题思路:

A>B问题,签到

AC代码:

#include<bits/stdc++.h>
using namespace std;
#define int long long 
#define IOS ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
#define endl "\n";
int a[200100];
void solve()
{int a,b;cin>>a>>b;if(a>b){cout<<"kou"<<endl;}else if(b>a){cout<<"yukari"<<endl;}else{cout<<"draw"<<endl;}return ;
}
signed main()
{IOSint t=1;//cin>>t;while(t--)solve();return 0;
}

B.小红的白日梦

题目大意:

白天做梦幸福度+2,晚上做梦幸福度+1,白天和晚上做梦情况可交换。

解题思路:

直接判断两者做梦情况是否相等,不相等则幸福度+2,相等判断是否做梦,做梦则幸福度+3,不做梦则幸福度+0即不处理

AC代码:

#include<bits/stdc++.h>
using namespace std;
#define int long long 
#define IOS ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
#define endl "\n";
int a[200100];
void solve()
{int n,sum=0;string x,y;cin>>n;cin>>x>>y;for(int i=0;i<n;i++){if(x[i]!=y[i]){sum+=2;}else if(x[i]=='Y'){sum+=3;}}cout<<sum<<endl;return ;
}
signed main()
{IOSint t=1;//cin>>t;while(t--)solve();return 0;
}

C.小红的小小红

题目大意:

给你一个字符串,里面包含”xiao“字符串和”hong“字符串,让你重排一下,出现”xiaohong“即可(比赛时候理解错了,以为让把所有能组成xiaohong的都排一块,麻烦了点,但是能过,算是高质量通过吧)

解题思路:直接用string的库函数查找删除即可

AC代码:

#include<bits/stdc++.h>
using namespace std;int main()
{string s;cin>>s;int t=s.find("xiao");s.erase(t,4);t=s.find("hong");s.erase(t,4);cout<<"xiaohong"<<s<<endl;return 0;
}

D.小红的中位数

题目大意:

给你一个数组,将数组中从i到n的所有数全删一遍,每次删除后,判断当前数组中位数。

解题思路:


另开一个数组记录原数组,再将原数组升序排序,再用map对每个数出现的位置进行标记,最后对数组的长度奇偶进行判断,再将每次删除的数的排序后下标与n/2进行比较,对应输出即可

AC代码:

#include<bits/stdc++.h>
using namespace std;
#define int long long 
#define IOS ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
#define endl "\n";
int a[200100],b[200100];
void solve()
{int n;cin>>n;map<int,int>m;for(int i=1;i<=n;i++){cin>>a[i];b[i]=a[i];}sort(a+1,a+1+n);for(int i=1;i<=n;i++){m[a[i]]=i;}for(int i=1;i<=n;i++){if(n%2){int nn=n+1;if(m[b[i]]<(nn/2)){printf("%.1lf\n",(a[nn/2]*1.0+a[nn/2+1]*1.0)/2);}else if(m[b[i]]>(nn/2)){printf("%.1lf\n",(a[nn/2-1]*1.0+a[nn/2]*1.0)/2);}else{printf("%.1lf\n",(a[nn/2-1]*1.0+a[nn/2+1]*1.0)/2);}}else{if(m[b[i]]<(n/2)){cout<<a[n/2+1]<<".0"<<endl;}else if(m[b[i]]>(n/2)){cout<<a[n/2]<<".0"<<endl;}else{cout<<a[n/2+1]<<".0"<<endl;}}}return ;
}
signed main()
{IOSint t=1;//cin>>t;while(t--)solve();return 0;
}

E.小红构造数组

题目大意:

给你一个数,将他用多少个素数的乘积表示出来,并且相邻两个素数不能相同。

解题思路:

先用分解质因数记录素数的种类和个数,然后利用每次输出最大数量的素数和次大数量的素数来打印,用set集合结合pair实现排序和删除和插入操作,每次输出两个素数的值之后,将他们的数量减一并重新插入,每次插入时都要进行判空,然后直到最后一个单数1(无最大与次大之分,当素数数量为奇数时)直接输出,或者是为偶数2(一个最大一个次大直接)输出完直接结束。(周赛讲解里面讲的方法是先让最大和次大数量相等,然后再依次遍历输出,个人觉得没这个容易理解,AC代码2展示)

AC代码1:

#include<bits/stdc++.h>
using namespace std;
#define int long long 
#define IOS ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
#define endl "\n";
//int a[200100];
void solve()
{int n,i;map<int,int>m;   //记录每个素因子出现的次数。cin>>n;if(n==1){cout<<-1<<endl;return ;}for(i=2;i*i<=n;i++){while(n%i==0){m[i]++;n/=i;}}if(n>1)m[n]++;set<pair<int,int>>s;int sum=0,ma=0;for(auto i:m){sum+=i.second;ma=max(ma,i.second);s.insert({i.second,i.first});}if(ma-1>sum-ma){cout<<"-1"<<endl;return ;}cout<<sum<<endl;if(s.size()==1){cout<<(*(s.begin())).second<<endl;return ;}while(sum>0){if(sum==1){cout<<(*(s.rbegin())).second<<endl;return ;}auto temp=*s.rbegin();s.erase(temp);auto temp2=*s.rbegin();s.erase(temp2);if(temp.first!=temp2.first){cout<<temp.second<<" ";temp.first--;cout<<temp2.second<<" ";temp2.first--;sum-=2;if(temp.first)s.insert(temp);if(temp2.first)s.insert(temp2);}else{cout<<temp.second<<" "<<temp2.second<<" ";temp2.first--;temp.first--;if(temp.first)s.insert(temp);if(temp2.first)s.insert(temp2);sum-=2;}}return ;
}
signed main()
{IOSint t=1;//cin>>t;while(t--)solve();return 0;
}

AC代码2:

#include<bits/stdc++.h>
using namespace std;
#define int long long
// O(sqrt(n))分解n
// O(nlogn) 分解 1到n所有数
signed main(){int n,i;map<int,int>m;   //记录每个素因子出现的次数。cin>>n;if(n==1)return cout<<-1,0;for(i=2;i*i<=n;i++){while(n%i==0){m[i]++;n/=i;}}if(n>1)m[n]++;set<pair<int,int>>s;int sum=0,ma=0;for(auto i:m){sum+=i.second;ma=max(ma,i.second);s.insert({i.second,i.first});}if(ma-1>sum-ma)return cout<<-1,0;/*第一步:找到最大值和次大值(出现次数)。只要最大值和次大值不等,用一个最大值,再用一个前面的。*/cout<<sum<<'\n';if(s.size()==1){cout<<(*(s.begin())).second<<'\n';return 0;}while(sum>0){auto temp=*s.rbegin();s.erase(temp);auto temp2=*s.rbegin();s.erase(temp2);if(temp.first!=temp2.first){cout<<temp.second<<" ";temp.first--;if(temp.first){cout<<temp2.second<<" ";temp2.first--;}else break;s.insert(temp);s.insert(temp2);}else{s.insert(temp);s.insert(temp2);break;}sum--;}vector<pair<int,int>>v;for(auto i:s){v.push_back(i);}while(1){int jud=0;for(i=v.size()-1;i>=0;i--){if(v[i].first){cout<<v[i].second<<" ";v[i].first--;jud=1;}}if(!jud)break;}    return 0;
}

总结:

A题基础语法,B题简单模拟,C题字符串的简单使用,D题对中位数结合桶思想,E题考查分解质因数和思维.

F题博弈+概论dp,目前还不咋会,等过一段学的差不多了再补上

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/648495.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

04 约数

定义&#xff1a; 若整数n除以整数d的余数为0&#xff0c;即d能够整除n&#xff0c;n是d的倍数&#xff0c;记作d|n. 通过质因子求一个数的约数 如果n可以表示成 其中均为n的质因子 因为对于任意一个质因子都有选0个 选1个 选2个....选个共种可能&#xff0c; n的约数个数…

在DevEco开发工具中,使用Previewer预览界面中的UI组件

1、在DevEco工具中&#xff0c;点击并展开PreViewer预览器 2、在PreViewer预览器中&#xff0c;点击Tt按钮&#xff08;Inspector&#xff09;切换至组件查看模式 3、在组件查看模式下选择组件&#xff0c;代码呈现选中状态&#xff0c;右侧呈现组件树&#xff0c;右下方呈现组…

ARM 驱动 1.22

linux内核等待队列wait_queue_head_t 头文件 include <linux/wait.h> 定义并初始化 wait_queue_head_t r_wait; init_waitqueue_head(&cm_dev->r_wait); wait_queue_head_t 表示等待队列头&#xff0c;等待队列wait时&#xff0c;会导致进程或线程被休眠&…

4.调研什么样的框架可以提高ROI

一、回归本源&#xff0c;框架是为了支撑我们测试&#xff0c;所以我们对框架的要求 1.框架满足我们的测试需求 UI框架有对象识别能力API框架有http原语封装&#xff0c;对xml json支持单元测试框架有mock能力 2.框架应有广泛的同行用户、持续更新、成熟的社区和积极的客户响…

qiankun微前端部署(主/子应用部署在同一个服务)

一、部署配置 qiankun微前端改造配置就不记录了&#xff0c;只记录部署需要的配置 mypro&#xff1a;自定义的子应用名称 1. 主应用配置 &#xff08;1&#xff09;.env文件BASE_URL /MicroBase/&#xff08;2&#xff09; vue.config.js文件module.exports {publicPath: …

倍增算法笔记

主要应用场景 RMQ&#xff1a;区间最值问题 LCA&#xff1a;最近公共祖先问题 RMQ问题——区间最值 如果用数组f[N]存储,用数组a[i][j]表示从第i个数起连续 2^j 个数中的最大值,[i,i 2^j - 1],显然a[i][0] f[i],则很容易得到状态转移方程: a[i][j] max(a[i][j - 1], a[i …

读书笔记-《数据结构与算法》-摘要11[Divide and Conquer - 分治法]

在计算机科学中&#xff0c;分治法是一种很重要的算法。分治法即『分而治之』&#xff0c;把一个复杂的问题分成两个或更多的相同或相似的子问题&#xff0c;再把子问题分成更小的子问题……直到最后子问题可以简单的直接求解&#xff0c;原问题的解即子问题的解的合并。这个思…

电商API接口|爬虫案例|采集某东商品评论信息

前言&#xff1a; 平常大家都有网上购物的习惯&#xff0c;在商品下面卖的好的产品基本都会有评论&#xff0c;当然也不排除有刷评论的情况&#xff0c;因为评论会影响我们的购物决策。今天主要分享用pythonre正则表达式获取京东商品评论。API接口获取京东平台商品详情SKU数据…

11k+ star 一款不错的笔记leanote安装教程

特点 支持普通模式 支持markdown模式 支持搜索 安装教程 1.安装mongodb 1.1.下载 #下载 cd /opt wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-3.0.1.tgz 1.2解压 tar -xvf mongodb-linux-x86_64-3.0.1.tgz 1.3配置mongodb环境变量 vim /etc/profile 增…

电脑可以连接wifi,甚至可以qq聊天,但就是不能用浏览器上网,一直显示未检测出入户网线的解决方案

今天回到家&#xff0c;准备办公却发现电脑可以连接wifi&#xff0c;甚至可以qq聊天&#xff0c;但就是不能用浏览器上网&#xff0c;一直显示未检测出入户网线的解决方案&#xff0c;小白也可以看懂 以下有几种解决方案&#xff0c;不妨都试试&#xff0c;估计可以解决95%的相…

CANoe使用大全

本专栏为入门级别保姆教程&#xff0c;主要面对CANoe使用的零基础受众。 持续更新中… &#x1f697;【CANoe使用大全】——工程新建 &#x1f697;【CANoe使用大全】——DBC数据库制作 &#x1f697;【CANoe使用大全】——Trace窗口 &#x1f697;【CANoe使用大全】——Gr…

深入理解 MySQL 中的 HAVING 关键字和聚合函数

深入理解 MySQL 中的 HAVING 关键字和聚合函数 在处理数据库查询时&#xff0c;尤其是涉及到大量数据分析和报表生成的场合&#xff0c;了解如何有效使用 SQL 语句中的 HAVING 关键字和聚合函数变得尤为重要。 什么是 HAVING 关键字&#xff1f; HAVING 关键字在 SQL 语句中…

C#-前后端分离连接mysql数据库封装接口

C#是世界上最好的语言 新建项目 如下图所示选择框红的项目 然后新建 文件夹 Common 并新建类文件 名字任意 文件内容如下 因为要连接的是mysql数据库 所以需要安装 MySql.Data.MySqlClient 依赖; using MySql.Data.MySqlClient; using System.Data;namespace WebApplication1.…

MYSQL账号和权限配置

新增用户并回收root用户的权限 flush privileges; grant all privileges on *.* to root% identified by Test2024 with grant option; grant all privileges on *.* to magic% identified by Test2024 with grant option; flush privileges; select user,host from mysql.use…

Django 为应用定制化admin独立后台

定制后界面 在应用目录下找到admin.py并进行编辑 from django.contrib.admin import AdminSite from .models import Question,Choiceclass PollsAdminSite(AdminSite):site_header"Admin-site-header"site_title"admin-site-title"index_title"admi…

优雅的控制协程(goroutine)的并发数量

对golang熟悉的小伙伴都知道&#xff0c;在go中开启go协程是一件简单的事&#xff0c;只需要一个关键字”go“。 并且相比于线程&#xff0c;所需要的系统资源非常少。于是在程序中我们总会开启协程去并发获取数据。 例如&#xff1a; 商城首页&#xff0c;每个商品需要获取…

Conda 使用environment.yml创建一个新的Python项目

Conda系列&#xff1a; 翻译: Anaconda 与 miniconda的区别Miniconda介绍以及安装Conda python运行的包和环境管理 入门Conda python管理环境environments 一 从入门到精通Conda python管理环境environments 二 从入门到精通Conda python管理环境environments 三 从入门到精通…

Ansible自动化运维(三)Playbook 模式详解

&#x1f468;‍&#x1f393;博主简介 &#x1f3c5;云计算领域优质创作者   &#x1f3c5;华为云开发者社区专家博主   &#x1f3c5;阿里云开发者社区专家博主 &#x1f48a;交流社区&#xff1a;运维交流社区 欢迎大家的加入&#xff01; &#x1f40b; 希望大家多多支…

未来已来:OJAC诚邀您与张立赛博士解锁GPT Store的无限潜力!

亲爱的伙伴们&#xff01;本月31日晚上8:30&#xff0c;我们近屿智能OJAC的培训讲师——哈尔滨工业大学博士毕业生、前之江实验室资深研究员张立赛博士&#xff0c;将为我们带来一场深度技术更新讲座&#xff0c;深度探讨GPT Store的最新发展。 本次讲座将从GPT Store的基本概念…

Linux:shell脚本:基础使用(9)《数组》

数组就是一组数据类型相同集合 定义 数组名(元素内容…………) 如果没有元素内容就是空 arr1() # 定义了一个空数组 arr2(1 2 3 4 5 6 ) # 定义了一个元素是整形的数组 arr3("hello" "world" "你好" "世界") # 定义了一个元素为字符…