Codeforces Round 1028 (Div. 2)(ABC)

article/2025/8/4 5:33:24

A. Gellyfish and Tricolor Pansy

翻译:

        水母和小花在玩一个叫 “决斗 ”的游戏。

        水母有 a HP,花花有 b HP。

        它们各有一个骑士。水母的骑士有 c HP,而花花的骑士有 d HP。

        他们将进行一轮游戏,直到其中一方获胜。对于 k=1、2、... 的顺序,他们将执行以下操作:

  • 如果 k 为奇数,且水母的骑士活着:
    • 如果 b≤0 则水母获胜。或者,水母的骑士可以攻击花花的骑士并将 d
    •  如果 d≤0,花花的骑士死亡。
  • 如果 k 为偶数,且花花的骑士活着:
    • 如果a≤0,花花获胜。或者,花花的骑士可以攻击水母的骑士并将 c
    •  如果 c≤0 海蜇的骑士死亡。

        作为世界上最聪明的人之一,你想在比赛前告诉他们谁会赢。假设双方都以最佳状态下棋。

可以证明对局永远不会以和棋结束。也就是说,一方拥有在有限步数内结束对局的策略。

思路:

        只要将敌方的任意一人杀死,即可获胜。(模拟,贪心)

实现:

#include<bits/stdc++.h>
using namespace std;
using ll = long long;void solve(){ll a,b,c,d;cin>>a>>b>>c>>d;if (min(a,c)>=min(b,d)){cout<<"Gellyfish"<<endl;}else{cout<<"Flower"<<endl;}
}int main(){// 关闭输入输出流同步ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);// 不使用科学计数法// cout<<fixed;// 四舍五入中间填保留几位小数,不填默认// cout.precision();int t=1;cin>>t;while (t--) solve();return 0;
}



B. Gellyfish and Baby's Breath

翻译:

        Flower 给 Gellyfish 提供了 [0,1,...,n-1]的两个排列∗:p_0,p_1,...,p_{n-1}q_0,q_1,...,q_{n-1}

        现在,Gellyfish 希望通过以下方法计算一个数组 r_0,r_1,...,r_{n-1} 的计算方法如下:

  • 对于所有 i (0≤i≤n-1),r_imax^i_{j=0}(2^{p_j}+2^{q_{i-j}})

        但由于水母很懒,你必须帮她算出 r 的元素。

        由于 r 的元素非常大,你只需输出 r 的元素 modulo 998244353。

思路:

        2的i次从二进制数来看2^i+2^j与其他同类型的比较,一般由i,j中的较大部分即可。

        即我们在遍历r中,记录p,q最大值的下标,再通过比较两者及其对应的qp值大小,可得到最大值。(位运算)

实现:

