2023河南萌新联赛第一场(河南农业大学)

news2024/7/2 4:02:48

目录

A.你也喜欢数学吗​编辑

 E.动物朋友

F.松鼠排序

G.Reverse

J.合唱比赛

K.以撒和隐藏房间

L.中位数


A.你也喜欢数学吗

输入描述

第一行一个正整数k(1<=k<=1e12)

输出描述

输出一行一个整数表示答案

示例1
输入
1
输出
1

示例2
输入
3
输出
10 

 思路

\sum_{i=1}^{n}\phi (i)*[n/i]是等于\frac{n(n+1)}{2},将整个式子再化简得到\frac{n(n+1)(n+2)}{6},然后用(__int)防止数据溢出。

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int mod=1e9+7;
ll n;
signed main()
{
	cin>>n;
	ll ans=(((__int128)n*(n+1))*(n+2))/6%mod;
	cout<<ans;
	return 0;
}

 E.动物朋友

题目描述 

已知有n个动物朋友排成一排,每个动物朋友都有一个正整数的快乐值,涛涛每次会和连续的动物朋友玩,并且获得这些动物朋友快乐值的和的快乐,而涛涛是个完美主义者,他觉得快乐值刚好是m时候才是快乐的,现在请问有多少种选择方式,使得所选的连续的动物朋友的快乐值刚好为m。

输入描述

第一行输入n(1<=n<=1e6)和m(1<=m<=1e6)。

第二行输入n个正整数,第i个代表第i个动物朋友的快乐值。(1<=ai<=1e5)

输出描述

一个整数,表示可能存在的选法数量,如果没有,就输出0;

输入1

1 5
4

输出1

0

输入2

11 45
1 4 1 9 19 8 10 8 1 2 3

输出2

1

#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N=1e6+10;
int n,m;
int a[N];
int s[N];
int cnt;
signed main()
{
    cin>>n>>m;
    for(int i=1;i<=n;i++) 
    {
        cin>>a[i];
        s[i]=s[i-1]+a[i];
    }
    for(int i=1;i<=n;i++)
    {
        int l=i,r=n;
        while(l<r)
        {
            int mid=l+r>>1;
            if(s[mid]-s[i-1]>=m) r=mid;
            else l=mid+1;
        }
        if(s[r]-s[i-1]==m) cnt++;
    }
    cout<<cnt;
}

F.松鼠排序

题目描述 

松鼠宝宝有一排n个大小不一的坚果,松鼠宝宝想把坚果从小到大排序,每次他会选择两个坚果a和b每次花费1点力气把这两个坚果交换,爱动脑筋的松鼠宝宝想知道他排完这n个坚果一共需要花费的最少力气是多少?

输入描述

第一行一个整数n代表坚果数

接下来一行n个整数代表每个坚果的大小(每个坚果大小都不一样,即大小为1-n的一个排列)1<=n<=1e5坚果大小x,1<=x<=n。

输出描述

一行输出代表松鼠宝宝花费的最小力气。

输入

3
3 2 1

输出

1

思路

模拟交换。

#include <bits/stdc++.h>
using namespace std; 
int a[100005];
int main() 
{ 
    int n,i,k;
    cin>>n;
    for(i=1;i<=n;i++)
    {
        scanf("%d",&a[i]);
    }
    for(i=1;i<=n;i++)
    {
        while(a[i]!=i)
        {
            swap(a[a[i]],a[i]);
            k++;
        }
    }
    cout<<k;
} 

G.Reverse

题目描述 

给定一个长度为n的01串,你需要选择一段任意长度(可以为0)的区间对其翻转,翻转后,求最长的一段连续的全是1的区间的长度。

输入描述

输入共2行。
第一行一个整数n(1≤n≤10^6)。
第二行一个长度为n的01序列。

输出描述

输出一个整数,表示最长的长度。

示例1

输入
10
0111001011
输出
5

说明

