2023河南萌新联赛第(六)场:河南理工大学

news2024/9/28 15:20:39

目录

A 简单的异或

题目:

解析:

B 这是dp题吗

题目链接:https://ac.nowcoder.com/acm/contest/63602/B

解析:

D 买饼干的小Y

题目:https://ac.nowcoder.com/acm/contest/63602/D

解析:

E 不爱吃早饭的小Y

题目:https://ac.nowcoder.com/acm/contest/63602/E

解析:

H 左右横跳

题目:https://ac.nowcoder.com/acm/contest/63602/H

解析:

I 简单的组合

题目:https://ac.nowcoder.com/acm/contest/63602/I

解析:

J 线代高手

题目:https://ac.nowcoder.com/acm/contest/63602/J

解析:

L 阴晴不定的大橘学长

题目:https://ac.nowcoder.com/acm/contest/63602/L

解析:

A 简单的异或

题目:

  小Y学过异或后觉得这太简单了,但小H认为小Y太天真了,决定考验一下他,出了一道题:
    给出一个数组a,长度为n,分别为a1​,a2​,a3​,...an−1​,an​。以及q次访问,每次给出两个整数 l,r表示区间的左右端点。

    对于每次访问,给出一个整数 x(x<2^31) 使∑i=l r​(x⊕ai​)最大 

输入描述:

第一行一个整数N (1≤N≤10^5),表示序列的长度
第二行N个整数,表示序列内的元素(1≤ai​<2^31)
第三行一个整数q,表示询问的个数(1≤q≤10^5)

接下来q行,每行两个整数 L,R,表示询问的区间

保证L≤R

输出描述:

对于每次访问输出一个对应的x,若有多个解则输出最小的解

示例1

输入

5
1 2 3 4 5
3
1 2
2 4
3 5

输出

2147483644
2147483645
2147483642

说明

第一个样例中,

第一次访问区间[1,2]

区间内的值为1,2

当x取2147483644即1111111111111111111111111111100(31位二进制)时

x^1+x^2的值最大

解析:

题意就是求一个x , 使得区间内每一个元素与 x异或后的总和最大
先考虑单个元素与 x异或后最大,根据异或的性质,容易得到x 应该和 a的每一位都相反,才能
使得异或值最大。
考虑区间大小大于等于2 ,假如区间内每个元素的二进制第 i位相同 ( 从右往左数 ) ,比如全为1 ,那么
当 x的第 i位取相反值 0时,该位对于最后的总和贡献就是n*2^(i-1)
( 表示元素的个数 ) ,每有一个元素
的二进制第 i位为0 ,该位的贡献就会减少 2^(i-1)
,当有超过n/2的元素该位上为 0时, 的该位上取1 贡献更大
所以贪心考虑 x上每一位取值 0/1的贡献的多少,选择贡献大的即可
区间内第 i 位上 0 的个数与 1 的个数,当 1多时 x的第 i位上取0 , 0多则取 1。
特别的当 0和 1的数量相同时,因为题目要求输出较小值,取0 即可
暴力计算区间内第 i 位上的 1 个数求解复杂度 利用前缀和优化求解复杂度
#include<bits/stdc++.h>
#define int long long
using namespace std;
int a[100010][40],sum[100010][40];
void solve()
{
	int n,q,l,r;
	cin>>n;
	for(int i=1;i<=n;i++)
	{
		cin>>a[i][0];
		for(int j=1;j<=31;j++)
		{
			a[i][j]=a[i][0]>>(j-1)&1;
		}
	}
	for(int i=1;i<=n;i++)
	{
		for(int j=1;j<=31;j++)
		{
			sum[i][j]+=a[i][j]+sum[i-1][j];
		}
	}
	cin>>q;
	while(q--)
	{
		int x=0;
		int ans;
		cin>>l>>r;
		for(int i=1;i<=31;i++)
		{
			ans=sum[r][i]-sum[l-1][i];
			if(ans<r-l+1-ans)
			x+=1<<(i-1);
		}
		cout<<x<<endl;
	}
}
signed main()
{
	int t=1;
	//cin>>t;
	while(t--)
	solve();
	return 0;
}

