牛客小白月赛87

news2024/12/23 14:36:38

A

 思路:贪心。将数列倒序分别计算两人的和即可。

#include <bits/stdc++.h>
using namespace std;
int a[110];
void solve()
{
	int n;
	cin>>n;
	int sum1=0,sum2=0;
    int flag=1;
    
    
    for (int i=1;i<=n;i++) cin>>a[i];
	for (int i=n;i>=1;i--){
		
        
		if(flag==1){
			sum1+=a[i];
            flag=0;
		}
		else {
			sum2+=a[i];
            flag=1;
		}
	}
	
	if(sum1>sum2){
		cout<<"Alice"<<endl;
	}
	else  {
		cout<<"Bob"<<endl;
	}

}

int main()
{
	int t;
	cin>>t;
	while(t--){
		solve();
    }
}

B.

 思路:因为只能选择一个区间,且要小于全体区间,所以只需要判断其首尾是否为最小和最大即可。若都不是,则不能。否则能。

#include <bits/stdc++.h>
using namespace std;
int a[200010],b[200010];
void solve()
{
	int n;
	cin>>n;
	
	for (int i=1;i<=n;i++){
		cin>>a[i];
		b[i]=a[i];
	}
	
	sort(b+1,b+n+1);
	
	if(a[1]!=b[1] &&a[n]!=b[n]){
		cout<<"NO"<<endl;
		return ;
	}
	
	cout<<"YES"<<endl;
	
	
}


int main()
{
	int t;
	cin>>t;
	
	while(t--){
		solve();
	}
}

C.

 思路:双指针。通过左右指针通过分类讨论进指针的移动即可。

#include <bits/stdc++.h>
using namespace std;
const int N =  200010;
int main()
{
	
	int n,k;
	cin>>n>>k;
	
	string s;
	cin>>s;
	int pos=0;
	for (int i=0;i<n;i++){
		if(s[i]=='I'){
			pos=i;
			break;
		}
	}
	int l=pos-1,r=pos+1;
	for (int i=1;i<=k;i++){
        string s1;
		cin>>s1;
		if(s1=="backspace"){
			if(s[l]=='(' && s[r]==')'){
				l--,r++;				
			}
            else {
                if(l>=0){
				   l--;
			      }
            
            }
		}
		else {
			if(s[r]==')' ||s[r]=='('){
				r++;			}
			
		}
		
		for (int i=0;i<=l;i++){cout<<s[i];}
		cout<<'I';
		for (int i=r;i<n;i++){
			cout<<s[i];
		}
	}
}

D

思路:双指针。当左右操作可以将指针移动并将原字符串重新赋值即可。 

#include <bits/stdc++.h>
using namespace std;
const int N =  200010;
int main()
{
	
	int n,k;
	cin>>n>>k;
	
	string s;
	cin>>s;
    s=" "+s;
	int pos=0;
	for (int i=1;i<=n;i++){
		if(s[i]=='I'){
			pos=i;
			break;
		}
	}
	int l=pos-1,r=pos+1;


	
	for (int i=1;i<=k;i++){
        string s1;
		cin>>s1;
		if(s1=="backspace"){
			if(s[l]=='(' && s[r]==')'){
				l--,r++;
			}
            else {
                if(l>=1){
				   l--;
			      }   
                
            }
		}
		else if(s1=="delete"){
			if(s[r]==')' || s[r]=='('){
				r++;			
            }
		}
		else if (s1=="<-"){
            if(l!=0){
                r--;
            s[r]=s[l];
            l--; 
            }
           
        }
        else {
            if(r!=n+1)
            {
               l++;
               s[l]=s[r];
                r++;
            }
        }
            
    }		
		
        for (int i=1;i<=l;i++)cout<<s[i]; 
		cout<<'I';
		for (int i=r;i<=n;i++){
			cout<<s[i];
		}
		
		
	
}

E.

 

 思路:本题要求构造一个a和b数组相加为不递减序列,并且b数组的极差为最小的b数组。

可以通过遍历a数组并且每次更新最大值,并使得b数组为这个·最大值和当前a值的差。

#include <bits/stdc++.h>
using namespace std;
#define int long long 
int a[200010];
signed main()
{
    int n;
    cin>>n;
    for (int i=1;i<=n;i++){
        cin>>a[i];
    }
    int maxn=a[1];
    for (int i=1;i<=n;i++){
        maxn=max(maxn,a[i]);
        cout<<maxn-a[i]<<" ";
    }
    
    
}

F.

 思路:位运算,贪心。按位与的运算结果必然最小,所以按位与的段要尽可能的小。

