本周刷题记录

news2024/10/6 0:33:28

截至周三刷了六道题

 题目1:

这是个交互题,目前遇到的交互题都是用二分解决的。

本题使用二分精准定位拥有重量为2的石头的堆。

为避免时间超限,应该再输入数据时计算好前缀和。

二分过程中,如果哪边的重量总和不等于石头数,那就向这边缩小范围。

代码:


 

这道题非常简单,只需要找出规律就行

序列只由0或1组成,我们可以进行的操作是,删除一个数加到另一个数上面去。

删0加0 《=》只删除了一个障碍0,另一个0无动于衷

删0加1 《=》删除了一个障碍0

删1加1 《=》变出了一个2,浪费时间浪费资源浪费精力没必要

删1加0 《=》删除了一个前面的障碍0和后面的障碍1

所以我们就需要采用删1加0的方式操作数列

很容易发现,我们只需要遍历整个序列一共有多少个0,假设是n个0,那么再遍历前n个数,遇到1则ans加1,相当于用前n个里的1去消除掉后面的0。

所以代码呼之欲出:


 

 这道题就是要通过/2的操作使得序列变成1~n的全排列。

1~n的全排列即1到n且互不相等,且所有数小于n

所以我们只需要遍历所有数,如果大于n就往下除2得新值。

且不能在1~n中重复,这里需要一个标记数组就行了。

如果最后1~n的标记均为1(即都有值入坑了0),那就输出YES,否则输出NO

代码如下:

 


这道题不要被样例给迷惑了,其实超级简单

 

第i个数必须是i的n倍(n=1~xxxx)

且数列所有值的和必须能整除n

而第一个数,i=1,所以第一个数可以随意取,那么其他位置上的数我们只需要取i本身就行(相当于取了i的1倍,符合要求),那么第一个数取多少取决于该条件 且数列所有值的和必须能整除n

所以满足(sum(后面的数)+a【1】)%n = 0即可。

所以代码:

 


 这道题倒是写了挺久,因为总是漏掉情况

题目就是问给出的字符串能否通过重新排序变成回文字符串(且不能和本身一样) 

那么只需要考虑几种情况

1.重组不成回文字符串

2.符合回文字符串条件但只有一种情况且与本身重复

3.符合回文字符串条件且有多种组成方式

我们需要对字符串长度的奇偶进行判断,以及每个字母出现的次数(要用到出现次数的奇偶性)

重点看注释

代码:

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
ll t,cnt,ji,ncnt,u;
string s;
bool huiwen(string s)
{
    for(int i=0,j=s.size()-1; i!=j; i++,j--)
        if(s[i]!=s[j])
            return false;
    return true;
}
int main()
{
    cin>>t;
    while(t--)
    {
        cin>>s;
        map<char,int> m;
        char c[50];
        cnt=0;
        for(int i=0; i<s.size(); i++)
        {
            if(m[s[i]]==0)
            {
                c[cnt]=s[i];
                cnt++;
            }
            m[s[i]]++;
        }

        //测试
        //for(int i=0; i<cnt; i++){
        //   cout<<"第"<<i+1<<"个字母是"<<c[i]<<endl;
        //    cout<<"有"<<m[c[i]]<<"个"<<endl;
        //}

        if(cnt==1)//只有一种字母
        {
            cout<<"NO"<<endl;
            continue;
        }

        ji=0;//统计有多少奇数个数的字母
        u=0;
        for(int i=0; i<cnt; i++)
        {
            if(m[c[i]]%2!=0)
            {
                ji++;
                u=m[c[i]];
            }
        }

        ncnt=s.size();//字符串长度
        if(ncnt%2==1)//奇数长度
        {
            if(ji==1 &&cnt==2&& u==1 && huiwen(s))cout<<"NO"<<endl;
            else if(ji>=1 && ncnt%2==0 )cout<<"NO"<<endl;
            else if(ji>1)cout<<"NO"<<endl;
            else cout<<"YES"<<endl;
        }
        else if(ncnt%2==0) //偶数长度
        {
            if(ji!=0)cout<<"NO"<<endl;
            else cout<<"YES"<<endl;
        }
    }
    return 0;
}