B 这是dp题吗

题目链接:https://ac.nowcoder.com/acm/contest/63602/B

解析:

#include<bits/stdc++.h>
using namespace std;
#define int long long
#define IOS ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
const int N=1e3+7;
int a[N][N];
void solve(){
	int n,k;
	cin>>n>>k;
	for(int i=1;i<=n;i++) 
	{
		for(int j=0;j<=2*n;j++) 
		a[i][j]=-1e18;
		for(int j=n-i+1;j<=n+i-1;j++)
		cin>>a[i][j];
	}
	for(int i=1;i<=n;i++) 
	{
		for(int j=n-i+1;j<=n+i-1;j++) 
		{
			a[i][j]+=max(a[i-1][j],max(a[i-1][j-1],a[i-1][j+1]));
		}
	}
	int ans=-1e18;
	for(int j=n-k;j<=n+k;j++) 
	ans=max(ans,a[n][j]);
	cout<<ans<<endl;
}
signed main()
{
	IOS
	int t=1;
	//cin>>t;
	while(t--)
	solve();
	return 0;
}

D 买饼干的小Y

题目:https://ac.nowcoder.com/acm/contest/63602/D

解析:

先暴力找到力气大于等于1的,之后加上剩下的(不足一的按1计算)

#include<bits/stdc++.h>
using namespace std;
#define int long long
#define IOS ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
int a[202000];
void solve()
{
	int n,m,x,y,sum=0;
	cin>>n>>m;
	x=n;
	y=m;
	x-=m;
	while(x>0)
	{
		x-=ceil((double)y/2);
		sum++;
		y=ceil(double(y)/2);
		if(y<=2&&x>0)
		{
			sum+=x;
			x=0;
		}
	}
	cout<<sum<<endl;
	return ;
}
signed main()
{
	IOS
	int t=1;
	//cin>>t;
	while(t--)
	solve();
	return 0;
}

E 不爱吃早饭的小Y

题目:https://ac.nowcoder.com/acm/contest/63602/E

解析:

对于单堆饼干暴力或者递归求出该堆的SG函数值,如果为0 ,先手必败,反之先手必胜。对于n 堆游戏,总游戏的合就是每个单堆的SG函数的异或和

#include<bits/stdc++.h>
using namespace std;
#define int long long
#define IOS ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
void solve()
{
	int n,a,b;
	cin>>n>>a>>b;
    int res=0;
    for(int i=0;i<n;i++){
        int x;
        cin>>x;
        x%=(a+b);
        res^=x/a;
    }
    cout<<(res?"C":"Y");
	return ;
}
signed main()
{
	IOS
	int t=1;
	//cin>>t;
	while(t--)
	solve();
	return 0;
}

H 左右横跳

题目:https://ac.nowcoder.com/acm/contest/63602/H

解析:

简单的动态规划,题目可以理解为一个 n*m 大小的点阵,每个点上有不同的分数,而一个点上能得 到的分数或积累的分数需要通过操作一直接继承正下方的点的分值,或者通过操作二继承下方任意一列 的间隔 k 行的点的分数并加上所在位置上点的分数 ,因为通过操作二转移得到的分数需要比较 m 列所有的分数,所以每操作一行就记录当前一行所能获得的分数的最大值
#include<bits/stdc++.h>
using namespace std;
#define int long long
#define IOS ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
int a[100010],dp[100010];
void solve()
{
	int n,m,k,sum=0,x,num=0,j=1;
	cin>>n>>m>>k;
	for(int i=1;i<=n;i++)
	{
		for(int j=1;j<=m;j++)
	    {
		cin>>x;
		a[i]=max(a[i],x);
	    }
	}
	dp[1]=a[1];
	for(int i=2;i<=n;i++)
	{
		dp[i]=dp[i-1];
		if(i-k>0)
		dp[i]=max(dp[i],dp[i-k]+a[i]);
	}
	cout<<dp[n]<<endl;
	
}
signed main()
{
	IOS
	int t=1;
	//cin>>t;
	while(t--)
	solve();
	return 0;
}

