牛客周赛 Round 58(ABCDF)

目录

A.会赢吗?

B.能做到的吧 

 C.会赢的!

D.好好好数

F.随机化游戏时间


A.会赢吗?

思路: 签到题,比大小

void solve()
{double a,b;cin>>a>>b;if(a>=b) cout<<"NO";else cout<<"YES";
}

B.能做到的吧 

思路:只要能变大就行,那么我们就将字符串从大到小排序,如果最大字符串与原字符串相等,则不能变大了,输出NO,反之输出YES

void solve()
{int t;cin>>t;while(t--){string s;cin>>s;string temp=s;sort(s.rbegin(),s.rend());if(s==temp) pnelse py}
}

 C.会赢的!

思路:思维+贪心,我们可以分以下几种情况讨论

(1)x<0||y<0,起始点为(0,0),每次只能向下或向右走,所以当终点在上方或左边时,两个人不可能到达,即结果一定为平局

(2)(x+y)%2==0,说明到达终点的最短步数为偶数步,而先手只能在奇数步移动棋子,所以到达终点的最后一步一定是后手,那先手现在只能尽可能让局面走向平局,那如何走呢?我们会发现平局的时候是终点在棋子上方或左边的时候,也就是棋子的横坐标>x或 棋子的纵坐标>y,那先手就要选择x,y中更小的那个方向走了,因为这样才能尽快的走向平局,如果先手超过了x,y中最小的那个值mind,若此时为mind+1<maxd,表明后手还没到达终点,且已经被先手移动到终点右边或下面了,输出PING,否则先手输

(3)(x+y)%2==1,与(2)同理,后手尽可能让局面走向平局,如果mind+1==maxd,由于先手先下,所以每次先手下棋的时候都是领先后手一步棋,设x为mind,y为maxd,当后手下在(mind,mind)位置时,先手接着就会下在(mind,mind+1)位置,所以后手走到mind+1==maxd时,先手已经走到了(mind,maxd)的位置,即先手赢,否则PING

void solve()
{int t;cin>>t;while(t--){int x,y;cin>>x>>y;int sum=x+y;if(x<0||y<0) cout<<"PING"<<endl;else {if(sum==1){pycontinue;}int maxd=max(x,y),mind=min(x,y);if(sum&1){int s=mind+1;if(s==maxd) pyelse if(s<maxd) cout<<"PING"<<endl;}else{int s=mind+1;if(x==y) pnelse if(s<maxd) cout<<"PING"<<endl;}}}
}

D.好好好数

思路: 因为k的好数为若干个不同的k的整数次幂之和的数字,也就是好数对应的k进制位只有0和1,如果一个数至少由两个好数组成,说明这两个好数中有重复的幂次,那么在转换成k进制时会累加重复的那个k进制位,比如12    3,12=9+3=(3^2)+3^1=(110)3,因为(110)中最大的数为1,说明只需一个好数,15=12+3=(110)3+(010)3=(120)3,最大为2,由两个好数组成。

void solve()
{int t;cin>>t;while(t--){int n,k;scanf("%lld %lld",&n,&k);if(k==1){printf("1\n");continue;}int maxd=0;while(n){maxd=max(maxd,n%k);n/=k;}printf("%lld\n",maxd);}}

F.随机化游戏时间

思路 :主席树的板子忘了,又把板子掏出来看了一眼🤣,一个区间中含有k个小于等于这个幸运数的数字,说明这个幸运数>=这个区间第k小的数,查询的时候还要分情况讨论下

(1)k==0,说明[l,r]这个区间的数都大于幸运数字,那么幸运数字的所在范围的右区间应<=[l,r]第1小的数字-1

(2)k==r-l+1,说明这个幸运数字大于等于这个区间的所有数字,幸运数字所在范围的左区间>=这个区间第k小的数字

(3)0<k<r-l+1,幸运数字左右区间都要更新。