这道题怎么说呢,可以说是暴力解决的,只需要枚举可执行方案就行,然后找出能得到最大值的方案,输出该最大值。

因为只有两种操作,即删除最小的两个数或者删除最大的一个数,这样的题目我们很容易想到先进行一个sort排序,那么删除哪个数也就是维护两端端点就行了。

一开始枚举每种情况计算两端点,再将两端点之间进行相加,可以过样例,但是会时间超限。

所以后面在排完序计算了前缀和,最后之间用前缀和计算总和过的。

代码很简单:

 


好,这就是前两天做的六道题的题解。

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

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

相关文章

关键词采集软件-关键词自动生成器

网站关键词对于SEO优化至关重要&#xff0c;在搜索引擎排名和流量中扮演着重要的角色。而147seo关键词生成软件可以帮助用户更好地发现与他们的业务和目标相关的关键词和话题。其中的147SEO关键词挖掘软件是其核心功能之一&#xff0c;能够自动批量实时挖掘关键词和短语&#x…

day33_css

今日内容 零、 复习昨日 一、CSS 零、 复习昨日 见代码 一 、引言 1.1CSS概念 ​ 层叠样式表(英文全称&#xff1a;Cascading Style Sheets)是一种用来表现HTML&#xff08;标准通用标记语言的一个应用&#xff09;或XML&#xff08;标准通用标记语言的一个子集&#xff09;等文…

以转账案例说明Spring事务

文章目录 1 Spring事务简介1.1 相关概念介绍1.2 转账案例-需求分析1.3 转账案例-环境搭建步骤1:准备数据库表步骤2:创建项目导入jar包步骤3:根据表创建模型类步骤4:创建Dao接口步骤5:创建Service接口和实现类步骤6:添加jdbc.properties文件步骤7:创建JdbcConfig配置类步骤8:创建…

Istio零信任安全架构设计

主要分为几个模块 安装安全概念整体安全架构源码 1.安装istio (windows环境) windows安装Rancher的步骤 : https://docs.rancherdesktop.io/getting-started/installation, docker desktop开始面向中大型企业收费: https://baijiahao.baidu.com/s?id1709665495660071676&…

CVE-2022-39197(Cobalt Strike XSS <=4.7)漏洞复现(超详细)

0x00 漏洞概述 2022年09月22日&#xff0c;360CERT监测发现了Cobalt Strike远程代码执行漏洞&#xff0c;漏洞编号为CVE-2022-39197&#xff0c;漏洞等级&#xff1a;严重&#xff0c;漏洞评分&#xff1a;9.8   Cobalt Strike&#xff08;也称CS&#xff09;由美国Red Team开…

互联网内卷严重?你咋不看看其他行业呢?无非是三十晚上无月亮,大家都一样

一千个人眼中有一千个哈姆雷特&#xff0c;互联网行业就像一座围城&#xff0c;城外的人想进来&#xff0c;城内的人要么卷要么躺要么润 ​ 真实的感受你可以现在约几个面试体验一下。内卷到什么程度&#xff1f; 产品和运营岗&#xff0c;业务经验不完全对口简历都过不了&am…

洛谷P1036题解

一、问题引出 [NOIP2002 普及组] 选数 题目描述 已知 n n n 个整数 x 1 , x 2 , ⋯ , x n x_1,x_2,\cdots,x_n x1​,x2​,⋯,xn​&#xff0c;以及 1 1 1 个整数 k k k&#xff08; k < n k<n k<n&#xff09;。从 n n n 个整数中任选 k k k 个整数相加&…

nginx keepalive 高可用原理和实操

文章目录 前言一、nginxkeepalive搭建高可用服务方案&#xff1f;二、方案解析1.keepalive是什么2.nginx是什么 三、keepalive与nginx环境安装四、高可用配置实例总结 前言 一、nginxkeepalive搭建高可用服务方案&#xff1f; 使用nginx-keepalived双机热备机制&#xff0c;vi…

Java-锁相关

线程不安全的原因 1.调度器随机调度,抢占式执行(无能为力) 举个例子 有一个int变量 叫count 就俩线程同时count一万次 结果应该为两万 可多次运行程序 这结果每次都不一样(而且小于2w) 是为什么呢 因为count这行代码是分三步运行的 load 把数据读到cpu add 在cpu寄存器实现加法…

一、计算机系统基础

// 本章节内容根据下列代码的生命周期来讲解计算机系统的各个部分 hello.c #include <stdio.h>int main {printf("hello, world\n");return 0; }文章目录 1.1信息 位 上下文1.2程序的编译过程1.3系统的硬件组成1.4运行hello程序1.5高速缓存1.6操作系统管理硬…

小程序用什么开发?

近年来&#xff0c;随着智能手机的普及和移动互联网的发展&#xff0c;小程序成为了一种备受关注的新型应用。那么&#xff0c;小程序用什么开发呢&#xff1f; 首先&#xff0c;小程序可以使用多种技术进行开发&#xff0c;其中比较流行的有两种方式&#xff1a;一种是借助微…

( 背包问题) 1049. 最后一块石头的重量 II ——【Leetcode每日一题】

❓1049. 最后一块石头的重量 II 难度&#xff1a;中等 有一堆石头&#xff0c;用整数数组 stones 表示。其中 stones[i] 表示第 i 块石头的重量。 每一回合&#xff0c;从中选出任意两块石头&#xff0c;然后将它们一起粉碎。假设石头的重量分别为 x 和 y&#xff0c;且 x &…

尾调用优化

尾调用优化 最近遇到一个堆栈溢出的问题&#xff0c;分析后发现可收敛为递归边界问题。结合“红宝书”中相关内容和ES6规范中的一些优化机制&#xff0c;整理记录如下。 前言 程序运行时&#xff0c;计算机会为应用程序分配一定的内存空间。应用程序会自行分配所获得的内存空…

SpringBoot @JsonProperty + @JsonMixin注解 实现返回json数据key的转换

参考资料 Springboot 一个注解搞定返回参数key转换 【实用】Spring Boot 2.7新特性&#xff1a;JsonMixin 目录 一. 需求二. 前期准备三. 解决方式一: JsonProperty注解三. 解决方式二: JsonProperty JsonMixin注解3.1 方式1 混入单个类3.1.1 创建一个被JsonMixin注解修饰的抽…

ChatGPT初学者最佳实践

2022年11月底&#xff0c;ChatGPT引爆了新一轮AI的革命&#xff0c;也让人们意识到AI真的能够大幅度提高人们的工作效率&#xff0c;甚至有人担心自己的工作会因为AI不保。这种居安思危的意识是正确的&#xff0c;但是正如锛凿斧锯的出现&#xff0c;并没有让木匠这个行业消失&…

音频格式及转换代码

音频信号的读写、播放及录音 python已经支持WAV格式的书写&#xff0c;而实时的声音输入输出需要安装pyAudio(http://people.csail.mit.edu/hubert/pyaudio)。最后我们还将使用pyMedia(http://pymedia.org)进行Mp3的解码和播放。 音频信号是模拟信号&#xff0c;我们需要将其…

纯前端绘制的下雨效果

先上效果&#xff1a; 再上代码&#xff1a; <!--黏糊糊的菜单--> <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Title</title><meta name"viewport" content"widt…

Golang笔记:使用os.Args和flag包编写命令行界面(CLIs)

文章目录 目的os.ArgsflagFlagSet总结 目的 命令行界面&#xff08;Command-line Interfaces&#xff09;是比较常用的一种软件形式。对于大部分开发运维人员来说很多时候CLIs可能比图形界面更加方便。软件开发时也经常会有需要开发命令行界面形式软件的情况&#xff0c;使用G…

Maven基础篇

Maven基本概念 Maven是什么 maven的本质是一个项目管理工程&#xff0c;将项目开发和管理过程抽象成一个项目对象模型&#xff08;POM&#xff09; POM&#xff08;Project Object Model&#xff09;&#xff1a;项目对象模型 作用 项目构建&#xff1a;提供标准的、跨平台…

什么是Selenium?如何使用Selenium进行自动化测试

目录 什么是 Selenium&#xff1f; Selenium 的优势是什么? 软件测试的需要 手动测试的挑战 自动化测试胜过手动测试 Selenium 对比 QTP 和 RFT Selenium 工具套件 Selenium 有哪些组件? Selenium RC &#xff08;远程控制&#xff09; Selenium IDE&#xff08;集成…