I 简单的组合

题目:https://ac.nowcoder.com/acm/contest/63602/I

解析:

string模拟排序,输出值即可

#include<bits/stdc++.h>
using namespace std;
#define int long long
#define IOS ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
bool cmp(string x,string y)
{
	return x>y;
}
void solve()
{
	int n,sum=0,num=0;
	cin>>n;
	string a,b,c,d;
	string z[5];
	for(int i=31;i>=0;i--)
	{
		int k=n>>i&1;
		sum++;
		if(sum<=8)
		z[0]+=(k+'0');
		else if(sum<=16)
		z[1]+=(k+'0');
		else if(sum<=24)
		z[2]+=(k+'0');
		else
		z[3]+=(k+'0');
	}
	sort(z,z+4,cmp);
	for(int i=0;i<4;i++)
	{
		for(int j=0;j<8;j++)
		{
			num=num*2+(z[i][j]-'0');
		}
	}
	cout<<num<<endl;
}
signed main()
{
	IOS
	int t=1;
	//cin>>t;
	while(t--)
	solve();
	return 0;
}

J 线代高手

题目:https://ac.nowcoder.com/acm/contest/63602/J

解析:

数据范围较小,直接暴力枚举左上角和右下角,如果该子矩阵合法,更新答案即可
#include<bits/stdc++.h>
using namespace std;
#define int long long
#define IOS ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
signed main() {
	IOS
    int n, m;
    cin >> n >> m;
    vector<int> A(n);
    for (int i = 0; i < n; ++i) {
        cin >> A[i];
    }
    vector<int> B(m);
    for (int i = 0; i < m; ++i) {
        cin >> B[i];
    }
    int x;
    cin >> x;
    int maxArea = 0;
    vector<int> prefixSumA(n + 1, 0);
    vector<int> prefixSumB(m + 1, 0);
    for (int i = 1; i <= n; ++i) {
        prefixSumA[i] = prefixSumA[i - 1] + A[i - 1];
    }
    for (int i = 1; i <= m; ++i) {
        prefixSumB[i] = prefixSumB[i - 1] + B[i - 1];
    }
    for (int i = 1; i <= n; ++i) {
        for (int j = 1; j <= m; ++j) {
            for (int k = i; k <= n; ++k) {
                for (int l = j; l <= m; ++l) {
                    int sumA = prefixSumA[k] - prefixSumA[i - 1];
                    int sumB = prefixSumB[l] - prefixSumB[j - 1];
                    int sum = sumA * sumB;
                    if (sum <= x) {
                        int area = (k - i + 1) * (l - j + 1);
                        maxArea = max(maxArea, area);
                    }
                }
            }
        }
    }
    cout << maxArea << endl;
    return 0;
}

L 阴晴不定的大橘学长

题目:https://ac.nowcoder.com/acm/contest/63602/L

解析:

前缀和变形加树状数组维护

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=2e5+10;
ll n,x;
ll a[N],b[N],c[N],s[N];
void add(int x,int d){
	while(x<N){
		c[x]+=d;
		x+=x&-x;
	}
}
ll sum(int x){
	ll res=0;
	while(x){
		res+=c[x];
		x-=x&-x;
	}
	return res;
}
int main(){
	scanf("%lld%lld",&n,&x);
	for(int i=1;i<=n;i++){
		scanf("%lld",&a[i]);
		b[i]=s[i]=s[i-1]+a[i];
	}
	sort(b,b+n+1);
	ll ans=0;
	for(int i=0;i<=n;i++){
		int k;
		if(i>0){
			k=upper_bound(b,b+n+1,s[i]-x)-b+1-1;
			ans+=sum(k);
		}
		k=lower_bound(b,b+n+1,s[i])-b+1;
		add(k,1);
	}
	printf("%lld\n",ans);
}

下一篇:牛客周赛 Round 7

