牛客周赛 Round 70 A-E

本期封面原图 画师村カルキ

牛客周赛 Round 70 五题

A - 小苯晨跑

思路

没啥好说的

代码

//
// Created by Swan416 on 2024-12-01 18:57.
//
#include <bits/stdc++.h>
#define maxOf(a) *max_element(a.begin(),a.end())
#define minOf(a) *min_element(a.begin(),a.end())
#define all(a) a.begin(),a.end()
using namespace std;
typedef long long ll;
typedef double db;
typedef pair<int,int> pii;
typedef pair<ll,ll> pll;
void solve()
{int a,b,c,d;scanf("%d%d%d%d",&a,&b,&c,&d);if(a==b and b==c and c==d)printf("NO\n");elseprintf("YES\n");
}int main()
{int T=1;scanf("%d",&T);while(T--){solve();}return 0;
}

B - 小苯过马路

思路

没啥好说的,题面有点歧义的,总之小苯遵守交规就意味着现在绿灯剩下的事件小于他过马路的时间他也不会走

代码

//
// Created by Swan416 on 2024-12-01 19:01.
//
#include <bits/stdc++.h>
#define maxOf(a) *max_element(a.begin(),a.end())
#define minOf(a) *min_element(a.begin(),a.end())
#define all(a) a.begin(),a.end()
using namespace std;
typedef long long ll;
typedef double db;
typedef pair<int,int> pii;
typedef pair<ll,ll> pll;
void solve()
{int x,y,k,t;char G;cin>>x>>y>>k>>t>>G;if(G=='G'){if(k>=t)printf("%d\n", t);elseprintf("%d\n",t+k+x);}else{printf("%d\n",t+k);}
}int main()
{int T=1;//scanf("%d",&T);while(T--){solve();}return 0;
}

C - 小苯的字符串染色

思路

不需要最小化操作次数,最多操作n次,1也是奇数,所以我们就把黑的一个一个改就行了

代码

//
// Created by Swan416 on 2024-12-01 19:05.
//
#include <bits/stdc++.h>
#define maxOf(a) *max_element(a.begin(),a.end())
#define minOf(a) *min_element(a.begin(),a.end())
#define all(a) a.begin(),a.end()
using namespace std;
typedef long long ll;
typedef double db;
typedef pair<int,int> pii;
typedef pair<ll,ll> pll;
void solve()
{int n;scanf("%d",&n);string s;cin>>s;int onw_cnt=0;for(int i=0;i<n;i++){if(s[i]=='1'){onw_cnt++;}}printf("%d\n",onw_cnt);for(int i=0;i<n;i++){if(s[i]=='1'){printf("%d %d\n",i+1,i+1);}}
}int main()
{int T=1;scanf("%d",&T);while(T--){solve();}return 0;
}

D - 小苯的能量项链

思路

遍历左边丢掉几个,那么右边最多丢掉几个也就知道了,在可能出现的所有最右端点里面取最大的,我用的线段树但是应该维护一个后缀最大值就够了

代码