翻转区间[5,10],翻转为0111110100。

思路

排序后最长连续1的长度。如果有超过两个连续1,那么就是最长的+第二长的。

#include<bits/stdc++.h>
using namespace std;
int n;
string s;
int main()
{
    cin>>n>>s;
    vector<int>v;
    int cnt=0;
    for(auto it:s)
        if(it=='1') cnt++;
        else v.push_back(cnt),cnt=0;
    if(cnt!=0) v.push_back(cnt);
    sort(v.begin(), v.end());
    int k = v.size();
    if(k>1) cout<<v[k-1]+v[k-2];
    else if(k==1) cout<<v[k-1];
    else cout<<0;
    return 0;
}

J.合唱比赛

题目描述 

河南农业大学信管学院举办一年一度的合唱比赛,目前你是评委之一,剩下还有其他的n位评委,给定一个正整数n和n个正整数表示这n个评委给目前在表演的团队的分数,评分规则为在所有评委(包括你)的分数中去掉一个最高分和最低分,剩下的取平均值(总共n-1个值),现在你可以参与评分(1~100之间的整数),问最终结果会在什么区间内,用两个数表示这个区间,结果保留6位小数。

输入描述

第一行给定一个正整数n

接下来一行给定n个整数表示n个评委的分数
2<=n<=1000

输出描述

输出两个保留六位的小数l,r表示答案。

示例1

输入
3
80 90 100
输出
85.000000 95.000000

示例2

输入
4
3 5 9 13
输出
5.666667 9.000000

#include<bits/stdc++.h>
using namespace std;
const int N=1e5+10;
int n;
double a[N];

signed main()
{
    cin>>n;
    for(int i=1;i<=n;i++) cin>>a[i];
    sort(a+1,a+n+1);
    double l=0,r=0;
    for(int i=1;i<=n;i++)
    {
        if(i!=1) r+=a[i];
        if(i!=n) l+=a[i];
    }
    printf("%.6lf %.6lf",l/(n-1),r/(n-1));
    return 0;
}

K.以撒和隐藏房间

题目描述 

你说得对,但是以撒的结合是一款集合了推箱子、血统检验、少女换装、宠物养成等等元素的地牢探险/Rougelike类跨世代大作。游戏发生在以撒和他的妈妈住的小房子的[地下室]里,在这里,天真的以撒受[教条]的影响,进入了一场幻想中的地下室冒险。你将扮演以撒扮演的圣经中的人物,在充满怪物和杂物的地下室里获取各种激起回忆的道具,靠败们击败天使或是恶魔的阻挡,找回缺失的亲情——同时,逐步发掘[父母离异]的真相。 

以撒又一次的逃进了地下室

地下室可以看作一个n*m的矩阵的迷宫,其中有些格子是有门相连房间,有些则是无法通过的墙壁。以撒发现其中一些墙壁似乎是空心的,可以通过爆炸打开隐藏的房间,而隐藏房的生成有一定的规律,以撒认为一个墙壁格子在满足以下所有情况时可能会是隐藏房间:

1, 该墙壁格子和三个普通房间相邻

2, 在满足1条件的情况下,不能和boss房间相邻


但是以撒正在和萌死戳交战,

现在你需要编写程序告诉他是否存在可能是隐藏房间的格子。

如果存在,输出两行,第一行是一个YES,第二行输出可能为隐藏房间的格子的数量

如果不存在,输出NO

输入描述

第一行两个整数n,m(3<m,n<=1000)

然后是一个n*m矩阵,表示地图状态,0表示墙壁,1表示房间,2表示boss房间

输出描述

如果存在,输出两行,第一行是一个YES,第二行输出可能为隐藏房间的格子的数量

如果不存在,输出NO

示例1

输入
3 3
001
110
211
输出
YES
1

示例2

输入
3 4
0010
1111
0102
输出
NO
备注:
隐藏房间不属于房间

思路

 搜索。