推荐音乐:呓语

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

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

相关文章

【jwt】JWT原理,JWT是用来解决什么问题的,如何自定义生成JWT数据,并且实现jwt数据的解码

JWT&#xff1a; JSON Web Token 1. jwt概述 用户登录成功后&#xff0c;服务端 如何知道客户端的每次请求对应的是哪个用户呢&#xff1f;怎么做&#xff1a;目前有两种方式实现. 1.1. 一是通过sessionId的方式&#xff0c;登录成功后服务端返回sessionId给客户端&#xff0…

【机器学习6】数据预处理(三)——处理类别数据(有序数据和标称数据)

处理类别数据 &#x1f331;简要理解处理类别数据的重要性☘️类别数据的分类☘️方便研究——用pandas创建包含多种特征的数据集&#x1f340;映射有序特征&#x1f340;标称特征标签编码&#x1f340;标称特征的独热编码&#x1f331;独热编码的优缺点 &#x1f331;简要理解…

爬虫逆向实战(八)--猿人学第十五题

一、数据接口分析 主页地址&#xff1a;猿人学第十五题 1、抓包 通过抓包可以发现数据接口是api/match/15 2、判断是否有加密参数 请求参数是否加密&#xff1f; 查看“载荷”模块可以发现有一个m加密参数 请求头是否加密&#xff1f; 无响应是否加密&#xff1f; 无cook…

Cat(3):客户端集成—简单案例

接下来编写一个简单的springboot与Cat整合的案例 1 新建springboot项目 首先创建一个Spring Boot的初始化工程。只需要勾选web依赖即可。 2 添加 Maven 添加依赖 <dependency><groupId>com.dianping.cat</groupId><artifactId>cat-client</artifa…

拉丁方设计资料的方差分析(SPSS版+SAS版)

拉丁方设计&#xff08;Latin square design&#xff09;&#xff1a;实验研究中涉及一个处理因素和两个控制因素&#xff0c;每个因素的类别数或水平数相等&#xff0c;此时可采用拉丁方设计&#xff0c;将两个控制因素分别安排在拉丁方设计的行和列上。该设计类型仍为单因素方…

生信豆芽菜-oncoPredict预测药物的敏感性

网址&#xff1a;http://www.sxdyc.com/drugOncoPredict 1、数据准备 准备一个行为基因&#xff0c;列为样本的表达谱矩阵即可 2、选择训练集数据库&#xff0c;提交等待运行成功即可 3、结果 当然&#xff0c;如果不清楚数据是什么样的&#xff0c;可以选择下载我们的示…

无涯教程-Perl - tell函数

描述 此函数返回指定FILEHANDLE中读取指针的当前位置(以字节为单位)。如果省略FILEHANDLE,则它将返回上次访问的文件中的位置。 语法 以下是此函数的简单语法- tell FILEHANDLEtell返回值 此函数以字节为单位返回当前文件位置。 例 以下是显示其基本用法的示例代码,要检…

RTSP/Onvif视频服务器EasyNVR视频监控汇聚平台的实际应用介绍

一、方案背景 在新时代的背景下&#xff0c;公安情报指挥体系建设需要在情报指挥中心为基础&#xff0c;以实现“情报全面精准、指挥集成统一、勤务协同高效、舆情管控有力”的目标。通过建设情指勤舆一体化指挥调度平台&#xff0c;将情报指挥中心打造成社会治安防控体系的核…

2023国考(地市级)判断推理

题目 黑白块 例题 例题 例题 例题

数据库的事务隔离级别(脏读、不可重复读、幻读)

并发事务问题 read uncommitted&#xff0c;存在脏读、不可重复度、幻读 read committed&#xff0c;存在不可重复读、幻读 repeatable read(默认)&#xff0c;存在幻读 serializable&#xff08;串行化&#xff0c;序列化&#xff09;&#xff0c;都不存在 前提&#xff1…

Android内存泄漏总结和性能优化技巧