#include <bits/stdc++.h>
#define maxOf(a) *max_element(a.begin(),a.end())
#define minOf(a) *min_element(a.begin(),a.end())
#define all(a) a.begin(),a.end()
using namespace std;
typedef long long ll;
typedef double db;
typedef pair<int,int> pii;
typedef pair<ll,ll> pll;
int tree[2000044],arr[500010],ans;
void build_tree(int node,int start,int ends)
{if(start==ends){tree[node]=arr[start];}else{int mid=(start+ends)/2;int left_node=2*node;int right_node=2*node+1;build_tree(left_node,start,mid);build_tree(right_node,mid+1,ends);tree[node]=max(tree[left_node],tree[right_node]);}
}
void query(int node,int start,int ends,int L,int R)
{if(L<=start&&R>=ends){ans=max(ans,tree[node]);//ans来记录最大值}else{int mid=(start+ends)/2;int left_node=2*node;int right_node=2*node+1;if(L<=mid){//查询区间又涉足到左子树的,就查询一下左儿子query(left_node,start,mid,L,R);}if(R>mid){//只有区间又涉足到右侧的,就需要查询一下右儿子query(right_node,mid+1,ends,L,R);}}
}void solve()
{int n,k;scanf("%d%d",&n,&k);for(int i=1;i<=n;i++){scanf("%d",&arr[i]);}
//    if(n==1)
//    {
//        printf("%d\n",arr[1]);
//        return;
//    }
//    else if(n==2)
//    {
//        printf("%d\n",arr[1]+arr[2]);
//        return;
//    }build_tree(1,1,n);//遍历左边删几个ll ret=0;for(int i=0;i<=min(n,k);i++){int right=k-i;ll cur=arr[i+1];ans=0;int l=max(i+2,n-right);if(l<=n)query(1,1,n,l,n);cur+=ans;ret=max(cur,ret);}printf("%lld\n",ret);
}int main()
{int T=1;scanf("%d",&T);while(T--){solve();}return 0;
}

E - 小苯的最短路

思路

用dijkstra写一个打表,打表代码

#include <bits/stdc++.h>
#define maxOf(a) *max_element(a.begin(),a.end())
#define minOf(a) *min_element(a.begin(),a.end())
#define all(a) a.begin(),a.end()
using namespace std;
typedef long long ll;
typedef double db;
typedef pair<int,int> pii;
typedef pair<ll,ll> pll;
const int N=100;
vector<pii> G[N];
int n;
bool bl[N];
ll dis[N];
void dijkstra()
{memset(bl,0,sizeof(bl));memset(dis,0x3f,sizeof(dis));priority_queue<pii,vector<pii>,greater<pii>> q;q.push({0,1});dis[1]=0;while(!q.empty()){
//        printf("%d %d\n",q.top().first,q.top().second);//debugint u=q.top().second;q.pop();if(bl[u]){continue;}bl[u]=true;for(auto [v,w]:G[u]){if(dis[v]>dis[u]+w){dis[v]=dis[u]+w;q.push({dis[v],v});}}}
}void solve()
{printf("%d -> ",n);for(int i=1;i<=n;i++){G[i].clear();}
//    printf("building graph:\n");for(int i=1;i<=n;i++){for(int j=1;j<=n;j++){if(i!=j)G[i].push_back({j,i^j});
//            printf("%d ",i^j);}
//        printf("\n");}
//    printf("dijkstra:\n");dijkstra();ll ans=0;for(int i=1;i<=n;i++){
//        printf("%lld ",dis[i]);if(i==1)ans=dis[i];elseans^=dis[i];}printf("%lld\n",ans);
}int main()
{for(n=1;n<=99;n++){solve();}return 0;
}

输出的结果是

1 -> 0
2 -> 3
3 -> 1
4 -> 4
5 -> 0
6 -> 7
7 -> 1
8 -> 8
9 -> 0
10 -> 11
11 -> 1
12 -> 12
13 -> 0
14 -> 15
15 -> 1
16 -> 16
17 -> 0
18 -> 19
19 -> 1
20 -> 20
21 -> 0
22 -> 23
23 -> 1
24 -> 24
25 -> 0
26 -> 27
27 -> 1
28 -> 28
29 -> 0
30 -> 31
31 -> 1
32 -> 32
33 -> 0
34 -> 35
35 -> 1
36 -> 36
37 -> 0
38 -> 39
39 -> 1
40 -> 40
41 -> 0
42 -> 43
43 -> 1
44 -> 44
45 -> 0
46 -> 47
47 -> 1
48 -> 48
49 -> 0
50 -> 51
51 -> 1
52 -> 52
53 -> 0
54 -> 55
55 -> 1
56 -> 56
57 -> 0
58 -> 59
59 -> 1
60 -> 60
61 -> 0
62 -> 63
63 -> 1
64 -> 64
65 -> 0
66 -> 67
67 -> 1
68 -> 68
69 -> 0
70 -> 71
71 -> 1
72 -> 72
73 -> 0
74 -> 75
75 -> 1
76 -> 76
77 -> 0
78 -> 79
79 -> 1
80 -> 80
81 -> 0
82 -> 83
83 -> 1
84 -> 84
85 -> 0
86 -> 87
87 -> 1
88 -> 88
89 -> 0
90 -> 91
91 -> 1
92 -> 92
93 -> 0
94 -> 95
95 -> 1
96 -> 96
97 -> 0
98 -> 99
99 -> 1

所以规律显然意见,每四个数是0,i+1,1,i,直接输出就行

代码

#include <bits/stdc++.h>
#define maxOf(a) *max_element(a.begin(),a.end())
#define minOf(a) *min_element(a.begin(),a.end())
#define all(a) a.begin(),a.end()
using namespace std;
typedef long long ll;
typedef double db;
typedef pair<int,int> pii;
typedef pair<ll,ll> pll;void solve()
{ll n;scanf("%lld",&n);if(n%4==0){printf("%lld\n",n);}else if(n%4==1){printf("0\n");}else if(n%4==2){printf("%lld\n",n+1);}else{printf("1\n");}
}int main()
{int T=1;scanf("%d",&T);while(T--){solve();}return 0;
}

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

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

相关文章

C++20: 像Python一样split字符串

概要 Python 的字符串天生支持 split( ) 操作&#xff0c;支持单个字符或字符串作为分隔符。 C 在这方面显得很笨拙&#xff0c;但是在 C20 下经过一番尝试&#xff0c;还是能够提供类似的简洁调用。 Python 代码 s 0,11,336,23,370nums s.split(,) for n in nums:print(n…

oracle数据库日常操作

1、执行SQL语句后不显示PL/SQL procedure successfully completed set feedback off; 2、显示实例名称 echo "set sqlprompt \"_user_connect_identifier> \"" >> $ORACLE_HOME/sqlplus/admin/glogin.sql 3、客户端尝试连接到服务器时发生超时 …

【Redis篇】Hash的认识以及相关命令操作

目录 前言 基本命令 HSET HGET HEXISTS HDEL HKEYS HVALS HGETALL HMGET HLEN HSETNX HINCRBY HINCRBYFLOAT 内部编码 高内聚&#xff0c;低耦合 前言 可以看出&#xff1a; Redis 的 Hash 是一个键&#xff08;key&#xff09;下包含多个字段&#xff08;field…

可解释机器学习 | Python实现LGBM-SHAP可解释机器学习

机器学习 | Python实现GBDT梯度提升树模型设计 目录 机器学习 | Python实现GBDT梯度提升树模型设计基本介绍模型使用参考资料基本介绍 LightGBM(Light Gradient Boosting Machine)是一种基于决策树的梯度提升框架,是一种高效的机器学习模型。SHAP(SHapley Additive exPlan…

<回文判断>

【问题描述】 回文是正读和倒读都一样的句子。读入一个最大长度不超过50个字符的句子&#xff0c;判断其是否是回文。 【输入形式】 输入一个最大长度不超过50个字符的句子 【输出形式】 Yes/No 【输入样例】 abcba 【输出样例】 Yes 【样例说明】 输入abcba&#xff0c;判…

VPP多架构处理器支持

对于转发层面的关键节点&#xff08;node&#xff09;&#xff0c;VPP针对处理器架构编译多份代码&#xff0c;在运行时检测处理器架构&#xff0c;动态确定使用的代码分支。VPP提供两种对多处理器架构的支持&#xff0c;除了节点函数外&#xff0c;还可指定任意函数支持多架构…

算法2--滑动窗口

滑动窗口 滑动窗口经典例题长度最小的子数组无重复字符的最长子串[最大连续1的个数 III](https://leetcode.cn/problems/max-consecutive-ones-iii/description/)[将 x 减到 0 的最小操作数](https://leetcode.cn/problems/minimum-operations-to-reduce-x-to-zero/description…

mysql--二进制安装编译安装yum安装

二进制安装 创建用户和组 [rootlocalhost ~]# groupadd -r -g 306 mysql [rootlocalhost ~]# useradd -r -g 306 -u 306 -d /data/mysql mysql 创建文件夹并添加所属文件用户和组 [rootlocalhost ~]# mkdir -p /data/mysql [rootlocalhost ~]# chown mysql:mysql /data/mysql …

大模型开发和微调工具Llama-Factory-->WebUI

WebUI LLaMA-Factory 支持通过 WebUI 零代码微调大模型。 通过如下指令进入 WebUI llamafactory-cli webui# 如果是国内&#xff0c; # USE_MODELSCOPE_HUB 设为 1&#xff0c;表示模型从 ModelScope 魔搭社区下载。 # 避免从 HuggingFace 下载模型导致网速不畅 USE_MODELSC…

【WPS】【EXCEL】将单元格中字符按照分隔符拆分按行填充到其他单元格

问题&#xff1a;实现如下图的效果 解答&#xff1a; 一、函数 IFERROR(TRIM(MID(SUBSTITUTE($A$2,",",REPT(" ",LEN($A$2))),(ROW(A1)-1)*LEN($A$2)1,LEN($A$2))),"") 二、在单元格C2中填写如下函数 三、全选要填充的单元格并且按CTRLD 函数…

Java有关数组的相关问题

Java中的栈和堆的含义 栈 存储局部变量&#xff1a;栈主要用于存储方法中的局部变量&#xff0c;包括基本数据类型&#xff08;int、double、boolean等&#xff09;和对象的引用&#xff08;不包含对象本身&#xff09;。 遵循后进先出原则&#xff1a;当一个方法被调用时&…

提升阅读体验,Balabolka让文字跃然“声”上

作为一个专业的语音合成工具&#xff0c;Balabolka为用户提供了全方位的文本朗读解决方案。这款软件不仅可以将各类文本实时转换为清晰的语音输出&#xff0c;还能将转换后的音频内容导出为多种主流格式。它强大的兼容性使其能够处理各类电子书和文档格式&#xff0c;让用户可以…

解决`-bash: ./configure:/bin/sh^M:解释器错误: 没有那个文件或目录`的问题

解决`-bash: ./configure:/bin/sh^M:解释器错误: 没有那个文件或目录`的问题 一、错误原因分析二、解决方法方法一:使用`dos2unix`工具方法二:使用`sed`命令方法三:使用`tr`命令方法四:在文本编辑器中转换方法五:在Windows系统中使用适当的工具三、预防措施四、总结在使…

第一部分:基础知识 1. 介绍 --[MySQL轻松入门教程]

什么是MySQL&#xff1f; MySQL 是一种广泛使用的关系型数据库管理系统&#xff08;RDBMS&#xff09;&#xff0c;它使用结构化查询语言&#xff08;SQL&#xff09;来管理数据。MySQL 由瑞典公司 MySQL AB 开发&#xff0c;现在归 Oracle Corporation 所有。MySQL 是开源软件…

Flink双流Join

在离线 Hive 中&#xff0c;我们经常会使用 Join 进行多表关联。那么在实时中我们应该如何实现两条流的 Join 呢&#xff1f;Flink DataStream API 为我们提供了3个算子来实现双流 join&#xff0c;分别是&#xff1a; join coGroup intervalJoin 下面我们分别详细看一下这…

C# 匿名类型和匿名方法

在C#中&#xff0c;匿名类型和匿名方法是两个非常有用的特性&#xff0c;它们可以帮助我们更方便地处理数据和简化代码的编写。 一、匿名类型 (Anonymous Types) 匿名类型允许你在不显式定义类的情况下创建对象。编译器会自动为你生成一个类&#xff0c;其属性由你在对象初始…

【真正离线安装】Adobe Flash Player 32.0.0.156 插件离线安装包下载(无需联网安装)

网上很多人声称并提供的flash离线安装包是需要联网才能安装成功的&#xff0c;其实就是在线安装包&#xff0c;而这里提供的是真正的离线安装包&#xff0c;无需联网即可安装成功。 点击下面地址下载离线安装包&#xff1a; Adobe Flash Player 32.0.0.156 for IE Adobe Fla…

《Vue 组件化开发:构建可复用的模块》

一、Vue 组件化开发概述 组件化是 Vue.js 的核心概念之一&#xff0c;它允许将界面拆分成独立、可复用的组件&#xff0c;使得开发大型应用变得更加简单和高效。 组件的定义是实现应用中局部功能代码和资源的集合。Vue.js 的组件化用于将 UI 页面分割为若干组件进行组合和嵌套…

Python生日祝福烟花

1. 实现效果 2. 素材加载 2个图片和3个音频 shoot_image pygame.image.load(shoot(已去底).jpg) # 加载拼接的发射图像 flower_image pygame.image.load(flower.jpg) # 加载拼接的烟花图 烟花不好去底 # 调整图像的像素为原图的1/2 因为图像相对于界面来说有些大 shoo…

26页PDF | 数据中台能力框架及评估体系解读(限免下载)

一、前言 这份报告详细解读了数据中台的发展历程、核心概念、能力框架及成熟度评估体系。它从阿里巴巴的“大中台&#xff0c;小前台”战略出发&#xff0c;探讨了数据中台如何通过整合企业内部的数据资源和能力&#xff0c;加速业务迭代、降低成本&#xff0c;并推动业务增长…