#include<bits/stdc++.h>
using namespace std;
const int N=1100;
int n,m,ans;
char g[N][N];
int dx[]={-1,0,1,0},dy[]={0,1,0,-1};
void solve()
{
    cin>>n>>m;
    for(int i=0;i<n;i++) cin>>g[i];
    bool f=false;
    for(int i=0;i<n;i++)
        for(int j=0;j<m;j++)
        {
            if(g[i][j]!='0') continue;
            bool flag=true;
            int cnt=0;
            for(int k=0;k<4;k++)
            {
                int l=i+dx[k],r=j+dy[k];
                if(l>=0&&l<n&&r>=0&&r<m)
                    if(g[l][r]=='1') cnt++;
                    else if(g[l][r]=='2')
                    {
                        flag=false;
                        break;
                    }
            }
            if(flag&&cnt==3) 
            {
                f=true;
                ans++;
            }
        }
    if(f) cout<<"YES"<<endl<<ans;
    else cout<<"NO"<<endl;
}

signed main()
{
    solve();
    return 0;
}

L.中位数

题目描述 

某天cbyyx突发奇想给lyt出了一道题:给定序列a,b,保证|a|+|b|为奇数且小于1e6,给定q组询问,每次将a序列其中一个数修改或将b序列其中一个数修改,问每次操作后两序列合并后的中位数是多少,lyt觉得这个问题太简单并把它秒了,但lyt觉得这个题对新生来说有点困难,于是他简化问题如下:给定两个正整数n,m,再给定长度为n的正整数序列a, 保证n为奇数。接下来m行,每行两个正整数p, x。表示把a[p]修改为x。对于每次操作输出修改后的中位数。

输入描述

第一行输入两个正整数n,m

第二行给定n个正整数表示序列a1~an

接下来m行每行给定两个数p,x,表示将a[p]修改为x。

1<=n<=1e6,1<=m<=1e5,1<=x<=1e6

输出描述

对于每次操作输出每次操作后序列的中位数的值。

示例1

输入
7 3
1 2 3 4 5 6 7
2 3
4 4
7 1
输出

4
4
3

思路

树状数组求有序序列第k个数。

#include<bits/stdc++.h> 
#define int long long
using namespace std;
const int N = 1e6 + 10;
int a[N], tr[N];
int n, m;

int lowbit(int x)
{
    return x & -x;
}

void add(int x, int v)
{
    for (int i = x; i <= N; i += lowbit(i)) tr[i] += v;
}

int query(int x)
{
    int res = 0;
    for (int i = x; i; i -= lowbit(i)) res += tr[i];
    return res;
}

signed main()
{
    cin>>n>>m;
    for (int i = 1; i <= n; i++) 
	{
		cin>>a[i];
		add(a[i],1);
	}
	int k=(n+1)/2;
    while (m--)
    {
        int p,x;
        cin>>p>>x;
        add(a[p],-1);
        a[p]=x;
        add(x,1);
        int l=1,r=N;
        while(l<r)
        {
        	int mid=l+r>>1;
        	if(query(mid)>=k) r=mid;
        	else l=mid+1;
		}
		cout<<l<<endl;
    }
    return 0;
}

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

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

相关文章

【itext7】itext7操作PDF文档之添加段落文本内容、添加List列表、添加Image图片、添加Table表格

这篇文章&#xff0c;主要介绍itext7操作PDF文档之添加段落文本内容、添加List列表、添加Image图片、添加Table表格。 目录 一、itext7操作PDF内容 1.1、添加段落文本内容 1.2、添加列表内容 1.3、添加图片 1.4、添加表格 &#xff08;1&#xff09;列宽采用点单位&#…

MySQL之索引(入门级讲解)

