预备役二招算法测试题解

这次题目出的都是一些偏向于基础的题目,就是一些简单的模拟,思维,以及基础算法(二分,前缀和)

(点击题目标题,进入原题)

我是签到题

题解:就是说给你 t 组数据,然后每组数据输入两个,一个x,一个y,然后先输出其中的最小值,再输出其中的最大值。

#include<bits/stdc++.h>
using namespace std; long long x,y;
int main()
{long long t;cin>>t;while(t--){cin>>x>>y;printf("%lld %lld\n",min(x,y),max(x,y));}return 0;
}

能否形成不同的矩形

 

 

题解:能够拆开并且拼凑到一起的边一定是偶数,因此,我们就是单纯去模拟就可以了,如果是偶数就去分开,将其拼凑在一起,判断和之前的是否形成了不一样的矩形(纯粹的模拟题,题目上咋说,你去就咋做)

#include<bits/stdc++.h>
using namespace std;
#define int long longint t;
int a,b;
signed main()
{ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);cin>>t;while(t--){int flag=0;cin>>a>>b;int x=0,y=0;if(a%2==0){y=2*b;x=a/2;if(x!=a&&y!=b&&x!=b&&y!=a){flag=1;}}if(b%2==0){y=b/2;x=2*a;if(x!=a&&y!=b&&x!=b&&y!=a){flag=1;}}if(flag==1){cout<<"YES\n";}else{cout<<"NO\n";}}return 0;
}

能否形成不同的字符串

题解:这题比第二个还简单,只需要判断是否能够形成不同的字符串,首先就是你得先判断字符串里面是否有不同的字母,如果没有肯定 是NO,如果有不同的字母,输出YES,并且随机交换两个不同的字母输出就行

#include<bits/stdc++.h>
using namespace std; 
string s;
int t;
int flag;
char r[5000005];
int x,y;
int main()
{cin>>t;while(t--){flag=0;cin>>s;int len=s.size();for(int i=1;i<len;i++){if(s[i]!=s[i-1]){flag=1;x=i,y=i-1;}}for(int i=1;i<len;i++){r[i-1]=s[i];}r[len-1]=s[0];if(flag==0)printf("NO\n");else{printf("YES\n");for(int i=0;i<len;i++){printf("%c",r[i]);}printf("\n");}}return 0;
}

查找

 

这题唯一考点就是二分查找,并且数据结构课应该讲过(我不怎么听课,我不确定,应该是讲过的)

#include<bits/stdc++.h>
using namespace std;int n,m;
int a[1000005];
int target,l,r,mid;
int main()
{scanf("%d%d",&n,&m);for(int i=1;i<=n;i++){scanf("%d",&a[i]);}for(int i=1;i<=m;i++){scanf("%d",&target);l=1;r=n;while(l<r){mid=(l+r)/2;if(a[mid]>=target)r=mid;elsel=mid+1;}if(a[l]==target)printf("%d ",l);elseprintf("-1 ");}return 0;
}

A. Contest Proposal

这题就是说有n个题目,每个题目的难度为a[i],要求每个题目的难度不大于对应的b[i],每次可以添加一个题目并且删去最难的题目,求最多能添加几个题目

思路很简单,只要a[i]>b[i],那么就将a[i]改成b[i],并且重新对数组进行排序,然后继续比较就行

#include<bits/stdc++.h>
using namespace std;
#define ll long long
ll t;
ll n;
ll a[105];
ll b[105];
void solve(){ll u = n;ll sum = 0;for(int i=n;i>=1;i--){if(a[i]>b[u]){sum++;}else {u--;}}printf("%lld\n",sum);
}
int main()
{cin>>t;while (t--) {cin>>n;for (int i = 1; i <= n; i++)cin>>a[i];for (int i = 1; i <= n; i++)cin>>b[i];solve();}return 0;
}

B. Sasha and the Drawing

题解:纯思维性题目,做不出来也算正常,这题 自己在本子上画的话,会发现最多只有前n - 1给才能占两个对角线,也就是2*(n-1)个对角线,剩下的一个涂色只能占一个对角线,因此我们通过这个思路去计算即可