而异或和按位或都是大于等于原来的结果。所以通过枚举来判断间隔点。并通过前后缀来优化。

#include <bits/stdc++.h>
using namespace std;

#define int long long 
int a[200010],b[200010],c[200010];
signed  main()
{
    int n;
    cin>>n;
    
    for (int i=1;i<=n;i++){
        cin>>a[i];
    }
    
    for (int i=1;i<=n;i++){
        b[i]=b[i-1]^a[i];
    }
    
    for (int i=n-1;i>=1;i--){
        c[i]=c[i+1]|a[i];
    }
    
    int ans=0;
    
    for (int i=1;i<n-1;i++){
        ans=max(ans,b[i]+c[i+1]+a[n]);
    }
    
    cout<<ans;
    
    
    
    
}

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

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

相关文章

阿里云服务器租用收费标准价格表(2024年更新)

2024年最新阿里云服务器租用费用优惠价格表&#xff0c;轻量2核2G3M带宽轻量服务器一年61元&#xff0c;折合5元1个月&#xff0c;新老用户同享99元一年服务器&#xff0c;2核4G5M服务器ECS优惠价199元一年&#xff0c;2核4G4M轻量服务器165元一年&#xff0c;2核4G服务器30元3…

OpenCV中的边缘检测技术及实现

介绍: 边缘检测是计算机视觉中非常重要的技术之一。它用于有效地识别图像中的边缘和轮廓&#xff0c;对于图像分析和目标检测任务至关重要。OpenCV提供了多种边缘检测技术的实现&#xff0c;本博客将介绍其中的两种常用方法&#xff1a;Canny边缘检测和Sobel边缘检测。 理论介…

第三节作业:基于 InternLM 和 LangChain 搭建你的知识库

参考文档&#xff1a;https://github.com/InternLM/tutorial/tree/main/langchain 基础作业&#xff1a;复现课程知识库助手搭建过程 (截图) 1.环境配置 2.知识库搭建 &#xff08;1&#xff09;数据收集 收集由上海人工智能实验室开源的一系列大模型工具开源仓库作为语料库来…

Mybatis——Javaweb进阶学习(五)

目录 一、Mybatis快速入门1.创建Springboot工程&#xff0c;数据库表user&#xff0c;实体类User2.引入Mybaties相关依赖3.编写Sql语句 二、lombok1.基本概念2.使用方法 三、基础操作1.环境准备a.数据库准备b.创建员工实体类Emp数据类型对比命名对比 c.Mapper接口创建 2.删除操…

EasyRecovery2024功能强大的电脑数据恢复软件

EasyRecovery是一款功能强大的数据恢复软件&#xff0c;支持从各种存储介质中恢复丢失或删除的文件。以下是EasyRecovery的下载教程、功能介绍以及最新版本简介&#xff1a; EasyRecovery支持多种操作系统版本。对于Windows系统&#xff0c;它支持Windows XP、Windows Vista、W…

智能网卡(SmartNIC):增强网络性能

在当今的数字时代&#xff0c;网络性能和数据安全是各行各业面临的关键挑战。智能网卡是一项颠覆性的技术创新&#xff0c;对增强网络性能和加强数据安全性具有关键推动作用。本文旨在探讨智能网卡的工作原理及其在不同应用场景中的重要作用。 什么是智能网卡&#xff1f; 智…

QtApplets-线程池

QtApplets-线程池 ​ 今天咱们稍微看下Qt的线程池。QThreadPool&#xff0c;浅浅搞一下。 文章目录 QtApplets-线程池QThreadPoolQThreadPool 与 QThread 区别替代方案Qt Concurrent QThreadPool 与 Qt Concurrent 区别Demo运行效果 ☞ 源码 关键字&#xff1a; Qt、QRunnable…

Netty中的适配器、Handler共享和资源管理

ChannelHandler的适配器 有一些适配器类可以将编写自定义的ChannelHandler所需要的工作降到最低限度&#xff0c; 因为它们提供了定义在对应接口中的所有方法的默认实现。因为有时会忽略那些不感兴趣的 事件&#xff0c;所以Netty提供了抽象积累ChannelInboundHandlerAdapter(…

SORA:OpenAI最新文本驱动视频生成大模型技术报告解读

Video generation models as world simulators&#xff1a;作为世界模拟器的视频生成模型 1、概览2、Turning visual data into patches&#xff1a;将视觉数据转换为补丁3、Video compression network&#xff1a;视频压缩网络4、Spacetime Latent Patches&#xff1a;时空潜在…