目录 一.索引的概念 1.1索引的简介 1.2.索引的优缺点 二.MySQL索引语法 2.1查看索引 2.2创建索引 2.2.1 创建表时创建索引 2.2.2存在的表上创建索引 2.3删除索引 三.索引的数据结构 3.1Btree索引 3.2Hash索引 3.4Hash索引和Btree索引的对比 &#x1f381;个…

基于Kitti数据集的智能驾驶目标检测系统(PyTorch+Pyside6+YOLOv5模型)

摘要&#xff1a;基于Kitti数据集的智能驾驶目标检测系统可用于日常生活中检测与定位行人&#xff08;Pedestrian&#xff09;、面包车&#xff08;Van&#xff09;、坐着的人&#xff08;Person Sitting&#xff09;、汽车&#xff08;Car&#xff09;、卡车&#xff08;Truck…

[2023新教程]M2 Mac安装Anaconda和Pytorch

本文首发于我的学习之路&#xff1a;https://liguang.wang/index.php/archives/80/ 1 背景 最近使用起了Mac Mini&#xff0c;需要安装Anaconda和Pytorch。网上的教程非常老旧&#xff0c;可读性较差&#xff0c;于是记录下自己的安装过程&#xff0c;分享给大家。 2 详细过…

二十三章:Gated-SCNN:Gated Shape CNNs for Semantic Segmentation ——用于语义分割的门控形状卷积神经网络

0.摘要 当前图像分割的最先进方法通过一个密集的图像表示来处理颜色、形状和纹理信息&#xff0c;这些信息都在深度卷积神经网络内部进行处理。然而&#xff0c;这种方法可能不太理想&#xff0c;因为它们包含了与识别相关的非常不同类型的信息。在这里&#xff0c;我们提出了一…

百度文心一言文心千帆大模型 ERNIE-Bot-turbo调用示例(golang版本)

百度的文心一言推出来也有一段时间了&#xff0c;但是接口部分一直没有公开&#xff0c;需要进行申请 最近&#xff0c;有朋友提供了文心千帆大模型的api权限&#xff0c;拿到了必须的参数&#xff0c;现在就来测试一下 下面是使用golang封装的文心千帆 ERNIE-Bot-turbo模型的调…

2023.7新版Pycharm没有Manager Repository(消失)下载镜像源问题

一、旧版本操作无法找到Manager Repository 二、解决方法---点击左侧键 三、点击添加设置小按钮 四、点击号复制进去镜像源网站即可 五、给大家推荐的镜像源网站 这里清华大学的镜像速度是最快的 https://pypi.tuna.tsinghua.edu.cn/simple/ 清华大学镜像http://pypi.douban…

天然气管道压力监测系统:管网安全守护者

随着我国工业的不断发展和能源需求的日益紧缺&#xff0c;天然气作为一种清洁能源正被广泛地开发和利用。然而。每年因天然气泄漏爆炸而造成的事故层出不穷&#xff0c;不仅威胁着人民的生命安全&#xff0c;还会对环境造成严重污染。面对这样的安全隐患&#xff0c;及时采取措…

Orangepi docker Home Assistant部署

手册上多数应用在树莓派用过&#xff0c;发现一个Home Assistant之前没搞过 按照手册先安装docker&#xff0c;使用enable_docker.sh 然后使用 docker run hello-world 来测试docker是否成功&#xff0c;如果hello from docker&#xff0c;即正常 通过以下docker命令搜索hom…

css - display属性

display属性有四个取值&#xff1a;block inline inline-block none 1、block display是类似于h和p标签在网页中默认显示方式&#xff0c;占据整整一行&#xff0c;所以不会与其他元素共同显示在一行之内。常见的block-display元素还有div、ol ul li、form等。如果想对某个blo…

【PHP面试题80】Redis消息发布与订阅功能怎么用的?

文章目录 &#x1f680;一、前言&#x1f680;二、PHP中安装Redis扩展&#x1f680;三、Redis消息发布与订阅&#x1f50e;3.1 创建发布者&#x1f50e;3.2 创建订阅者&#xff1a;&#x1f50e;3.3 运行发布者和订阅者&#xff1a; &#x1f680;四、总结 &#x1f680;一、前…