#include<bits/stdc++.h>
using namespace std;
#define int long long
int t;
int n,k;signed main()
{cin>>t;while(t--){cin>>n>>k;int sum=2*n-2;if(k<=(2*n-2)*2){if(k%2==0)cout<<k/2<<"\n";elsecout<<k/2+1<<"\n";}else{int cnt=2*n-2;k-=(2*n-2)*2;cnt+=k;cout<<cnt<<"\n";}}return 0;
}

P1314 [NOIP2011 提高组] 聪明的质监员

题意:就是说给你n个矿石,然后,这n个矿石都有自己的重量w,以及其价值v,我们有一种判断机制,就是说给你m个区间范围,每次给你一个左边界L和右边界R,我们的计算机理是,这个区间内的大于规定筛选重量W的数量,乘以大于筛选重量的价值,然后将总的算出来的y累加到一起,看看和规定的标准值S最小差多少,输出最小的参数W

思路,我们发现这题数据超大,必然会有优化方法,我们通过上面·的题意可以发现,我们的参数设置的越大,能过筛选的石头越少,得到的y值越小,设置的越小,能筛选过的石头越多,得到的y值越大,因此我们可以用二分(二分的范围就是给的数据的石头的最小值到最大值,但是我们还要扩增范围,最小值减一,最大值加二)然后我们每次二分的就是参数W,然后在计算过程中要用到前缀和优化,我们要去记录出现的大于参数的矿石数目以及总价值,然后我们去计算总的Y值,Y值大于标准值S就说明,我们的参数设置的小了,要增大左边界,要是小于标准值,就说明,我们的参数设置的太大了,要缩小右边界