我们在开发安卓应用时&#xff0c;性能优化是非常重要的方面。一方面&#xff0c;优化可以提高应用的响应速度、降低卡顿率和提升应用流畅度&#xff0c;从而提升用户体验&#xff1b;另一方面&#xff0c;优化也可以减少应用的资源占用&#xff0c;提高应用的稳定性和安全性&a…

ExcelServer Excel服务器的使用

Excel服务器的搭建 见 一步搭建Excel服务器 1、以EXCEL文件作为模板 1.1 利用excel易于使用的方式创建模板&#xff0c;并设置编辑&#xff0c;只读&#xff0c;函数等恪。 2、利用设置模板的权限 2.1 设置角色权限,允许哪些角色可以编辑 3、查看汇总的数据

java 设置JTable 不可编辑,但可以选择行。chatGPT就蒙了,最大的问题是哪些是自己想的,哪些有依据的及依据是什么。

这是对的。 tableModel new DefaultTableModel(new Object[]{"ID", "Name", "Type"}, 0){public boolean isCellEditable(int row, int column){return false;}};; 看看GPT的回答&#xff1a; 看似这个回事&#xff0c;但不对。 这个直接用中…

多维时序 | MATLAB实现KOA-CNN-BiGRU-Attention多变量时间序列预测

多维时序 | MATLAB实现KOA-CNN-BiGRU-Attention多变量时间序列预测 目录 多维时序 | MATLAB实现KOA-CNN-BiGRU-Attention多变量时间序列预测预测效果基本介绍模型描述程序设计参考资料 预测效果 基本介绍 MATLAB实现KOA-CNN-BiGRU-Attention多变量时间序列预测&#xff0c;KOA-…

PS实现多个图片转化GIF动画

PS实现多个图片转化为GIF动画步骤 一、导入图片素材1.打开PS软件&#xff0c;点击 [文件] --- [脚本] ---[将文件载入堆栈]2.选择图片3.导入成功 二、打开时间轴1.点击[窗口]---[时间轴]2.选择创建帧动画3.创建帧动画 三、创建动画1.复制帧。2.设置帧的内容。3.修改图片停留的时…

JRebel插件扩展-mac版

前言 上一篇分享了mac开发环境的搭建&#xff0c;但是欠了博友几个优化的债&#xff0c;今天先还一个&#xff0c;那就是idea里jRebel插件的扩展。 一、场景回眸 这个如果在win环境那扩展是分分钟&#xff0c;一个exe文件点点就行。现在在mac环境就没有这样的dmg可以执行的&…

如何用Apipost实现sign签名?

我们平常对外的接口都会用到sign签名&#xff0c;对不同的用户提供不同的apikey ,这样可以提高接口请求的安全性&#xff0c;避免被人抓包后乱请求。 如何用Apipost实现sign签名&#xff1f; 可以在Apipost中通过预执行脚本调用内置的JS库去实现预执行脚本是在发送请求之前自…

(JAVA)事件

ActionListener public class Test3 {public static void main(String[] args){JFrame jFrame new JFrame();//设置界面的宽高jFrame.setSize(603,680);//设置界面标题jFrame.setTitle("事件演示");//设置界面置顶jFrame.setAlwaysOnTop(true);//设置界面居中jFram…

java初级算法(杨辉三角)

java初级算法&#xff08;杨辉三角&#xff09; java初级算法&#xff08;杨辉三角&#xff09;内容&#xff1a;思路解法&#xff1a;代码实现 学习时间&#xff1a;2023/08/16 java初级算法&#xff08;杨辉三角&#xff09; 每日一算法&#xff1a;杨辉三角 内容&#xff1a…

跨境外贸必看|海外版小红书“Pinterest”如何推广引流?

Pinterest是一个海外图片社交分享网站&#xff0c;Pinterest与国内小红书的营销方式非常相似&#xff0c;它允许我们定位特定的人群、兴趣甚至位置&#xff0c;借助庞大的用户群体和针对特定受众的能力&#xff0c;它成为外贸与跨境电商的推广营销利器&#xff0c;越来越多的跨…