河南萌新联赛2024第(一)场:河南农业大学 A D F G H I K
A 造数
题目描述:
给定一个整数 𝑛 ,你可以进行以下三种操作
操作1: +1
操作2; +2
操作3: ×2
问最少需要多少次操作可以将 0 转为为 𝑛 。
解题思路
操作1,2,3。操作 3 的使 n 变小的更快。
AC代码
#include<bits/stdc++.h>
using namespace std;
#define IOS ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
#define int long long
void solve()
{int n;cin>>n;int ans=0;while(n){if(n==1||n==2)//操作1,操作2 的 逆过程{ans++;break;}if(n%2==1) //操作 1 的逆过程{n--;ans++;}else // 操作 3 的逆过程{n/=2;ans++;}}cout<<ans;
}
signed main()
{int t;t=1;while(t--)solve();return 0;
}
D 小蓝的二进制询问
题目描述
小蓝有 𝑡 组询问,每次给定两个数字 l,r 你需要计算出区间 [𝑙,𝑟] 中所有整数在二进制下1的个数之和。由于结果特别大,你只需要计算出结果模998244353之后的值即可。
解题思路
求出区间 [ 0 , x ] 之间的数的二进制下数的第 k 位是 1 时的所有情况
1.第 k 位前的数 为 k ^ 2 的倍数(周期 tl 的倍数),这时第 k 位后全为 0
2. 第 k 位以及第 k 位后的数(为第 1 种情况的余数就是认定为 0 的数,实际不一定为 0 )如果大于周期,则加上大出的部分,否则不加
AC代码
#include<bits/stdc++.h>
using namespace std;
#define int long long
const int mod=998244353;
int f(int x,int k)
{int y=1ll<<(k+1);// 2 的 k + 1 次幂,用于求出 x 的周期倍数int tl=y/2;// 周期(当第 k 位为 1 时,k 位之后为 0 1 的所有情况)x++;// 自增,用于后续判断 第 k 位 是否为 1 int res=(int)(x/y)*tl;// 计算出第一种情况int r=x%y; //求出第 k 位到 0 位的数r-=tl;if(r>0)res+=r;//计算第 2 种情况return res%mod;
}
void solve()
{int l,r;cin>>l>>r;int ans=0;for(int i=61;i>=0;i--){int t=(f(r,i)-f(l-1,i))%mod;// 第 i 位为 1 时,[0 ,r] 与 [0,l-1] 的情况差ans=(ans+t)%mod;}cout<<ans<<'\n';
}
signed main()
{int t;cin>>t;while(t--)solve();return 0;
}
F 两难抉择新编
题目描述
现在有长度为 n n n 的数组 a a a,你可以在两种操作中选择一种进行最多一次操作。
- 操作1:
选择一个数 i i i ( 1 ≤ i ≤ n ) (1\leq i\leq n) (1≤i≤n) 使得 a i : = a i + x a_i:=a_i+x ai:=ai+x, x x x 可以是 [ 1 , ⌊ n / i ⌋ ] [1,\lfloor n/i \rfloor] [1,⌊n/i⌋] 范围内任意正整数( ⌊ ⌋ \lfloor\rfloor ⌊⌋ 表示向下取整 )。
- 操作2:
选择一个数 i i i ( 1 ≤ i ≤ n ) (1\leq i\leq n) (1≤i≤n) 使得 a i : = a i × x a_i:=a_i \times x ai:=ai×x, x x x 可以是 [ 1 , ⌊ n / i ⌋ ] [1,\lfloor n/i \rfloor] [1,⌊n/i⌋] 范围内任意正整数。
请问进行操作后,最大的数组异或和是多少?
数组异或和:数组 a a a 中 a 1 ⊕ a 2 ⊕ a 3 . . . ⊕ a n a_1\oplus a_2 \oplus a_3 ... \oplus a_n a1⊕a2⊕a3...⊕an的值, ⊕ \oplus ⊕ 表示异或。
解题思路
直接模拟所有情况,理解异或( ^ )的自逆
AC代码
#include<bits/stdc++.h>
using namespace std;
#define IOS ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
#define int long long
#define PII pair<int,int>
#define fi first
#define se second
const int N=2e5+10;
int a[N];
void solve()
{int n;cin>>n;int sum=0;for(int i=0;i<n;i++){cin>>a[i];if(i==0){sum=a[i];continue;}sum=sum^a[i];}int ans=0;for(int i=0;i<n;i++){int t=sum^a[i];for(int j=1;j<=n/(i+1);j++){int x=t^(j+a[i]),y=t^(j*a[i]);ans=max(ans,max(x,y));}}cout<<ans;
}
signed main()
{int t;
// cin>>t;t=1;while(t--)solve();return 0;
}
G 旅途的终点
题目描绘
在某大陆上面有 n n n 个国家,作为旅行者兼冒险家的你想以一种既定的路线(即从1到 n n n )去畅游这 n n n 个国家,但由于这 n n n 个国家并不太平,因此每到一个国家你都需要消耗 a i a_i ai 点的生命力来帮助这个国家重回往日的安宁然后再进行畅游。不过天生拥有神力的你却有 k k k 次释放神力的机会来帮助这个国家恢复安宁,且释放神力时不消耗任何生命力。你在旅行前拥有 m m m 点的生命力,若你在旅途中不幸用完全部的生命力,则便会回到你诞生的地方陷入沉睡。现在请问你最多可以畅游多少个国家。注意:若在当前国家消耗完生命力则意味着你并没有畅游该国家。
输入
输入包含 2 行。
第一行三个正整数 n , m , k ( 1 ≤ n ≤ 2 × 1 0 5 , 1 ≤ m ≤ 1 0 18 , 0 ≤ k ≤ 2 × 1 0 5 ) n,m,k(1≤n≤2\times10^5,1≤m≤10^{18},0≤k≤2\times10^5) n,m,k(1≤n≤2×105,1≤m≤1018,0≤k≤2×105) ,分别代表国家的个数,你拥有的初始生命力,你可以释放神力的次数。
第二行包含 n n n 个正整数,第 i i i 个正整数 a i ( 1 ≤ a i ≤ 1 0 18 ) a_i (1≤a_i≤10^{18}) ai(1≤ai≤1018) 代表你不释放神力帮助第 i i i 个国家需要消耗的生命力的大小。
输出
输出包含一行,共一个数,表示你能畅游的国家的个数。
解题思路
逆贪心,用优先队列 ,需要释放技能时,每次消化当前位置到首位的最大值。
AC代码
#include<bits/stdc++.h>
using namespace std;
#define IOS ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
#define int long long
#define PII pair<int,int>
#define fi first
#define se second
const int N=2e5+10;
void solve()
{priority_queue<int>q;int n,m,k;cin>>n>>m>>k;int ans=0;int i;for(i=0;i<n;i++){int x;cin>>x;m-=x;q.push(x);if(m<=0&&k){k--;m+=q.top();q.pop();}if(m<=0)break;}cout<<i;
}
signed main()
{int t;
// cin>>t;t=1;while(t--)solve();return 0;
}
H 两难抉择
题目描述
现在有长度为 n n n 的数组 a a a,你可以在两种操作中选择一种进行最多一次操作。
- 操作1:
选择一个数 i i i ( 1 ≤ i ≤ n ) (1\leq i\leq n) (1≤i≤n) 使得 a i : = a i + x a_i:=a_i+x ai:=ai+x, x x x 可以是 [ 1 , n ] [1,n] [1,n] 范围内任意正整数。
- 操作2:
选择一个数 i i i ( 1 ≤ i ≤ n ) (1\leq i\leq n) (1≤i≤n) 使得 a i : = a i × x a_i:=a_i \times x ai:=ai×x, x x x 可以是 [ 1 , n ] [1,n] [1,n] 范围内任意正整数。
请问进行操作后,最大的数组总和是多少?
输入
输入包含两行.
第一行一个正整数 n n n ( 1 ≤ n ≤ 2 × 1 0 5 ) (1\leq n\leq 2 \times 10^5) (1≤n≤2×105) 表示数组 a a a 的长度。
第二行 n n n 个正整数 a i a_i ai ( 1 ≤ a i ≤ 1 0 9 ) (1\leq a_i \leq10^9) (1≤ai≤109) 表示数组 a a a 的元素。
输出
输出包含一行一个整数,表示最大的数组总和。
解题思路
变化最大的 a i a_i ai ,使数组和最大
AC代码
#include<bits/stdc++.h>
using namespace std;
#define IOS ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
#define int long long
#define PII pair<int,int>
#define fi first
#define se second
const int N=2e5+10;
int a[N];
void solve()
{int n;cin>>n;int ma=-1,sum=0;for(int i=0;i<n;i++){cin>>a[i];sum+=a[i];ma=max(a[i],ma);}sum-=ma;if((sum+ma*n)>=(sum+ma+n))cout<<sum+ma*n;else cout<<sum+ma+n;
}
signed main()
{int t;t=1;while(t--)solve();return 0;
}
I 除法移位
题目描述
现在有长度为 n n n 的数组 a a a,式子 S S S 定义为 S = a 1 ÷ a 2 ÷ a 3 . . . ÷ a n S=a_1\div a_2\div a_3...\div a_n S=a1÷a2÷a3...÷an,最多对数组 a a a 进行 t t t 次循环右移操作**。
**
请问,进行第几次操作时使得 S S S 最大?若存在多种答案,请输出最小值。
循环右移:一次操作使数组从 a 1 , a 2 , a 3 , . . . , a n a_1,a_2,a_3,...,a_n a1,a2,a3,...,an 形式转换为 a n , a 1 , a 2 , . . . , a n − 1 a_n,a_1,a_2,...,a_{n-1} an,a1,a2,...,an−1 形式。
输入
输入包含两行.
第一行一个正整数 n , t n,t n,t ( 1 ≤ n ≤ 2 × 1 0 5 , 0 ≤ t ≤ 1 0 9 ) (1\leq n\leq 2\times10^5,0\leq t\leq 10^9) (1≤n≤2×105,0≤t≤109) 表示数组 a a a 的长度和最多的操作次数。
第二行 n n n 个正整数 a i a_i ai ( 1 ≤ a i ≤ 1 0 9 ) (1\leq a_i \leq10^9) (1≤ai≤109) 表示数组 a a a 的元素。
输出
输出包含一行一个整数,表示使得 S S S 最大的最小操作次数。
解题思路
尽可能将大数移到首位
AC代码
#include<bits/stdc++.h>
using namespace std;
#define IOS ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
#define int long long
#define PII pair<int,int>
#define fi first
#define se second
const int N=2e5+10;
int a[N];
map<int , int>mp;
vector<int> q;
map<int,int>v;
void solve()
{int n,t;cin>>n>>t;int ma=-1;for(int i=1;i<=n;i++){cin>>a[i];mp[a[i]]=i;v[a[i]]++;if(v[a[i]]==1){q.push_back(a[i]);}}sort(q.begin(),q.end());int ans=0;for(int i=q.size()-1;i>=0;i--){int x=q[i];int y=mp[x];if((n-y+1)<=t){ans=n-y+1;break;}}if(ans==n)ans=0;cout<<ans;
}
signed main()
{int t;
// cin>>t;t=1;while(t--)solve();return 0;
}
K 图上计数(Easy)
题目描述
E a s y Easy Easy 版本和 H a r d Hard Hard 版本唯一的区别是 H a r d Hard Hard 版本删除的是桥,而 E a s y Easy Easy 版本删除的是任意边。
你有一张 n n n 个点 m m m 条边的无向图,你有无数次删除操作来删除任意条边以获得若干个联通块。定义联通块的大小为其所包含点个数。定义这个图的代价是:你有任意次操作,每次操作合并两个联通块,合并后联通块大小为二者之和,最后剩下两个联通块大小的乘积为此图的代价,若只有一个则代价为0。你需要最大化此图代价。
输入
第一行包含两个整数 n n n 和 m m m ,图中顶点的数量和边的数量。
接下来的每 m m m 行包含两个整数 u u u 和 v v v ,表示图中顶点 u u u 和 v v v 之间有一条无向边。
( 0 < n ≤ 1 0 6 ) \left ( 0< n\leq 10^{6} \right ) (0<n≤106)
( 0 ≤ m ≤ 1 0 6 ) \left ( 0\leq m\leq 10^{6} \right ) (0≤m≤106)
( 0 < u , v ≤ n ) \left ( 0< u,v\leq n \right ) (0<u,v≤n)
输出
输出一个整数表示最大代价。
解题思路
删除所有边,可能任意组合
AC代码
#include<bits/stdc++.h>
using namespace std;
#define IOS ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
#define int long long
#define PII pair<int,int>
#define fi first
#define se second
void solve()
{int n;cin>>n;cout<<(n/2)*(n-n/2);
}
signed main()
{int t;
// cin>>t;t=1;while(t--)solve();return 0;
}
相关文章:
河南萌新联赛2024第(一)场:河南农业大学 A D F G H I K
A 造数 题目描述: 给定一个整数 𝑛 ,你可以进行以下三种操作 操作1: 1 操作2; 2 操作3: 2 问最少需要多少次操作可以将 0 转为为 𝑛 。 解题思路 操作1,2,3。操作 3 …...
通信协议_C#实现CAN通信
CAN协议 CAN(Controller Area Network)即控制器局域网络。特点: 多主网络:网络上的任何节点都可以主动发送数据,不需要一个固定的主节点。双绞线:使用双绞线作为通信介质,支持较远的通信距离。…...
【AI工具基础】—B树(B-tree)
B树(B-tree)是一种自平衡的树状数据结构,它能够在保持数据有序的同时,优化大块数据的读写操作,使得查找、顺序访问、插入和删除等操作都能在对数时间内完成。以下是对B树原理的详细描述: 一、定义与特性 …...
STM32智能仓库管理系统教程
目录 引言环境准备智能仓库管理系统基础代码实现:实现智能仓库管理系统 4.1 数据采集模块 4.2 数据处理与控制模块 4.3 通信与网络系统实现 4.4 用户界面与数据可视化应用场景:仓库管理与优化问题解决方案与优化收尾与总结 1. 引言 智能仓库管理系统通…...
空间计算开发:Volu的集成开发工具包
在空间计算技术迅速发展的今天,VR和AR项目的开发需求日益增长。Volu,一个面向空间计算赛道的开发者工具,正致力于简化这一过程。本文将深入探讨Volu如何通过其集成环境,为开发者提供一站式的解决方案。 一、定位:空间计算的得力助手 Volu定位为一个专为空间开发设计的集…...
02-Redis未授权访问漏洞
免责声明 本文仅限于学习讨论与技术知识的分享,不得违反当地国家的法律法规。对于传播、利用文章中提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,本文作者不为此承担任何责任,一旦造成后果请自行承担&…...
Linux——多路复用之poll
目录 前言 一、poll的认识 二、poll的接口 三、poll的使用 前言 前面我们学习了多路复用的select,知道多路复用的原理与select的使用方法,但是select也有许多缺点,导致他的效率不算高。今天我们来学习poll的使用,看看poll较于…...
【AI资讯】7.19日凌晨OpenAI发布迷你AI模型GPT-4o mini
性价比最高的小模型 北京时间7月19日凌晨,美国OpenAI公司推出一款新的 AI 模型“GPT-4o mini”,即GPT-4o的更小参数量、简化版本。OpenAI表示,GPT-4o mini是目前功能最强大、性价比最高的小参数模型,性能逼近原版GPT-4࿰…...
3.设计模式--创建者模式--工厂模式
3.设计模式–创建者模式–工厂模式 3.1简单工厂和静态 工厂(不属于23中设计模式) //抽象类:定义了产品的规范,描述了产品的主要特性和功能 public interface Tea {public abstract void setName();public abstract String getNa…...
IOT 的 10 种常见协议、组网模式、特点及其使用场景浅析
前情: 开放系统互连(OSI)模型,它列出了七层。从下到上,各层如下: 物理层 数据链接 网络层 传输层 会话层 推介会 应用层 物联网也以多层模型的形式表达。尽管有些使用 OSI 七层模型,但其…...
【Android】 dp与sp,加冕为王
目录 重要概念 屏幕尺寸 屏幕分辨率 屏幕像素密度 基础知识: ppi pt DPI 的定义和重要性 Android 中的 DPI 级别 px dp(Density Independent Pixels) sp(Scale-independent Pixels) 安卓的dp/dip、sp 虚拟…...
R语言画散点图-饼图-折线图-柱状图-箱线图-直方图-曲线图-热力图-雷达图
R语言画散点图-饼图-折线图-柱状图-箱线图-直方图-曲线图-热力图-雷达图 散点图示例解析效果 饼图示例解析效果 折线图示例解析效果 柱状图示例解析效果 箱线图示例解析效果 直方图示例解析效果 曲线图使用 curve() 函数示例效果 使用 plot() 函数示例效果 使用 ggplot2 包绘制…...
影响转化率的多元因素分析及定制开发AI智能名片S2B2C商城系统小程序的应用案例
摘要:在互联网时代,转化率是衡量营销活动成功与否的关键指标。本文首先分析了影响转化率的多种因素,包括活动页面的设计、活动的限时性、主题文案的吸引力、从众心理的运用,以及最核心的产品质量与优惠力度。接着,本文…...
数据仓库中事实表设计的关键步骤解析
在数据仓库的设计过程中,事实表是描述业务度量的核心组件。本文将深入探讨数据仓库中事实表设计的关键步骤,包括选择业务过程及确定事实表类型、声明粒度、确定维度和确定事实的过程,帮助读者更好地理解和应用事实表设计的原则和方法。 第一…...
.net6 core Worker Service项目,使用Exchange Web Services (EWS) 分页获取电子邮件收件箱列表,邮件信息字段
Program.cs 安装包:Microsoft.AspNetCore.Hosting.WindowsServices、Microsoft.Extensions.Hosting、Microsoft.Extensions.Hosting.WindowsServices、Microsoft.Extensions.Logging.Log4Net.AspNetCore 新建Configs/log4net.config using Com.Chinahorn.Exchange.W…...
通过 EMR Serverless Spark 提交 PySpark 流任务
在大数据快速发展的时代,流式处理技术对于实时数据分析至关重要。EMR Serverless Spark提供了一个强大而可扩展的平台,它不仅简化了实时数据处理流程,还免去了服务器管理的烦恼,提升了效率。本文将指导您使用EMR Serverless Spark…...
【Linux网络】epoll实现的echo服务器{nocopy类/智能指针/echo服务器}
文章目录 1.代码基础1.1某类唯一存在1.2C智能指针 2.epoll实现的echo服务器日志套接字CMakeepoll封装主函数服务器 1.代码基础 1.1某类唯一存在 这段代码定义了一个名为 nocopy 的类,它旨在防止该类的实例被复制或赋值。这是通过在类中显式删除拷贝构造函数&#…...
[数据集][目标检测]拐杖检测数据集VOC+YOLO格式2778张1类别
数据集格式:Pascal VOC格式YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):2778 标注数量(xml文件个数):2778 标注数量(txt文件个数):2778 标注…...
长按加速- 解决react - setInterval下无法更新问题
最开始直接setInterval里,useState硬写,发现更新不,固定值 换let,发现dom更新不了 正确做法是用ref 并且pc端可以长按的,只是要用onTouchStart,不要用onMouseDown onTouchStart{handleMouseDown} onTou…...
路网双线合并单线——ArcGIS 解决方法
路网双线合并成单线是一个在地图制作、交通规划以及GIS分析中常见的需求。双线路网定义:具有不同流向、不同平面结构的道路。此外,车道数较多的道路(例如,双黄实线车道数大于4的道路)也可以视为双线路网,本…...
(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)
题目:3442. 奇偶频次间的最大差值 I 思路 :哈希,时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况,哈希表这里用数组即可实现。 C版本: class Solution { public:int maxDifference(string s) {int a[26]…...
【Linux】shell脚本忽略错误继续执行
在 shell 脚本中,可以使用 set -e 命令来设置脚本在遇到错误时退出执行。如果你希望脚本忽略错误并继续执行,可以在脚本开头添加 set e 命令来取消该设置。 举例1 #!/bin/bash# 取消 set -e 的设置 set e# 执行命令,并忽略错误 rm somefile…...
基于Flask实现的医疗保险欺诈识别监测模型
基于Flask实现的医疗保险欺诈识别监测模型 项目截图 项目简介 社会医疗保险是国家通过立法形式强制实施,由雇主和个人按一定比例缴纳保险费,建立社会医疗保险基金,支付雇员医疗费用的一种医疗保险制度, 它是促进社会文明和进步的…...
Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility
Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility 1. 实验室环境1.1 实验室环境1.2 小测试 2. The Endor System2.1 部署应用2.2 检查现有策略 3. Cilium 策略实体3.1 创建 allow-all 网络策略3.2 在 Hubble CLI 中验证网络策略源3.3 …...
【磁盘】每天掌握一个Linux命令 - iostat
目录 【磁盘】每天掌握一个Linux命令 - iostat工具概述安装方式核心功能基础用法进阶操作实战案例面试题场景生产场景 注意事项 【磁盘】每天掌握一个Linux命令 - iostat 工具概述 iostat(I/O Statistics)是Linux系统下用于监视系统输入输出设备和CPU使…...
新能源汽车智慧充电桩管理方案:新能源充电桩散热问题及消防安全监管方案
随着新能源汽车的快速普及,充电桩作为核心配套设施,其安全性与可靠性备受关注。然而,在高温、高负荷运行环境下,充电桩的散热问题与消防安全隐患日益凸显,成为制约行业发展的关键瓶颈。 如何通过智慧化管理手段优化散…...
鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个生活电费的缴纳和查询小程序
一、项目初始化与配置 1. 创建项目 ohpm init harmony/utility-payment-app 2. 配置权限 // module.json5 {"requestPermissions": [{"name": "ohos.permission.INTERNET"},{"name": "ohos.permission.GET_NETWORK_INFO"…...
浅谈不同二分算法的查找情况
二分算法原理比较简单,但是实际的算法模板却有很多,这一切都源于二分查找问题中的复杂情况和二分算法的边界处理,以下是博主对一些二分算法查找的情况分析。 需要说明的是,以下二分算法都是基于有序序列为升序有序的情况…...
Java面试专项一-准备篇
一、企业简历筛选规则 一般企业的简历筛选流程:首先由HR先筛选一部分简历后,在将简历给到对应的项目负责人后再进行下一步的操作。 HR如何筛选简历 例如:Boss直聘(招聘方平台) 直接按照条件进行筛选 例如:…...
智能AI电话机器人系统的识别能力现状与发展水平
一、引言 随着人工智能技术的飞速发展,AI电话机器人系统已经从简单的自动应答工具演变为具备复杂交互能力的智能助手。这类系统结合了语音识别、自然语言处理、情感计算和机器学习等多项前沿技术,在客户服务、营销推广、信息查询等领域发挥着越来越重要…...
