刷题记录(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;
}

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

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

相关文章

【超详细】使用RedissonClient实现Redis分布式锁

使用RedissonClient实现Redis分布式锁是一个非常简洁和高效的方式。Redisson是一个基于Redis的Java客户端&#xff0c;它提供了许多高级功能&#xff0c;包括分布式锁、分布式集合、分布式映射等&#xff0c;简化了分布式系统中的并发控制。 添加依赖 首先&#xff0c;你需要…

mysql社区版有可以双机吗

MySQL社区版确实支持双机配置&#xff0c;以实现数据的冗余、备份和负载均衡等功能。以下是关于MySQL双机配置的一些关键点和步骤&#xff1a; 1. 双机热备的概念 双机热备是指保持两个数据库的状态自动同步&#xff0c;对任何一个数据库的操作都会自动应用到另一个数据库&am…

【深度学习】stable-diffusion-3,SD3生图体验

stabilityai/stable-diffusion-3-medium 代码地址&#xff1a; https://huggingface.co/stabilityai/stable-diffusion-3-medium 可在这里体验&#xff1a; https://huggingface.co/spaces/ameerazam08/SD-3-Medium-GPU

并查集C++

并查集的原理 并查集&#xff08;Union-Find Set&#xff09;。可以把每个连通分量看成一个集合&#xff0c;该集合包含了连通分量中的所有点。这些点两两连通&#xff08;连通性&#xff09;&#xff0c;而具体的连通方式无关紧要&#xff0c;就好比集合中的元素没有先后顺序之…

git-本地项目与git连接及上传【快速教程】

1. 本地项目新建上传 打开我们的项目&#xff0c;此时项目中是没有 .git 文件的在你的项目文件夹里面【鼠标右击】弹出菜单在【鼠标右击】弹出的菜单中&#xff0c;点击【Git Bash Here】在命令窗口中输入&#xff1a;git init在 Gitee 中 我们刚刚新建的仓库里&#xff0c;去…

【ARM Cache 及 MMU 系列文章 1.3 -- 如何判断 L2 Cache 是否实现?】

请阅读【ARM Cache 及 MMU/MPU 系列文章专栏导读】 及【嵌入式开发学习必备专栏】 文章目录 CPU Configuration Register代码实现CPU Configuration Register 在 Armv9 架构中,我们可以通过arm 提供的自定义寄存器IMP_CPUCFR_EL1 来判断当前系统中是否实现了 L2 Cache, 如下所…

四六级翻译考前综合复习

翻译部分 东周时期 the Eastern Zhou Dynasty 南宋末年 the Late Southern Song Dynasty 早期/中期/末期 early/middle/late 3000多年前的中国西周 the Western Zhou Dynasty in/of China over 3,000 years ago 农历八月十五 on the 15th day of lunar Augest …

SpringBoot 实现 阿里云语音通知(SingleCallByTts)

目录 一、准备工作1.开通 阿里云语音服务2.申请企业资质3.创建语音通知模板&#xff0c;审核通过4.调用API接口---SingleCallByTts5.调试API接口---SingleCallByTts 二、代码实现1.导入依赖 com.aliyun:aliyun-java-sdk-dyvmsapi:3.0.22.创建工具类&#xff0c;用于发送语音通知…

我用AI绘画Stable Diffusion 一个月后,竟然能做出惊艳所有人的效果!

大家好&#xff0c;我是设计师阿威 如今要拍摄一组写真&#xff0c;需要服装、道具、灯光、场地、布景、拍摄、后期等过程。整个过程需要统一才能形成好的写真效果。现在有了AI绘图技术&#xff0c;我们可以实现通过AI绘图&#xff0c;只用计算机计算就得到一组接近真实的写真照…

什么是微前端

什么是微前端&#xff1f; 微前端 这个名词&#xff0c;第一次被提出还是在2016年底&#xff0c;那是在 ThoughtWorks Technology Radar。这个概念将微服务这个被广泛应用于服务端的技术范式扩展到前端领域。现代的前端应用的发展趋势正在变得越来越富功能化&#xff0c;富交互…

vue富文本wangeditor加@人功能(vue2 vue3都可以)

依赖 "wangeditor/editor": "^5.1.23", "wangeditor/editor-for-vue": "^5.1.12", "wangeditor/plugin-mention": "^1.0.0",RichEditor.vue <template><div style"border: 1px solid #ccc; posit…

重温react-04

兄弟组件之间通信 兄弟1 import React, { Component } from react import pubsub from ./pubsub export default class learnReact01 extends Component {render() {return (<div>我是兄弟1<button onClick{this.clickMessage}>向兄弟2发信息</button><…

Stable-Baseline3 x SwanLab:可视化强化学习训练

Stable Baselines3 (SB3) 是一个强化学习的开源库&#xff0c;基于 PyTorch 框架构建。它是 Stable Baselines 项目的继任者&#xff0c;旨在提供一组可靠且经过良好测试的RL算法实现&#xff0c;便于研究和应用。StableBaseline3主要被应用于机器人控制、游戏AI、自动驾驶、金…

Django DetailView视图

Django的DetailView是一个用于显示单个对象详情的视图。下面是一个使用DetailView来显示单个书籍详情的例子。 1&#xff0c;添加视图 Test/app3/views.py from django.shortcuts import render# Create your views here. from django.views.generic import ListView from .m…

BGP学习

BGP是一种矢量协议&#xff0c;使用TCP作为传输协议 ,目的端口号是179.是触发式更新&#xff0c;不是周期性更新 BGP的重点是策略路由的选路&#xff0c;能对路由进行路由汇总。运行BGP的路由器被称为BGP发言者&#xff0c;两个建立BGP会话的路由器互为对等体 IBGP和EBGP的区…

代理模式(设计模式)

文章目录 静态代理动态代理代理模式的应用场景动态代理和静态代理的区别 代理模式就是给一个对象提供一个代理&#xff0c;并由代理对象控制对原对象的引用。它使得客户不能直接与真正的目标对象通信。代理对象是目标对象的代表&#xff0c;其他需要与这个目标对象打交道的操作…

STM32项目分享:OV7670将图片上传电脑

目录 一、前言 二、项目简介 1.功能详解 2.主要器件 三、原理图设计 四、PCB硬件设计 1.PCB图 2.PCB板及元器件图 五、程序设计 六、实验效果 七、资料内容 项目分享 一、前言 项目成品图片&#xff1a; 哔哩哔哩视频链接&#xff1a; https://www.bilibili.c…

调用华为API实现车牌识别

目录 1.作者介绍2.华为云车牌识别2.1车牌识别技术2.2华为云OCR 3.实验过程3.1获取API密钥3.2Python代码实现3.3实验结果 参考链接 1.作者介绍 袁明懿&#xff0c;男&#xff0c;西安工程大学电子信息学院&#xff0c;2023级研究生 研究方向&#xff1a;机器视觉与人工智能 电子…

Unity2D计算两个物体的距离

1.首先新建一个场景并添加2个物体 2.创建一个脚本并编写代码 using UnityEngine;public class text2: MonoBehaviour {public GameObject gameObject1; // 第一个物体public GameObject gameObject2; // 第二个物体void Update(){// 计算两个物体之间的距离float distance Vec…

【Redis】为什么是单线程?为什么这么快呢?

Redis为什么是单线程&#xff1f;为什么这么快&#xff1f; Redis&#xff0c;作为一款高性能的内存数据库&#xff0c;广泛应用于各类高并发、高性能的场景中。一个常见的问题是&#xff0c;为什么Redis是单线程的&#xff1f;以及在单线程的情况下&#xff0c;Redis为什么还…