HTTP缓存技术

大家好我是苏麟 , 今天说说HTTP缓存技术 . 资料来源 : 小林coding 小林官方网站 : 小林coding (xiaolincoding.com) HTTP缓存技术 HTTP 缓存有哪些实现方式? 对于一些具有重复性的 HTTP 请求&#xff0c;比如每次请求得到的数据都一样的&#xff0c;我们可以把这对「请求-响…

Python爬虫之Splash详解

爬虫专栏&#xff1a;http://t.csdnimg.cn/WfCSx Splash 的使用 Splash 是一个 JavaScript 渲染服务&#xff0c;是一个带有 HTTP API 的轻量级浏览器&#xff0c;同时它对接了 Python 中的 Twisted 和 QT 库。利用它&#xff0c;我们同样可以实现动态渲染页面的抓取。 1. 功…

交换排序(冒泡排序和快速排序)

交换排序 冒泡排序 传统方法&#xff1a; for (int i 0; i < numsSize - 1; i) {for (int j 0; j < numsSize - 1 - i; j) {if (nums[j] > nums[j 1]) {Swap(&nums[j], &nums[j 1]);}} } 方法二&#xff1a; while循环for循环 int end numsSize - 1…

理解并实现OpenCV中的图像平滑技术

导读 图像模糊&#xff08;也称为图像平滑&#xff09;是计算机视觉和图像处理中的基本操作之一。模糊图像通常是噪声减少、边缘检测和特征提取等应用的第一步。在本博客中&#xff0c;我们将重点介绍如何使用Python中的OpenCV库应用多种模糊技术。 理论概述&#xff1a; 基本…

Netty中的内置通信模式、Bootstrap和ChannelInitializer

内置通信传输模式 NIO:io.netty.channel.socket.nio 使用java.nio.channels包作为基础–基于选择器的方式Epoll:io.netty.channel.epoll由JNI驱动的epoll()和非阻塞IO.这个传输支持只有在Linux上可用的多种特性&#xff0c;如果SO_REUSEPORT&#xff0c;比NIO传输更快&#xf…

视觉slam十四讲学习笔记(六)视觉里程计 1

本文关注基于特征点方式的视觉里程计算法。将介绍什么是特征点&#xff0c;如何提取和匹配特征点&#xff0c;以及如何根据配对的特征点估计相机运动。 目录 前言 一、特征点法 1 特征点 2 ORB 特征 FAST 关键点 BRIEF 描述子 3 特征匹配 二、实践&#xff1a;特征提取…

计算机网络——14CDN

CDN 视频流化服务和CDN&#xff1a;上下文 视频流量&#xff1a;占据着互连网大部分的带宽 Netflix&#xff0c;YouTube&#xff1a;占据37%&#xff0c;16%的下行流量 挑战&#xff1a;规模性-如何服务~1B用户&#xff1f; 单个超级服务器无法提供服务&#xff08;为什么&am…

第7章 Page442~446 7.8.9智能指针

指向堆内存的指针&#xff0c;很容易忘了释放&#xff1a; int foo() {int* p new int(9);cout << *p << endl;return *p; } 为什么要用指针 使用堆数据有以下几个目的&#xff08;也可称为作用&#xff09;如表7-18所列 表7-18 使用堆数据的常见目的 使用堆数…

阿里云服务器租用价格表(2024更新)

2024年最新阿里云服务器租用费用优惠价格表&#xff0c;轻量2核2G3M带宽轻量服务器一年61元&#xff0c;折合5元1个月&#xff0c;新老用户同享99元一年服务器&#xff0c;2核4G5M服务器ECS优惠价199元一年&#xff0c;2核4G4M轻量服务器165元一年&#xff0c;2核4G服务器30元3…

数据结构:4_二叉树

二叉树 一.树概念及结构 1. 树的概念 树是一种非线性的数据结构&#xff0c;它是由n&#xff08;n>0&#xff09;个有限结点组成一个具有层次关系的集合。把它叫做树是因为它看起来像一棵倒挂的树&#xff0c;也就是说它是根朝上&#xff0c;而叶朝下的。 有一个**特殊的…

让你的资金运动起来,金钱的聪明处理方式

一、教程描述 本套教程主要讲解了金融思维和财务思维&#xff0c;常见投资工具的实操技巧&#xff0c;资产配置方案的制定方法&#xff0c;等等&#xff0c;将会重构你现有的投资观念&#xff0c;提升你认知的宽度和深度&#xff0c;可以轻松读懂财经新闻&#xff0c;不仅学会…