刷题记录(240613)

aliyun0512

1. 小红定义一个数组是好数组,当且仅当所有奇数出现了奇数次,所有偶数出现了偶数次。现在小红拿到了一个数组,她希望取一个该数组的非空子序列(可以不连续),使得子序列是好数组。你能帮小红求出子序列的方案数吗?由于答案过大,请对1e9+ 7取模。

示例:

输入:
4
1 2 3 2
输出: 7

思路:数学问题

设奇数出现x次,那么所有可能的情况就是:

C_x^1+C_x^3+...+C_x^x=2^{x-1}

但也可能一次不出现,所以还要加一

设一个偶数出现x次,那么所有可能的情况就是

C_x^0+C_x^2+...+C_x^x=2^{x-1}

那么要求的结果就是全部情况相乘,再减1,剪掉空串的情况(题中要求了是非空子串)

1.将数组 a[i] 元素输入map = < a[ i ] , 出现次数>

2.遍历map,计算乘积,最后减1

3.取模mod

代码:

#include<bits/stdc++.h>
using namespace std;
#define int long long
const int mod=1e9+7;
int a[100010],pow2[100100];
map<int,int>mp;
signed main(){
    int n;
    cin>>n;
    for(int i=1;i<=n;i++){
        cin>>a[i];
        mp[a[i]]++;
    }
    pow2[0]=1;
    int ans=1;
    for(int i=1;i<=n;i++)pow2[i]=pow2[i-1]*2%mod;
    for(auto i:mp){
        if(i.first%2!=0)
        ans=ans*(pow2[i.second-1]+1)%mod;
        else ans=ans*pow2[i.second-1]%mod;
    }
    cout<<ans-1;
}

2.定义一个01串为“交错串”,当且仅当任意两个相邻的字符都是不同的。例如,"10101"是交错串. 现在小红拿到了一个01串,她有若干次询问,每次询问一个区间,你需要回答将该区间代表的连续子串修改为“交错串”的最小修改次数。每次修改可以修改任意一个字符。

示例:

输入:
6 3
101101
1 3
3 5
1 6
输出:
0
1
3

输入描述

第一行输入两个正整数n,q,代表字符串长度和询问次数。
第二行输入一个长度为n的、仅由'0'和'1'组成的字符串。
接下来的q行,每行输入两个正整数l,r,代表询问的是第l个字符到第r个字符组成的子串,
1≤n,q≤1e5
1<=l,r<=n

输出描述

输出q行,每行输出一个整数代表询问的答案。

思路:

只有两种形式:101010和010101

1. 两个数组sum1,sum2统计前缀和

sum1---101010--遍历字符串,统计不满足奇数位是1偶数位是0的数量

sum2---010101--遍历字符串,统计不满足奇数位是0偶数位是1的数量

2. 最后输出l-1和r差值较小的那个

代码:

#include<bits/stdc++.h>
using namespace std;
#define int long long
const int mod=1e9+7;
int sum1[100010],sum2[100010];
signed main(){
    int n,q;
    cin>>n>>q;
    string s;
    cin>>s;
    s=" "+s;
    for(int i=1;i<s.size();i++){
        sum1[i]=sum1[i-1];
        sum2[i]=sum2[i-1];
        if(i&1){
            if(s[i]!='1')sum1[i]++;
            if(s[i]!='0')sum2[i]++;
        }else {
            if(s[i]!='0')sum1[i]++;
            if(s[i]!='1')sum2[i]++;
        }
    }
    while(q--){
        int l,r;
        cin>>l>>r;
        cout<<min(sum1[r]-sum1[l-1],sum2[r]-sum2[l-1])<<endl;
    }
}

小红拿到了一棵树,她希望选挥两个不相邻且不相同的节点,满足编码的乘积为偶数。请你帮小红求出合法的方案数。我们认为 <x,y> 和<y,x>为同一种方案。

输入描述:

第一行输入一个正整数n,代表节应数量.
接下来的n-1行,每行输入2个正整数u,v.代表节点u和节点v有一条边连接。
1<=n<=1e5
1<=u,v<=n

输出描述:

一个整数,代表取点的方案数

示例

输入: 
3
1 3
2 3
输出: 
1

思路:

先算出总共的方案,然后拿总的减去相邻节点的方案。

总共的方案数 = 偶数点的数量 * 奇数点的数量 + 取两个偶数点的取法数量 - 相邻的乘积为偶数的情况

num0--偶数数量,num1--奇数数量,ans---计算树中节点值乘积为偶数的边的数量,负数