constexpr int N=2e5+5,mod=1e9+7;int a[N],n,m,root[N],idx;
vector<int> num;struct node{int l,r,cnt;
}tr[N*20];int find(int x)
{return lower_bound(num.begin(),num.end(),x)-num.begin();
}int build(int l,int r)
{int p=++idx;if(l<r){int mid=(l+r)>>1;tr[p].l=build(l,mid);tr[p].r=build(mid+1,r);}tr[p].cnt=0;return p;
}int modify(int pre,int l,int r,int x)
{int p=++idx;tr[p]=tr[pre];tr[p].cnt++;if(l==r) return p;int mid=(l+r)>>1;if(x<=mid) tr[p].l=modify(tr[pre].l,l,mid,x);else tr[p].r=modify(tr[pre].r,mid+1,r,x);return p;
}int query(int p,int q,int l,int r,int k)
{if(l==r) return l;int sum=tr[tr[q].l].cnt-tr[tr[p].l].cnt;int mid=(l+r)>>1;if(k<=sum) return query(tr[p].l,tr[q].l,l,mid,k);else return query(tr[p].r,tr[q].r,mid+1,r,k-sum);
}int qmi(int a,int b)
{int res=1;while(b){if(b&1) res=res*a%mod;b>>=1;a=a*a%mod;}return res;
}void solve()
{idx=0;num.clear();mem(root,0)cin>>n>>m;for(int i=1;i<=n;i++) {cin>>a[i];num.pb(a[i]);}sort(num.begin(),num.end());num.erase(unique(num.begin(),num.end()),num.end());int Max=num.size()-1;int L=1,R=n;root[0]=build(0,Max);for(int i=1;i<=n;i++)root[i]=modify(root[i-1],0,Max,find(a[i]));while(m--){int l,r,k;cin>>l>>r>>k;if(!k){int q=num[query(root[l-1],root[r],0,Max,1)];R=min(R,q-1);}else if(k==r-l+1){int q=num[query(root[l-1],root[r],0,Max,k)];L=max(L,q);}else{int q=num[query(root[l-1],root[r],0,Max,k)];L=max(L,q);q=num[query(root[l-1],root[r],0,Max,k+1)];R=min(R,q-1);}}if(L==R) cout<<1<<' '<<L<<endl;else cout<<qmi(R-L+1,mod-2)<<endl;
}int32_t main()
{//__md//init();int t;cin>>t;//t=1;while(t--){solve();}}

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

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

相关文章

ByteTrack多目标跟踪(一)—理论基础

ByteTrack多目标跟踪 算法概述 github: https://github.com/ifzhang/ByteTrack ByteTrack是一种基于Tracking-by-Detection范式的多目标跟踪算法。 先前的多目标追踪算法一般在完成当前帧的目标检测后只会保留置信度比较大的检测框用于进行目标跟踪&#xff0c;比如图中置信度…

思维导图在线制作怎么制作?5个软件教你快速进行思维导图制作

思维导图在线制作怎么制作&#xff1f;5个软件教你快速进行思维导图制作 思维导图是一种用于组织信息、梳理思路和激发创意的可视化工具。在线制作思维导图可以帮助你随时随地进行创作和分享&#xff0c;以下是五款在线思维导图工具&#xff0c;可以帮助你快速进行思维导图的制…

828华为云征文|基于华为云Flexus云服务器X搭建FTP服务器

❀目录 ❀概述❀特点❀环境准备❀安装❀配置文件修改❀创建目录、修改权限❀控制台安全组开启21端口❀工具验证❀总结 ❀概述 FTP文件传输协议是一种在网络中进行文件传输的广泛使用的标准协议。作为网络通信中的基础工具&#xff0c;FTP允许用户通过客户端软件与服务器进行交…

Java技术栈 —— Spark入门(二)之实时WordCount

Java技术栈 —— Spark入门&#xff08;二&#xff09; 一、kafka1.1 创建topic1.2 准备input与查看output 二、spark2.1 spark下的程序文件2.2 用spark-submit提交作业 参考文章&#xff1a; 参考文章或视频链接[1] 《Kafka Spark Stream实时WordCount》 实验环境&#xff…

【AQS源码】深入理解AQS的工作原理

【AQS源码】深入理解AQS的工作原理-CSDN博客

从零开始掌握容器技术:Docker的奇妙世界

容器技术在当今的云计算和软件开发领域中扮演着越来越重要的角色。如果你是一名计算机专业的学生或从事IT行业的从业者&#xff0c;可能已经听说过Docker这个词。它在软件开发、部署、运维等环节中大放异彩&#xff0c;但对于刚接触这个概念的朋友来说&#xff0c;可能还是有些…

JMeter在Mac下的安装使用

前言 开发过程中需要对系统进行性能测试&#xff0c;可以选用jemter对接口进行压测&#xff0c;jemter优点如下&#xff1a; 开源许可证&#xff1a;Jmeter完全免费&#xff0c;允许开发者使用源代码进行开发 友好的 GUI&#xff1a;Jmeter 非常易于使用&#xff0c;不需要花…

flume 使用 exec 采集容器日志,转储磁盘

flume 使用 exec 采集容器日志&#xff0c;转储磁盘 在该场景下&#xff0c;docker 服务为superset&#xff0c;flume 的sources 选择 exec &#xff0c; sinks选择 file roll 。 任务配置 具体配置文件如下&#xff1a; #simple.conf: A single-node Flume configuration#…

推荐4个一键生成 PPT的AI工具,让你畅享智能办公!

对于职场人士来说&#xff0c;ai PPT 工具已经成为了高效办公的一大得力助手 。它可以让你从繁琐的 PPT 制作中解脱出来&#xff0c;把更多的时间放在其他的工作准备上面。并且它们有极大的设计能力&#xff0c;会让我们的PPT变的设计感十足&#xff0c;如果大家正在为PPT制作烦…

js逆向——RSA实战案例讲解

受害者网站&#xff1a;http://www.15yunmall.com/pc/login/index 检查超时&#xff0c;这个我们不管他 直接分析参数&#xff0c;有2处加密位置&#xff0c;分别为password和csrftoken 只要是能够跟栈的&#xff0c;一律先在send的位置下断 很快就跟栈找到加密数据的位置 R…

《JavaEE进阶》----4.<SpringMVC①简介、基本操作(各种postman请求)>

本篇博客讲解 MVC思想、及Spring MVC&#xff08;是对MVC思想的一种实现&#xff09;。 Spring MVC的基本操作、学习了六个注解 RestController注解 RequestMappering注解 RequestParam注解 RequestBody注解 PathVariable注解 RequestPart注解 MVC View(视图) 指在应⽤程序中…

我用 GPT 学占星

最近对占星赶兴趣&#xff0c;但是看到星盘中好多名词&#xff0c;不懂是什么意思&#xff1f;所以直接问 gpt &#xff0c; 发现回答的真的很棒&#x1f389; &#xff01; 假如我想知道各个状态的具体是根据什么数据来显示的&#xff1f; 分分钟解决了我的问题&#xff1b; 我…

docker Desktop报错 error pulling image configuration 处理

问题描述 在 docker 拉数据 出现以下错误 error pulling image configurarion&#xff1a; 这个问题 主要是 可能应该某些原因不能网络无法连上镜像 原因分析&#xff1a; 1。 2024年 5月以后 国内很多IP都 。。。懂的都懂&#xff0c;很多 VPN 也是。。。 懂的都懂&#x…

7种常见排序

1 直接插入排序 把待排序的记录按其关键码值的大小逐个插入到一个已经排好序的有序序列中&#xff0c;直到所有的记录插入完为 止&#xff0c;得到一个新的有序序列 。 void InsertSort(int* a, int n) {for (int i 0; i < n - 1; i){//划分区间【0&#xff0c;end】int en…

Ubuntu 24.04 安装 英特尔工具包 Intel® Toolkits

目录 1.采用用户界面 GUI 安装英特尔基本工具包 Intel oneAPI Base Toolkit 1.1 下载离线英特尔基本工具包 1.2 安装英特尔基本工具包 1.3 英特尔基本工具包 Intel oneAPI Base Toolkit 环境设置 2.安装英特尔高性能计算工具包 Intel HPC Toolkit 2.1 下载离线英特尔高性…

模型从 HuggingFace 转存到 ModelScope

由于 HuggingFace 网络访问比较慢&#xff0c;国内通常会使用魔搭下载模型&#xff0c;如果魔搭上还没有&#xff0c;需要从 HuggingFace 准存一下&#xff0c;本文将通过 Colab AliyunPan 的方式下载模型并进行转存。 登录Colab 并运行一下命令 安装依赖包&#xff0c;Hugg…

最新项目管理软件排行榜,90%大厂项目经理都在用!

本文是主流的热门项目管理软件排行榜&#xff0c;助力企业选型&#xff01; 项目管理软件排行榜就如同企业管理的指南针&#xff0c;能为企业在众多项目管理工具中找到最适合的那一款。 对于企业来说&#xff0c;如果没有好用的项目管理软件&#xff0c;就像航海者失去了罗盘&…

Python 数据分析笔记— Numpy 基本操作(上)

文章目录 学习内容&#xff1a;一、什么是数组、矩阵二、创建与访问数组三、矩阵基本操作 学习内容&#xff1a; 一、什么是数组、矩阵 数组&#xff08;Array&#xff09;&#xff1a;是有序的元素序列&#xff0c;可以是一维、二维、多维。 array1 [1,2,3] 或[a, b, c, d…

智能工厂监控升级:Sovit2D大屏展示和ARM计算机的完美搭档

在当今科技飞速发展的时代&#xff0c;智能工厂和环境监测领域对于高效、精准的监控系统的需求日益增长。Sovit2D 组态软件与 ARM 工业计算机的结合&#xff0c;为这些领域带来了全新的解决方案。 走进智能工厂的监控室&#xff0c;一台台 ARM 工业计算机正稳定地运行着 Sovit2…

Echarts可视化

echarts是一个基于javascripts的开源可视化图表库 画图步骤&#xff1a; 1.引入echarts.js文件 <script src" https://cdn.jsdelivr.net/npm/echarts5.5.1/dist/echarts.min.js"></script> 也可将文件下载到本地通过src引入。 2. 准备一个呈现图表的…