2024牛客寒假算法基础集训营3 -BDGH

  B题 :智乃的数字手串

 思路:

        思维题,本题题意N个数组首尾相连,然后当某两个相邻数组和为偶数时,交替拿走,并在选择两个数字交换位置,直到没有可以操作的数字为止。

        我们可以考虑,数字具有奇偶性,那么数字之和,同则偶,异则奇,那么当数组个数为奇数时一定是可以操作的,比如偶偶奇,奇偶偶,这种,一定是可以操作一次,而偶数是不一定可以操作的,所以玩家输掉游戏的时候,数组的个数一定是偶数,同时,拿走操作是交替进行的,所以第一次操作的时候数组个数是奇数,那么他进行操作的时候,数组个数就会一直是奇数,所以我们只需要看谁是第一个拿偶数的,谁就输掉游戏。

代码:

#include <iostream>
using namespace std;
int main()
{int t;cin>>t;while (t--){int n;cin>>n;for(int i=0;i<n;i++){int x;cin>>x;}if(n%2!=0) puts("qcjj");else puts("zn");}return 0;
}

D题:chino's bubble sort and maximum subarray sum(easy version)

思路:

         因为本题N最大是10的3次方,而k最大是1,也就意味着,本题最多只会交换一次,所以根据k的值 遍历求最大子段和即可,

代码:

#include<iostream>
#include <algorithm>
#include <cmath>
using namespace std;
const int N=1e3+10;
int e[N];
int n,k;
long long ans=-1e18;
void solve()
{long long sum=0;for(int i=0;i<n;i++){sum+=e[i];if(sum<e[i]) sum=e[i];  //有可能 sum小于e[i],这个时候最大子段和是e[i]本身ans=max(ans,sum);}
}int main()
{cin>>n>>k;for(int i=0;i<n;i++){cin>>e[i];}if(k==0) solve();else {for(int i=0;i<n-1;i++){swap(e[i],e[i+1]);solve();swap(e[i],e[i+1]);}}cout<<ans<<endl;return 0;
}

G题:智乃的比较函数(easy version)

思路1:

        本题N范围最大是2, 然后输入的整数也是在[1,3]范围内取整数,z也只取0和1,t最大是2*10的4次方,所以本题可以用暴力遍历解决,用三重循环遍历他x,y位置上的所有取值,根据y 筛选,如果筛选中有一个满足条件,那么证明所给数据条件是成立的,如果全部筛选完了,也没有一个满足条件的,就证明所给数据条件不成立。

代码:

        时间复杂度o(tn)

#include <iostream>
using namespace std;
const int N=5;
struct edge
{int a,b,c;
} a[N];
int b[N];
int n;
int solve()
{for(int i=0;i<n;i++){int x=a[i].a,y=a[i].b,z=a[i].c;if(z==1){if(b[x]<b[y]) continue;else return 0;}else{if(b[x]>=b[y]) continue;else return 0;}}return 1;
}int main()
{int t;cin>>t;while (t--){int i,j,k;cin>>n;for(int z=0;z<n;z++){cin>>i>>j>>k;a[z]={i,j,k};}int res=0;for(int i=1;i<=3;i++) for(int j=1;j<=3;j++) for(int k=1;k<=3;k++){b[1]=i,b[2]=j,b[3]=k;res|=solve();    //  |= 等于 两个数取之后,再赋值}if(res)cout<<"Yes"<<"\n";else cout<<"No"<<"\n";}return 0;
}

        思路2:

            如果本题不使用暴力做法的话,可以把数据想象成一个图,起始点是x,终止点是y,建立一条以w为权值的边,然后开始遍历建图,如果存在一个不满足题目要求的边(即建不成我们想要的图)就输出NO 如果建成了(都满足条件)就输出YES,

        本题难点就是不满足题目要求的边都是什么,是否完整。

        当x向y建边时,边权是w

        1. 重边冲突   即  图中已经有了一条 x->y w为1-w的边,此时失败

        2. 传递冲突,即  图中已经有了一条x->x^y为1-w的边,x^y->y为1-w的边,此时根据传递性x->y的边边权应该是1-w,这就和的第一种冲突一样了,此时失败。

           注:1^2=3,2^3=1, 1^3=2,一种小技巧, 仅对于1、2、3。

        3. 自环    当 x==y,且w==1 时,因为当w==1时,根据题意时x<y 显然如果x==y ,该条件不成立

        4.二元环    当存在一条y->x w=1的边时,x->y,w=1 不成立

         5.三元环   当存在一条 y->x^y w=1,x^y->xw=1 的边是就是存在一条y->x w=1 此时和二元环一样,x->y ,w=1 不成立

代码:

        时间复杂度o(tnlogn)

#include <iostream>
#include <array>
#include <set>using namespace std;
const int N=5;
struct edge
{int a,b,c;
} a[N];
int b[N];
int n;
int solve()
{set<array<int,3>> s;int n;cin>>n;for(int i=0;i<n;i++){int a,b,c;cin>>a>>b>>c;s.insert({a,b,c});}for(auto q:s ){int x=q[0],y=q[1],w=q[2];//重边冲突if(s.count({x,y,1-w})){puts("No");return 0 ;}//传递冲突if(s.count({x,x^y,1-w}) && s.count({x^y,y,1-w})){puts("No");return 0 ;}//自环xif(s.count({x,y,1}) && x==y  && w==1){puts("No");return 0 ;}//二元环if(s.count({y,x,1}) && w==1){puts("No");return 0 ;}//三元环if(s.count({x,x^y,1}) && s.count({x^y,y,1}) && w==1){puts("No");return 0 ;}}puts("Yes");return 0;
}int main()
{int t;cin>>t;while (t--){solve();}return 0;
}

H题:智乃的比较函数(normal version)

思路:

        本题与G题仅在N的范围不同,本题N的范围最大是50,两种方法时间复杂度上也都能过,代码,思路就和上题一样。

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

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

相关文章

016—pandas 分析近100年圣诞节日期分布

需求&#xff1a; 利用Pandas 分析近100年圣诞节的星期分布&#xff0c;目的是知道圣诞节都在星期几&#xff0c;哪个星期多些。 思路&#xff1a; 用 pd.date_range 生成 100 年日期数据 筛选出12月25日的所有日期 将日期转换为星期几 统计重复值的数量 绘图 二、…

LeetCode 热题 100 Day01

哈希模块 哈希结构&#xff1a; 哈希结构&#xff0c;即hash table&#xff0c;哈希表|散列表结构。 图摘自《代码随想录》 哈希表本质上表示的元素和索引的一种映射关系。 若查找某个数组中第n个元素&#xff0c;有两种方法&#xff1a; 1.从头遍历&#xff0c;复杂度&#xf…

快速鲁棒的ICP(一)

一、代码下载以、修改以及使用 链接&#xff1a;OpenGP/sparseicp: Automatically exported from code.google.com/p/sparseicp (github.com) 解压之后&#xff1a; 快速鲁棒的ICP是其他人在这份Sparse ICP代码基础上改写出来的&#xff1a; 我这里已经下载好了&#xff1a;…

代码随想录算法训练营day19||二叉树part06、654.最大二叉树 ● 617.合并二叉树 ● 700.二叉搜索树中的搜索 ● 98.验证二叉搜索树

654.最大二叉树 给定一个不重复的整数数组 nums 。 最大二叉树 可以用下面的算法从 nums 递归地构建: 创建一个根节点&#xff0c;其值为 nums 中的最大值。递归地在最大值 左边 的 子数组前缀上 构建左子树。递归地在最大值 右边 的 子数组后缀上 构建右子树。 返回 nums …

《VitePress 简易速速上手小册》第7章 高级功能与动态内容(2024 最新版)

文章目录 7.1 动态路由与 API 集成7.1.1 基础知识点解析7.1.2 重点案例&#xff1a;技术博客7.1.3 拓展案例 1&#xff1a;电商网站7.1.4 拓展案例 2&#xff1a;事件管理网站 7.2 状态管理与 Vuex 使用7.2.1 基础知识点解析7.2.2 重点案例&#xff1a;用户认证系统7.2.3 拓展案…

IEEE802.11k协议介绍

IEEE802.11k协议简介 协议全称&#xff1a;无线局域网的无线电资源测量(Radio Resource Measurement of Wireless LANs)批准日期&#xff1a;2008年5月协议状态&#xff1a;并入802.11-2012协议别名&#xff1a;辅助漫游协议说明&#xff1a; 定义了接入点(AP)和终端(STA&…

机器人内部传感器阅读笔记及心得-位置传感器-旋转变压器、激光干涉式编码器

旋转变压器 旋转变压器是一种输出电压随转角变化的检测装置&#xff0c;是用来检测角位移的&#xff0c;其基本结构与交流绕线式异步电动机相似&#xff0c;由定子和转子组成。 旋转变压器的原理如图1所示&#xff0c;定子相当于变压器的一次侧&#xff0c;有两组在空间位置上…

【测试】----JMeter性能测试工具入门篇

定义&#xff08;主要测试的是接口&#xff09; JMeter是Apache组织使用Java开发的一款测试工具&#xff0c;可以对服务器&#xff0c;网络或者对象模拟巨大的负载情况&#xff1b;通过创建带有断言的脚本来验证程序是否能返回期望的结果 优缺点 优点 开源免费跨平台&#xff0…

普中51单片机(DS18B20温度传感器)

DS18B20温度传感器原理 内部结构 64位(激)光刻只读存储器 光刻ROM中的64位序列号是出厂前被光刻好的&#xff0c;它可以看作是该DS18B20的地址序列号。64位光刻ROM的排列是&#xff1a;开始8位&#xff08;28H&#xff09;是产品类型标号&#xff0c;接着的48位是该DS18B20自身…

K8S部署Java项目 pod的logs报错为:Error: Unable to access jarfile app.jar

天行健&#xff0c;君子以自强不息&#xff1b;地势坤&#xff0c;君子以厚德载物。 每个人都有惰性&#xff0c;但不断学习是好好生活的根本&#xff0c;共勉&#xff01; 文章均为学习整理笔记&#xff0c;分享记录为主&#xff0c;如有错误请指正&#xff0c;共同学习进步。…

Vue报错,xxx is defined #变量未定义

vue.js:5129 [Vue warn]: Error in v-on handler: "ReferenceError: count is not defined" 浏览器将这个变量 当做全局变量了&#xff0c;事实上它只是实例中的变量 加上this指定&#xff0c;是vue实例中的变量

Sora的第一波受害者出现了。

不知道大家最近除了被Sora刷屏之外&#xff0c;有没有被这张图刷屏 我只能说网友太强大了 说实话&#xff0c;我进入舟老师的直播间&#xff0c;每次都是还有3分钟下播&#xff0c;还有6单就拍完 但是10分钟后还在激情逼单&#xff0c;6单之后还有6单 也许在营销学上&#x…