#include<bits/stdc++.h>
using namespace std;
#define int long long
int n,m,s;
int w[200005];
int v[200005]; 
int l[200005],r[200005];
int maxn=0;
int minn=0x3f3f3f3f3f3f3f3f;
int sumn[200005];
int sumv[200005];
int ans=0;//统计本次筛选的总价值
int mn=0x3f3f3f3f3f3f3f3f;//统计最小差值 
bool check(int mid)
{memset(sumn,0,sizeof(sumn));memset(sumv,0,sizeof(sumv));int ans=0;//统计总的价值也就是y[i] for(int i=1;i<=n;i++){if(w[i]>=mid){sumn[i]=sumn[i-1]+1;//统计能过筛查的数量sumv[i]=sumv[i-1]+v[i];//统计能过筛查的价值 }else{sumn[i]=sumn[i-1];sumv[i]=sumv[i-1];}}for(int i=1;i<=m;i++){ans+=(sumn[r[i]]-sumn[l[i]-1])*(sumv[r[i]]-sumv[l[i]-1]);}mn=min(mn,llabs(ans-s));if(ans>s)return true;return false;
}
signed main()
{cin>>n>>m>>s;for(int i=1;i<=n;i++){cin>>w[i]>>v[i];maxn=max(maxn,w[i]);//二分的上下边界 minn=min(minn,w[i]);}int left,right,mid;for(int i=1;i<=m;i++){cin>>l[i]>>r[i];}left=minn-1,right=maxn+2;while(left<=right){mid=(left+right)/2;if(check(mid)){left=mid+1;}else{right=mid-1;}}cout<<mn;return 0;
}

 

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

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

相关文章

每日鲜语携手中国国家高尔夫球队队员殷若宁征战巴黎,打响中国高端鲜奶品牌“鲜”声量

近日&#xff0c;高端鲜奶品牌每日鲜语宣布携手蒙牛品牌代言人、中国国家高尔夫球队队员殷若宁&#xff0c;共赴巴黎奥运赛场&#xff0c;为梦想挥杆而上。邀请众多消费者开启高品质、健康的生活方式。此举不仅彰显了每日鲜语作为高端鲜奶新标杆的品牌定位&#xff0c;也同时延…

vue2.0项目安装依赖 sass 报错

1、报错代码&#xff1a; 2、原因&#xff1a;项目有点老&#xff0c;vue2的版本&#xff0c;所以node-sass在npm安装的时候大概率的会安装出错&#xff0c;或下载时间过长&#xff0c;因此考虑用dart-sass来替换。 npm install node-sassnpm:dart-sass3、然后就可以成功运行了…

8.项目结构——黑马程序员Java最新AI+若依框架项目

目录 前言一、后端1.ruoyi-admin2.ruoyi-common3.ruoyi-framework4. ruoyi-generator(可删除)5.ruoyi-quartz&#xff08;可删除&#xff09;5.ruoyi-system6. ruoyi-ui7.sql8.依赖关系9. 总结 二、前端三、SQL 前言 提示&#xff1a;本篇叙述若依前后端项目结构 一、后端 1…

无线领夹麦克风哪个品牌音质最好,揭秘无线麦克风哪个牌子最好!

​在这个数字化、信息化的时代&#xff0c;短视频和直播已经成为了人们生活中不可或缺的一部分。而无线麦克风&#xff0c;则是这些活动中不可或缺的重要工具。它们能够轻松捕捉声音&#xff0c;让内容更加生动、真实。然而&#xff0c;市场上的无线麦克风种类繁多&#xff0c;…

51-60 CVPR 2024 最佳论文 | Generative Image Dynamics

在2023年11月&#xff0c;谷歌研究院发布了一项令人瞩目的研究成果——Generative Image Dynamics&#xff08;生成图像动力学&#xff09;。这项技术的核心是将静态的图片转化为动态的、无缝循环的视频&#xff0c;而且更令人兴奋的是&#xff0c;这些生成的视频还具有交互性。…

AI赋能天气:微软研究院发布首个大规模大气基础模型Aurora

编者按&#xff1a;气候变化日益加剧&#xff0c;高温、洪水、干旱&#xff0c;频率和强度不断增加的全球极端天气给整个人类社会都带来了难以估计的影响。这给现有的天气预测模型提出了更高的要求——这些模型要更准确地预测极端天气变化&#xff0c;为政府、企业和公众提供更…

【转】5种常见的网络钓鱼攻击以及防护手段

2022 年 Verizon 数据泄露调查报告指出&#xff0c;去年 75% 的社会工程攻击涉及网络钓鱼&#xff0c;仅去年一年就有超过 33 万个账户被网络钓鱼&#xff0c;网络钓鱼占整体社会工程攻击的 41%。 不能将所有责任归咎于员工&#xff0c;因为薄弱的安全意识建设及宣教是大部分漏…

XSS跨站攻击漏洞

XSS跨站攻击漏洞 一 概述 1 XSS概述 xss全称为&#xff1a;Cross Site Scripting&#xff0c;指跨站攻击脚本&#xff0c;XSS漏洞发生在前端&#xff0c;攻击的是浏览器的解析引擎&#xff0c;XSS就是让攻击者的JavaScript代码在受害者的浏览器上执行。 XSS攻击者的目的就是…

Windows 中 Chrome / Edge / Firefox 浏览器书签文件默认存储路径

1. Chrome 浏览器 按组合键 Win R&#xff0c;打开运行对话框&#xff0c;输入 %USERPROFILE%\AppData\Local\Google\Chrome\User Data\Default或在Chrome 浏览器地址栏输入 chrome://version查看【个人资料路径】 2. Edge 浏览器 按组合键 Win R&#xff0c;打开运行对…

GD32F4xx 移植agile_modbus软件包与电能表通信

目录 1. agile_modbus1.1 简介1.2 下载2. agile_modbus使用2.1 源码目录2.2 移植3. 通信调试3.1 代码3.3 通信测试1. agile_modbus 1.1 简介 agile_modbus是一个轻量级的Modbus协议栈,主要特点: 支持RTU和TCP协议,采用纯C语言开发,不涉及任何硬件接口,可直接在任何形式的…

Java流程控制语句

Java流程控制语句有三种&#xff1a; 顺序结构、分支结构和循环结构。 顺序结构&#xff1a; 顺序结构语句是Java程序默认的执行流程&#xff0c;按照代码的先后顺序&#xff0c;从上到下依次执行。 原文链接&#xff1a; Java流程控制控制语句 - 红客网络编程与渗透技术 示例…

查看es p12证书文件过期方法

查看证书过期时间: openssl pkcs12 -in elastic-certificates.p12 -nokeys -out elastic-certificates.crt (需要输入证书生成时配置密码) openssl x509 -enddate -noout -in elastic-certificates.crt

乐鑫云方案研讨会回顾|ESP RainMaker® 引领创业潮,赋能科创企业

近日&#xff0c;乐鑫信息科技 (688018.SH) ESP RainMaker 云生态方案线下研讨会和技术沙龙在深圳成功举办&#xff0c;吸引了众多来自照明电工、新能源、安防、宠物等垂类领域的客户与合作伙伴。活动现场&#xff0c;与会嘉宾围绕产品研发、测试认证、品牌构建、跨境电商等多维…

【面试题】什么是等保2.0?

等保2.0&#xff0c;全称网络安全等级保护2.0制度&#xff0c;是我国网络安全领域的基本国策和基本制度&#xff0c;旨在加强网络系统的安全保护&#xff0c;确保关键信息不被泄露、篡改、破坏或丧失。以下是关于等保2.0的详细介绍&#xff1a; 实施时间与背景&#xff1a; 等…

新加坡经济是如何腾飞的?How Singapore Got So Crazy Rich

How Singapore Got So Crazy Rich Link: https://www.youtube.com/watch?vYSMWN8VpY6A Summary Singapore, a small island nation, has become Asia’s wealthiest country and one of the richest in the world. With a GDP per capita surpassing countries like the UK,…

matlab中函数meshgrid

(1) 二维网格 [X,Y] meshgrid(x,y) 基于向量 x 和 y 中包含的坐标返回二维网格坐标。X 是一个矩阵&#xff0c;每一行是 x 的一个副本&#xff1b;Y 也是一个矩阵&#xff0c;每一列是 y 的一个副本。坐标 X 和 Y 表示的网格有 length(y) 个行和 length(x) 个列。 x 1:3; y…

AWS WAF 中的验证码和挑战 | 网页抓取时如何解决这个问题

正如许多企业或爬虫用户所知&#xff0c;AWS WAF&#xff08;Web 应用防火墙&#xff09;是一个强大的安全解决方案&#xff0c;旨在保护 Web 应用免受常见的网络攻击和漏洞。其关键功能之一是使用 CAPTCHA 和挑战来区分合法用户和潜在的恶意机器人。虽然这增强了安全性&#x…

[C++]24:异常和智能指针

异常和智能指针 一.异常1.C/C的错误&#xff1a;1.C2.C3.三个关键字&#xff1a; 2.使用异常&#xff1a;1.基本概念&#xff1a;2.基本代码&#xff1a;1.基本使用&#xff1a;2.多个捕获&#xff1a;3.任意类型异常的捕获&#xff1a;4.异常的重新抛出&#xff1a; 3.异常安全…

微软将停用 App Center:React Native 开发人员应该使用以下工具

再见,应用中心!你好,EAS + Sentry + GitHub Actions! React Native 开发人员大遗憾:微软宣布将于 2025 年 3 月 31 日关闭Visual Studio App Center。 多年来, Infinite Red一直将 App Center 作为许多 React Native 咨询客户的 CI/CD 流程和开发工作流程的关键部分。它有…

License简介和Licensecc的使用

License简介和Licensecc的使用 License简介什么是LIcense简易License制作加密扫盲对称加密非对称加密 Licensecc使用构建和编译在linux上进行编译UbuntuCentOS 7CentOS 8下载并编译配置编译和测试cmake 后可以跟的参数在Linux上为Windows进行交叉编译 在windos上进行编译MSVC (…