遍历当前节点的所有子节点 v,如果子节点 v 等于父节点 f,则跳过(避免回到父节点, 题目中写了<x,y> 和<y,x>为同一种方案)。如果当前节点 u 和子节点 v 的乘积是偶数,则减少 ans 的计数(因为不能取相邻节点)。最后,对每个子节点递归调用 dfs

(num0 - 1) * num0 / 2---计算所有两个偶数节点组成的边的数量

涉及节点的题都会用dfs

所以上面的公式用变量表示为:

num0 * num1 + (num0 - 1) * num0 / 2 + ans

代码:

#include<bits/stdc++.h>
using namespace std;
#define int long long
int num0,num1,ans;
vector<int>e[100010];
void dfs(int u,int f){
    if(u%2==0)num0++;
    else num1++;
    for(auto v:e[u]){
        if(v==f)continue;
        if(u*v%2==0)ans--;
        dfs(v,u);
    }
}
signed main(){
    int n;
    cin>>n;
    for(int i=1;i<=n-1;i++){
        int u,v;
        cin>>u>>v;
        e[u].push_back(v);
        e[v].push_back(u);
    }
    dfs(1,0);
    ans+=num0*num1+(num0-1)*num0/2;
    cout<<ans;
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

C++面向对象:多态性

多态性 1.概念 多态性是面向对象的程序设计的一个重要特征。在面向对象的方法中一般是这样表述多态的&#xff1a;向不同的对象发送同一个信息&#xff0c;不同的对象在接收时会产生不同的行为。也就是说&#xff0c;每个对象用自己的方式去响应共同的消息。 2.典例 下面这…

MFC动态创建按钮

void CMFCApplication1Dlg::OnBnClickedOk() {for (int i 0; i < 100; i){for (int j 0; j < 100; j){CButton* pButton3 new CButton;pButton[i][j] pButton3;}}CRect rect;GetClientRect(&rect); // 获取对话框客户区的大小rect.top 10; // 设置按钮的位置rec…

Elastic 索引结构-倒排索引

前言 Elastic 在数据库分类中一般被分为全文检索的数据库&#xff0c;那为什么这么区分呢&#xff1f;主要是因为其独特的索引结构 即倒排索引。 倒排索引 倒排索引先将文档中包含的关键字全部提取出来&#xff0c;然后再将关键字与文档的对应关系保存起来&#xff0c;最后再…

19、24年--信息系统工程——安全工程

1、工程概述 信息安全系统工程就是要建造一个信息安全系统,它是整个信息系统工程的一部分,而且最好是业务应用信息系统工程同步进行,主要围绕信息安全内容。 2、安全系统 1)X轴是”安全机制“。安全机制可以理解为提供某些安全服务,利用各种安全技术和技巧,所形成的一个…

06 SpringBoot 配置文件详解-application.yaml

Spring Boot 提供了大量的自动配置&#xff0c;极大地简化了spring 应用的开发过程&#xff0c;当用户创建了一个 Spring Boot 项目后&#xff0c;即使不进行任何配置&#xff0c;该项目也能顺利的运行起来。当然&#xff0c;用户也可以根据自身的需要使用配置文件修改 Spring …

电脑技巧:认识全能绘画软件Krita

目录 一、软件简介 二、软件功能 2.1 强大的画笔引擎 2.2专业色彩管理 2.3 多层编辑与管理 2.4 动画制作 三、软件特点 四、安装说明 五、使用技巧 六、快捷键大全 对于喜欢绘画的朋友来说&#xff0c;Krita 是一款不可多得的绘画工具&#xff0c;它具有开源、免费、…

查分易发成绩教程

马上就要期末考试了&#xff0c;老师们是不是正为家长咨询成绩倍感头痛&#xff1f;在以前老师们发布成绩都是私发给家长或者写在一张小纸条上让学生带回家&#xff0c;麻烦还容易出错&#xff0c;给老师的工作带来不小的压力。不过现在的年轻教师都在使用——查分易小程序&…

开源项目QAnything:全能型本地知识库问答系统

在当今信息爆炸的时代&#xff0c;如何高效地管理和检索大量数据成为了一个重要课题。网易有道推出的开源项目QAnything&#xff0c;正是为了解决这一问题而生。QAnything是一个本地知识库问答系统&#xff0c;支持多种文件格式和数据库&#xff0c;允许用户在离线状态下进行安…

Linux:线程概念 线程控制

Linux&#xff1a;线程概念 & 线程控制 线程概念轻量级进程 LWP页表 线程控制POSIX 线程库 - ptherad线程创建pthread_createpthread_self 线程退出pthread_exitpthread_cancelpthread_joinpthread_detach 线程架构线程与地址空间线程与pthread动态库 线程的优缺点 线程概念…

复分析——第2章——Cauchy定理及其应用(E.M. Stein R. Shakarchi)

第2章 Cauchy定理及其应用 The solution of a large number of problems can be reduced, in the last analysis, to the evaluation of definite integrals; thus mathematicians have been much occupied with this task... However, among many results obtained, a n…

【RabbitMQ】初识 RabbitMQ

初识 RabbitMQ 1.认识 RabbitMQ1.1 介绍1. 2.使用场景1.2.1 推送通知1.2.2 异步任务1.2.3 多平台应用的通信1.2.4 消息延迟1.2.5 远程过程调用 1.3 特性 2.基本概念2.1 生产者、消费者和代理2.2 消息队列2.3 交换机2.3.1 direct2.3.2 topic2.3.3 headers2.3.4 fanout 2.4 绑定2…

基于SpringBoot+VueBBS论坛系统设计和实现(源码+LW+调试文档+讲解等)

&#x1f497;博主介绍&#xff1a;✌全网粉丝1W,CSDN作者、博客专家、全栈领域优质创作者&#xff0c;博客之星、平台优质作者、专注于Java、小程序技术领域和毕业项目实战✌&#x1f497; &#x1f31f;文末获取源码数据库&#x1f31f; 感兴趣的可以先收藏起来&#xff0c;还…

蓝牙模块的工作原理与电路设计

蓝牙技术是一种短距离无线通信技术&#xff0c;广泛应用于各种智能设备中&#xff0c;如手机、耳机、智能手表等。蓝牙模块作为实现蓝牙通信的核心部件&#xff0c;其工作原理和电路设计对于蓝牙设备的性能和稳定性至关重要。本文将深入解析蓝牙模块的工作原理&#xff0c;包括…

Docker(一)-认识Docker

1.docker理念 Docker是基于Go语言实现的云开源项目。 Docker的主要目标是“Build,Ship and Run Any App,Anywhere”&#xff0c;也就是通过对应用组件的封装&#xff0c;分发&#xff0c;部署&#xff0c;运行等生命周期的管理&#xff0c;使用户的应用及其运行环境能够做到”…

18.1 HTTP服务器-极简服务器、请求与响应

1. 极简服务器 大道至简。使用Go语言构建世界上最简单的HTTP服务器&#xff0c;仅需四行代码。 标准库的net/http包提供了多种用于创建HTTP服务器的方法&#xff0c;其中包括&#xff1a; http.HandleFunc("/", rootHandler) 第一参数&#xff1a;访问的url 第二…

Elasticsearch搜索引擎(高级篇)

3.1 查询语法 | 《ElasticSearch入门到实战》电子书 (chaosopen.cn) day09-Elasticsearch02 - 飞书云文档 (feishu.cn) 目录 第一章 DSL查询 1.1 基本语法 1.2 叶子查询 全文检索查询 精确查询 1.3 复合查询 算分函数查询 bool查询 1.4 排序 1.5 分页 基础分页 深度分…

数据可视化:Seaborn

安装Seaborn 进入虚拟环境&#xff0c;在终端中键入 pip install seaborn 即可安装。 初步使用Seaborn 在使用seaborn之前&#xff0c;我们先了解一下seaborn是什么&#xff0c;seaborn是以matplotlib为底层的更简便的python第三方库&#xff0c;它可以更快捷地去设置图形的一…

Web应用安全测试-防护功能缺失

Web应用安全测试-防护功能缺失 1、Cookie属性问题 漏洞描述&#xff1a; Cookie属性缺乏相关的安全属性&#xff0c;如Secure属性、HttpOnly属性、Domain属性、Path属性、Expires属性等。 测试方法&#xff1a; 通过用web扫描工具进行对网站的扫描&#xff0c;如果存在相关…

快速提升沟通能力:客服必备的话术技巧

在现在的这个互联网时代&#xff0c;各行业竞争日益激烈&#xff0c;而客服作为连接商家和消费者的桥梁&#xff0c;无疑是一个重要的岗位。可以说客服是一个极具挑战性的岗位&#xff0c;客服每天需要面对来自全国各地的客户&#xff0c;同时还要对不同地区、不同性格、不同需…

Unity资源 之 最受欢迎的三消游戏开发包 - Bubble Shooter Kit 【免费领取】

三消游戏开发包 - Bubble Shooter Kit 免费领取 前言资源包内容领取兑换码 前言 如果你是一名 Unity 游戏开发者&#xff0c;并且正在寻找一种快速、简单的方式来创建自己的三消游戏&#xff0c;那么 Bubble Shooter Kit 就是你所需要的。 资源包内容 Bubble Shooter Kit 是…