tomcat 使用部署

--烛光照亮了晚餐&#xff0c;照不出个答案。 不BB。 --部署web项目&#xff08;无 maven 纯web项目&#xff09; 直接把整个项目放到tomcat的webapps目录的下面然后重启tomcat即可 --部署html静态项目 直接把静态html放到tomcat的webapps目录下面即可&#xff0c;不要重命…

spring中bean实例化的三种方式 -- Spring入门(二)

文章目录 前言1.Bean实例化简介2.bean的实例化 -- 构造方法3.bean的实例化 -- 静态工厂实例化4.bean实例化 -- 实例工厂和FactoryBean5.三种bean实例化方式的区别 总结 前言 为了巩固所学的知识&#xff0c;作者尝试着开始发布一些学习笔记类的博客&#xff0c;方便日后回顾。…

JDBC之用IDEA连接SQLServer数据库实用教程

目录 前言 一、数据库准备 1.通过SQLServer配置管理器打开TCP/IP协议&#xff0c;设置状态为已启用 2.数据库登录模式设置为身份验证登录&#xff08;如果已经设置可忽略此步骤&#xff09; 3.下载SQLServer驱动jar包 二、IDEA准备 1.导入SQLServer驱动jar包 2.编写测试代…

【UE5 多人联机教程】02-开始游戏菜单控件

目录 步骤 一、完善开始游戏菜单控件 二、控件功能实现 2.1 “开始游戏”按钮切换界面 2.2 “创建房间”、“加入房间”按钮切换界面 2.3 “创建房间”按钮 步骤 一、完善开始游戏菜单控件 打开“UMG_Main” 首先在控件切换器外层包裹一个画布面板 然后调整控件切换器全…

Docker-volume【基础使用】

目录 【1】将本地的目录挂载到容器中 【2】volume卷&#xff0c;持久化 【3】volume数据共享 【4】volume持久化的作用 【5】volume - 随机卷的使用方式 【6】 启动nginx容器访问80出现HELLO&#xff0c;访问81出现WORLD 【1】将本地的目录挂载到容器中 1、容器的数据目录…

第112天:免杀对抗-加载器分离无文件落地图片隐写SOCK管道参数协议化

知识点 #知识点&#xff1a; 1、无文件落地&分离拆分-将shellcode从文本中提取-file 2、无文件落地&分离拆分-将shellcode与加载器分离-argv 3、无文件落地&分离拆分-将shellcode远程协议加载-http 4、无文件落地&分离拆分-将shellcode通过管道传输-socket 5、…

设计模式与技术场景面试题详解

工厂方法模式 简单工厂模式 工厂方法模式 抽象工厂模式 策略模式 工厂模式策略模式&#xff08;登录案例&#xff09; 责任链模式 技术场景 单点登录怎么实现 权限认证是如何实现的 上传数据的安全性你们怎么控制 你负责的项目遇到了哪些棘手的问题&#xff1f;怎么解决的 你们…

Vue系列第二篇:初识Vue项目

上一篇我搭建了Vue开发环境&#xff0c;创建了一个demo项目&#xff0c;借助nginx将Vue项目编译部署。这一篇来看一下Vue项目的结构。如下图所示&#xff1a; 我就创建一个空项目&#xff0c;结果Vue脚手架就帮我自动生成了这么多文件&#xff0c;看着挺吓人的。不用怕&#xf…

第十一章、【Linux】正则表达式与文件格式化处理

正则表达式 &#xff08;Regular Expression, RE, 或称为常规表达式&#xff09;是通过一些特殊字符的排列&#xff0c;用以“搜寻/取代/删除”一列或多列文字字串&#xff0c; 简单的说&#xff0c;正则表达式就是用在字串的处理上面的一项“表示式”。正则表达式并不是一个工…