#include<bits/stdc++.h>
using namespace std;
using ll = long long;
const ll MX = 1e6+10;
const ll mod = 998244353;
vector<ll> pow_2(MX,1);
void solve(){int n;cin>>n;vector<ll> a(n),b(n),ans(n);for (auto &i:a) cin>>i;for (auto &i:b) cin>>i;ll ind_a_max = 0,ind_b_max = 0;for (int i=0;i<n;i++){// updateif (a[i]>a[ind_a_max]) ind_a_max = i;if (b[i]>b[ind_b_max]) ind_b_max = i;if (a[ind_a_max]>b[ind_b_max] || (a[ind_a_max]==b[ind_b_max] && b[i-ind_a_max]>a[i-ind_b_max])){ans[i] = (pow_2[a[ind_a_max]]+pow_2[b[i-ind_a_max]])%mod;}else{ans[i] = (pow_2[a[i-ind_b_max]]+pow_2[b[ind_b_max]])%mod;}}for (int i=0;i<n;i++){cout<<ans[i]<<" \n"[i==n-1];}
}int main(){// 关闭输入输出流同步ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);// 不使用科学计数法// cout<<fixed;// 四舍五入中间填保留几位小数,不填默认// cout.precision();// initiationfor (int i=1;i<MX;i++){pow_2[i] = (pow_2[i-1]*2)%mod;}int t=1;cin>>t;while (t--) solve();return 0;
}



C. Gellyfish and Flaming Peony

翻译:

        水母讨厌数学问题,但她必须完成数学作业:

        给水母一个由 n 个正整数 a1、a2......、an 组成的数组。

        她需要进行以下两步运算,直到 a 的所有元素都相等为止的所有元素都相等:

  • 选择满足 1≤i,j≤n 和 i≠j 的两个索引 i、j。
  • 用 gcd(ai,aj) 代替 ai。

        现在,水母向你询问实现目标所需的最少运算次数。

        可以证明,水母总能实现她的目标。

思路:

        最后a数组的值每个都必定是gcd(\sum\limits^{n}_{i=1}ai)。那么先用最小的次数将一个值变为最终值(广度优先搜索),再通过这个值,与其他不同的值gcd,即可最快完成目标。(数学,bfs)

实现:

#include<bits/stdc++.h>
using namespace std;
using ll = long long;
const ll mod = 998244353;
void solve(){int n,mx=0;cin>>n;vector<int> a(n);for (int&i:a) cin>>i;int res = a[0];for (int& i:a) res = gcd(res,i),mx = max(mx,i);// bfs:查找最小得到res的集合vector<int> cnt(mx+1,-1);queue<array<int,2>> pq;for (int &i:a){pq.push({i,0});}while (!pq.empty()){auto[now,step] = pq.front();pq.pop();if (cnt[now]!=-1) continue;cnt[now] = step;if (now==res){break;}for (int &i:a){int new_gcd = gcd(i,now);if (cnt[new_gcd]==-1){pq.push({new_gcd,step+1});}}}int need = cnt[res],ans = 0;for (int &i:a) ans+=(res!=i);if (need>0) ans+=need-1;cout<<ans<<"\n;
}int main(){// 关闭输入输出流同步ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);// 不使用科学计数法// cout<<fixed;// 四舍五入中间填保留几位小数,不填默认// cout.precision();int t=1;cin>>t;while (t--) solve();return 0;
}

之后补题会在此增加题解。    

话说看我题解的有真人不?


http://www.hkcw.cn/article/gpvvMrXnab.shtml

相关文章

智能化程度越高,算法“越狱”也会越来越多

前两天&#xff0c;有关美国人工智能&#xff08;AI&#xff09;公司OpenAI旗下推理大模型o3首次出现“不听人类指挥&#xff0c;拒绝关闭”的消息引发高度关注。这种现象应该不算技术性“错误”&#xff0c;而是算法&#xff08;无意识性&#xff09;“失误”——“算法越狱”…

Redis最佳实践——性能优化技巧之Pipeline 批量操作

Redis Pipeline批量操作在电商应用中的性能优化技巧 一、Pipeline核心原理与性能优势 1. 工作机制对比&#xff1a; sequenceDiagramtitle 常规请求 vs Pipeline请求# 常规模式Client->>Redis: 命令1Redis-->>Client: 响应1Client->>Redis: 命令2Redis--&g…

机器人学基础——正运动学(理论推导及c++实现)

机器人正运动学 机器人正运动学一般是指从机器人的关节位置到基于参考坐标系下末端执行器的位置。 平移变换和旋转变换 平移变换 假设我们有两个坐标系A和B&#xff0c;坐标系A与B的方位相同&#xff0c;xyz轴的指向都是一致的&#xff0c;即没有旋转变换。有一点p&#xf…

玉渊谭天:中方香会行动的三个细节 现场观察与国际反响

在第22届香格里拉对话会上,观察到了几个细节,这些细节揭示了中方在这次对话会上的行动。在第一场全体会议上,国防大学的张弛教授提问美国国防部长如何处理美国联盟与东盟国家之间的关系。柬埔寨等东盟国家代表向张弛表示感谢,认为他的提问触及了关键问题,反映了东盟国家的…

Python-13(永久存储)

创建并打开文件 open(file,mode)函数 该函数用于打开一个文件并返回对应的文件对象。 file参数指定的是文件路径和文件名&#xff0c;如果没有添加路径&#xff0c;那么默认将文件创建在python的主文件夹里面。mode参数指定的是打开的模式&#xff0c;r表示读取&#xff08;…

linux驱动开发(1)-内核模块

内核模块 模块最大的好处是可以动态扩展应用程序的功能而无须重新编译链接生成新的应用程序镜像&#xff0c;在微软的Windows系统上动态链接库DLL&#xff08;Dynamic Link Library&#xff09;&#xff0c;Linux系统上的共享库so&#xff08;shared object&#xff09;文件的…

【ISP算法精粹】动手实战:用 Python 实现 Bayer 图像的黑电平校正

在数字成像领域&#xff0c;图像信号处理器&#xff08;ISP&#xff09;如同幕后英雄&#xff0c;默默将传感器捕获的原始数据转化为精美的图像。而黑电平校正&#xff0c;作为ISP预处理流程中的关键一环&#xff0c;直接影响着最终图像的质量。今天&#xff0c;我们就通过Pyth…

【数据结构】顺序表和链表详解(上)

前言&#xff1a;上期我们介绍了算法的复杂度&#xff0c;知道的算法的重要性同时也了解到了评判一个算法的好与坏就去看他的复杂度(主要看时间复杂度)&#xff0c;这一期我们就从顺序表和链表开始讲起。 文章目录 一&#xff0c;顺序表1&#xff0c;线性表2&#xff0c;顺序表…

【笔记】在 MSYS2(MINGW64)中安装 Python 工具链的记录

#工作记录 &#x1f4cc; 安装背景 操作系统&#xff1a;MSYS2 MINGW64当前时间&#xff1a;2025年6月1日Python 版本&#xff1a;3.12&#xff08;默认通过 pacman 安装&#xff09;目标工具链&#xff1a; pipxnumpypipsetuptoolswheel &#x1f6e0;️ 安装过程与结果记录…

sqli-labs靶场32-37关(宽字节注入)

目录 前言 less32&#xff08;宽字节注入&#xff09; less33&#xff08;宽字节注入&#xff09; less34&#xff08;POST型宽字节注入&#xff09; less35&#xff08;数字型闭合宽字节&#xff09; less36&#xff08;宽字节注入&#xff09; less37&#xff08;POST…

SRE 基础知识:在站点可靠性工程中可以期待什么

作者&#xff1a;来自 Elastic Elastic Observability Team 在过去的 20 年里&#xff0c;大多数领先企业已经采用云计算和分布式系统来开发它们的应用程序。一个意想不到的后果是&#xff1a;传统的 IT 运维&#xff08; IT operations - ITOps &#xff09;常常难以应对日益增…

day16 leetcode-hot100-31(链表10)

25. K 个一组翻转链表 - 力扣&#xff08;LeetCode&#xff09; 1.模拟法 思路 将这个过程拆解为两个步骤&#xff0c;第一步将单分组的节点反转&#xff0c;第二步将反转后的链表加入原链表。 针对节点反转很容易&#xff0c;参考之前的206. 反转链表 - 力扣&#xff08;Le…

黑马Java面试笔记之Redis篇(使用场景)

1.面试题 我看你做的项目中&#xff0c;都用到了redis&#xff0c;你在最近的项目中那些场景使用了redis呢 2.提问的底层逻辑 面试官提问你这个问题一是想验证你的项目场景的真实性&#xff0c;二是为了作为深入发问的切入点 3.延伸出来的知识点 3.1 缓存 缓存三兄弟&#x…

PyTorch -TensorBoard的使用 (一)

设置环境 新建python文件 .py 安装Tensorboard 在终端进行安装 显示安装成功 两个logs&#xff0c;出现这种情况怎么解决 所有的logs文件删掉delete&#xff0c;重新运行 add_image 不满足要求 Opencv-numpy 安装Opencv add_image 用法示例 &#xff08;500&#xff0c;375&am…

解决Ubuntu20.04上Qt串口通信 QSerialPort 打开失败的问题

运行Qt串口通信 open(QIODevice::ReadWrite) 时&#xff0c;总是失败。 1、打印失败原因 QString QSerialHelper::openSerail() {if(this->open(QIODevice::ReadWrite) true){return this->portName();}else{return "打开失败";//return this->errorStri…

[yolov11改进系列]基于yolov11引入迭代注意力特征融合iAFF的python源码+训练源码

【iAFF介绍】 1. IAFF&#xff08;迭代注意力特征融合&#xff09; iAFF通过引入多尺度通道注意力模块和迭代融合&#xff0c;更好的整合不同尺度和语义不一致的特征&#xff0c;有效解决特征融合问题&#xff0c;提高目标检测的精度。 特征融合&#xff0c;即不同层或分支的…

springboot-响应接收与ioc容器控制反转、Di依赖注入

1.想将服务器中的数据返回给客户端&#xff0c;需要在controller类上加注解&#xff1a;ResponseBody; 这个注解其实在前面已经使用过&#xff0c;RestController其实就包含两个注解&#xff1a; Controller ResponseBody 返回值如果是实体对象/集合&#xff0c;将会转换为j…

idea中springboot2.7(由于步入另一个线程,已跳过 xxx 处的断点)

idea springboot2.7 debug 问题 springboot 2.7 debug 模式时引入 spring-boot-devtools 卡在代码中不往下执行&#xff0c;提示&#xff1a;由于步入另一个线程&#xff0c;已跳过 xxx 处的断点。 原因 springboot 2.7 引入 spring-boot-devtools <!-- debug时不推荐开…

ROS应用之如何配置RTOS满足机器人系统中的实时要求

如何配置RTOS以满足机器人系统中的实时要求 前言 实时操作系统&#xff08;RTOS&#xff09;在机器人系统中的应用至关重要&#xff0c;尤其在需要对环境变化做出快速反应的高精度控制系统中。ROS2作为开源机器人操作系统&#xff0c;为机器人提供了强大的框架和工具链&#x…

03 APP 自动化-定位元素工具元素定位

文章目录 一、Appium常用元素定位工具1、U IAutomator View Android SDK 自带的定位工具2、Appium Desktop Inspector3、Weditor安装&#xff1a;Weditor工具的使用 4、uiautodev通过定位工具获取app页面元素有哪些属性 二、app 元素定位方法 一、Appium常用元素定位工具 1、U…