cf(1034)Div3(补题A B C D E F)

哈,这个比赛在开了不久之后,不知道为啥卡了差不多20来分钟,后面卡着卡着就想睡觉了。实在是太困了....

题目意思:

Alice做一次操作,删除任意数字a,而Bob做一次操作删除b使得a+b对4取余是3。

获胜条件,有人不能再进行操作,则另一个人获胜。

思路:

A题嘛,直接胆大心细,观察样例给的数据,得出,仅当给出的数是4的倍数的时候Bob获胜。

其他情况下嘛,Alice获胜。

#include<bits/stdc++.h>
using namespace std;
int main(){int n;cin>>n;//质数while(n--){int x;cin>>x;if(x%4==0){cout<<"Bob"<<endl;}else{cout<<"Alice"<<endl;}}
}

 

题目意思:

给定一个数组,a[i]是i选手的战斗力,当剩余选手超过k名的时候:

随机选择两个选手,淘汰实力较低的那一个,如果实力一样的话,随便淘汰一个。

问是否存在一种操作方式,使得j选手可以成为剩下的那k个。

思路:

首先我们对k进行分析,k=1的时候直接特判,此时第j名选手只有最大才能宝珠。

当k>=2的时候,我们给出一个样例:

1 2 3 4 5 6

此时我们对上述数据进行若干次操作后发现,任意数据都能存活。

那么同理,如果有相同数据的话,也可以共存。

#include<bits/stdc++.h>
using namespace std;
inline void solve(){int n,j,k;cin>>n>>j>>k;vector<int>a(n+1);int mi=-1;for(int i=1;i<=n;i++){cin>>a[i];mi=max(a[i],mi);}if(k>=2){//两种情况cout<<"Yes"<<endl;return;}int ans=a[j];//此时要是整个数组里面最大的那一个if(ans==mi&&k==1){cout<<"Yes"<<endl;}else{cout<<"No"<<endl;}
}
int main(){int n;cin>>n;//质数while(n--){solve();}
}

 题目意思:

给定一个数组,可以做一次操作:

1.选择一个前缀a,并替换成最小值

2.选择一个后缀a,并替换成最大值

到最后数组里面只剩下最后一个数字,如果该数字对应第i个字符,则第i个字符为1,否则为0,

输出01字符串。

思路:

用两个数组,一个维护前缀最小值,一个维护后缀最大值,最后判断原数组是否与该两个数组中的任意一个相等即可。

其实他的原理就是根据题目的意思,维护前缀和后缀。

#include <bits/stdc++.h>
using namespace std;inline void solve() {int n;cin>>n;vector<int>a(n+1);vector<int>pre(n+1,8e18),suf(n+2);//pre维护的是前缀//suf维护的是后缀for(int i=1;i<=n;i++){cin>>a[i];pre[i]=min(pre[i-1],a[i]);}for(int i=n;i>=1;i--){suf[i]=max(suf[i+1],a[i]);}for(int i=1;i<=n;i++){cout<<(a[i]==pre[i]||a[i]==suf[i]?1:0);}cout<<endl;}int main() {int t;cin >> t;while (t--) {solve();}return 0;
}

 题目意思:

给定一个字符串和两个操作:

Alice操作一次,选择任意k个位置将其变成0

Bob操作一次,选择连续k个位置将其变成1

问,在有限的操作次数内,是否能将整个字符串都变成0。

思路:

我们先对

7 4

1011011

这个数据进行分析

此时Alice进行一次操作

0001000

后Bob在进行一次操作(有多个可能性)

1111000

0011110

0001111

此时我们发现在这种情况下,Alice必胜,必胜的条件在于k,k必须是要大于等于n/2+1,此时刚好整个数组被覆盖的时候中间有重叠的部分。

最后在特判一下第一次Alice就能把数组恢复原状的情况即可。

#include <bits/stdc++.h>
using namespace std;inline void solve() {int n,k;cin>>n>>k;string ac;cin>>ac;int answer=n/2+1;int sum=0;ac=' '+ac;for(int i=1;i<=n;i++){if(ac[i]=='1')sum++;}//一遍就能把数组恢复原状if(sum<=k){cout<<"Alice"<<endl;return;}if(k<answer){cout<<"Bob"<<endl;return;}cout<<"Alice"<<endl;return;
}int main() {int t;cin >> t;while (t--) {solve();}return 0;
}

题目意思:

 定义MEX为数组中没有出现的最小非负数,如

MEX([2, 2, 1]) = 0,因为0不在数组中。

计算从a数组中删除k个值之后,MEX可能值的数量。(0<=k<=n)

思路:

首先我们先肯定一个事情k=0,和k=n一定是固定的,一定是1。

其次我们在考虑k等于1的时候可以从k=0考虑,同理后推。

此时我们发现,当存在多个相同的数字的时候,相同数字的数量成为了我们要考虑的一个点,从这个切口出发,我们构造一个差分数组即可。

#include <bits/stdc++.h>
using namespace std;
void solve(){int n;cin >> n;vector<int> a(n), answer(n+1), suf(n+2);map<int, int> p;for(int i=0; i<n; i++){cin >> a[i];p[a[i]]++;//统计各个数字出现的次数}for(int i=0; i<=n; i++){suf[p[i]]++;//统计次数出现的次数,并且往后进行自减suf[n-i+1]--;//差分if(!p[i])//当前数组中没有这个数字的话,直接跳出break;}for(int k=0; k<=n; k++){answer[k] = (k ? answer[k-1] : 0) + suf[k];//和我们之前说的一样,后面的k受前者k的影响cout << answer[k] << (k != n ? ' ' : '\n');}
}int main(){int t;cin >> t;while(t--) solve();
}

题目意思:

我们定义一个好数组,对于所有的i>=2,gcd(i,pi)!=1。

构造一个这样的数组,并使得固定点最少。(固定点:当i=p[i])

思路:

其实样例已经给我们一些提示了,下标为2的数字,对应的是4,下标是4的数字对应的是2,而质数下的数字对应的是自己本身。(暂且我们只能从样例中看出这么些情况)

随后我们自己再枚举一些比较大的数据发现,质数i对应的可以是i*2,i*3,i*4....而i*2对应的可以是i*3,i*4...此时我们可以发现,这些数字(gcd=i)形成了一个环,每个数字只要对应的找到下一个数字即可满足gcd!=1的情况。

故:

我们只要先对质数进行预处理,再对每一个质数环进行赋值即可。

最后的最后,还有一个点就是如果从小素数开始遍历,小素数的倍数会覆盖更多的数(因为小素数的倍数更密集),导致后续大素数的倍数可能已经被分配到其他循环中。
如果从大素数开始遍历,大素数的倍数更稀疏,可以优先构建较大的循环,而小素数的倍数可以填充剩余的数。

从大的素数开始遍历可以使得固定点更小。

#include<bits/stdc++.h>
using namespace std;
#define int long long
vector<bool>cmp(1e5+3);
vector<int>zhi;
const int op=1e5+4;
void init(){// 埃拉托斯特尼筛法预计算素数for(int i=2;i*i<=op;i++){if(!cmp[i]){for(int j=i*i;j<=op;j+=i){cmp[j]=1;}}}for(int i=2;i<=op;i++)if(!cmp[i])zhi.push_back(i);
}
void solve(){int n;cin>>n;vector<int>answer(n+1);//cout<<*zhi.rbegin()<<endl;for(auto it=zhi.rbegin();it<zhi.rend();it++){//只能从后往前vector<int>c;for(int i=*it;i<=n;i+=*it){//在n这个范围内if(!answer[i]){c.push_back(i);}}for(int i=0;i<c.size();i++){answer[c[i]]=c[(i+1)%c.size()];}}/*for(int i=1;i<=n;i++){if(!answer[i]){answer[i]=i;}}*/answer[1]=1;for(int i=1;i<=n;i++){cout<<answer[i]<<(i!=n?' ':'\n');}return;
}
signed main(){init();int n;cin>>n;while(n--)solve();
}

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

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

相关文章

浏览器与服务器的交互

浏览器地址栏输入URL&#xff08;网址​​&#xff09; ​​​​(1) 服务器进行URL解析​​&#xff1a;验证URL格式&#xff0c;提取协议、域名等 ​​​​(2) 服务器进行DNS查询​​&#xff1a;将域名转换为IP地址&#xff08;可能涉及缓存或DNS预取&#xff09; ​​​​…

Spring Boot中POST请求参数校验的实战指南

在现代的Web开发中&#xff0c;数据校验是确保应用程序稳定性和安全性的关键环节。Spring Boot提供了强大而灵活的校验机制&#xff0c;能够帮助开发者轻松地对POST请求参数进行校验。本文将详细介绍如何在Spring Boot中实现POST请求参数的校验&#xff0c;并通过具体的代码示例…

Spring Boot + MyBatis/MyBatis Plus:XML中循环处理List参数的终极指南

重要提醒&#xff1a;使用Param注解时&#xff0c;务必导入正确的包&#xff01; import org.apache.ibatis.annotations.Param; 很多开发者容易错误导入Spring的Param&#xff0c;导致参数绑定失败&#xff01; 一、为什么需要传递List参数&#xff1f; 最常见的场景是动态构…

Design Compiler:自适应重定时(Adaptive Retiming)

相关阅读 Design Compilerhttps://blog.csdn.net/weixin_45791458/category_12738116.html?spm1001.2014.3001.5482 简介 重定时是DC Ultra引入的一种时序优化技术&#xff0c;可以将时序单元&#xff08;触发器和锁存器&#xff09;穿越组合逻辑前后移动&#xff0c;以优化设…

解决kali Linux在VMware中的全局缩放问题

在每次启动kali时&#xff0c;因为屏幕分辨率过高&#xff0c;系统整体特别小&#xff0c;该怎么操作调整合适呢 在搜索中搜索kali HiDPI Mode 选择yes 然后就会自动调整合适了

Python关键字梳理

在 Python 中&#xff0c;关键字&#xff08;Keywords&#xff09;是具有特殊含义的保留字&#xff0c;它们用于定义语法和结构。async 是 Python 3.5 引入的关键字&#xff0c;用于支持异步编程&#xff08;Asynchronous Programming&#xff09;。下面我将详细讲解 async 及其…

结构体实战:用Rust编写矩形面积计算器

文章目录结构体实战&#xff1a;用Rust编写矩形面积计算器&#x1f4d0; 问题描述1️⃣ 基础版&#xff1a;独立变量&#xff08;混乱版&#xff09;2️⃣ 进阶版&#xff1a;使用元组3️⃣ 终极版&#xff1a;使用结构体&#xff08;优雅版&#xff09;&#x1f3af; 运行结果…

基于开源链动2+1模式AI智能名片S2B2C商城小程序的场景零售创新研究

摘要&#xff1a;本文聚焦场景消费逻辑&#xff0c;探讨开源链动21模式AI智能名片S2B2C商城小程序在场景零售中的应用。通过分析场景消费中消费者体验的关键作用&#xff0c;结合该技术组合的特性&#xff0c;阐述其如何优化场景内容、增强场景美感&#xff0c;为消费者创造超乎…

新发布:26考研院校和专业大纲

复习方向错了&#xff0c;努力可能白费 近日&#xff0c;多所高校陆续发布2026年硕士研究生招生考试自命题科目大纲&#xff0c;为备考的学子们指明了复习方向。今年的考纲有哪些重要变化&#xff1f;又该如何应对&#xff1f;本文为你全面梳理&#xff01; 院校和专业发布详情…

matlab/Simulink-全套50个汽车性能建模与仿真源码模型9

50个simulink模型&#xff08;所有模型罗列如下&#xff0c;没罗列就是没有&#xff0c;包含子模块总共50个。&#xff09; 基于汽车驱动力-行驶阻力平衡图的汽车动力性仿真模型 基于汽车动力特性图的汽车动力性仿真模型 基于汽车功率平衡图的汽车动力性仿真模型 电动汽车动力…

为什么星敏感器(Star Tracker)需要时间同步?—— 从原理到应用的全解析

为什么星敏感器&#xff08;Star Tracker&#xff09;需要时间同步&#xff1f;—— 从原理到应用的全解析 引言 在卫星姿态控制系统中&#xff0c;星敏感器&#xff08;Star Tracker, 简称“星敏”&#xff09; 是最精确的姿态测量设备之一&#xff0c;其精度可达角秒级&…

【Cocos TypeScript 零基础 24.1】

目录 首次实战开发心得实战项目<修仙录游戏> 首次实战开发心得 遇到的技术问题也多 发表问题也不少 收入问题 本人都将会写篇专栏总结一下 实战项目<修仙录游戏> 上图是已上线的实战项目二维码 耗费的时间太久了 下次将跟新开发遇到的各种奇奇怪怪的问题 各位看…

Linux关机指令详解:shutdown命令的使用指南

掌握shutdown命令的正确使用对于Linux系统管理员至关重要&#xff0c;它不仅能确保系统安全关闭&#xff0c;还能避免数据丢失和用户工作中断。 目录 一、基本语法 二、常用选项 三、使用示例 立即关机 10分钟后关机 指定时间关机&#xff08;如23:00&#xff09; 重启系…

青少年编程与数学 02-022 专业应用软件简介 08 电子设计自动化软件

青少年编程与数学 02-022 专业应用软件简介 08 电子设计自动化软件一、什么是EDA软件&#xff08;一&#xff09;定义与起源&#xff08;二&#xff09;功能与分类&#xff08;三&#xff09;技术发展趋势二、EDA软件在当前国际竞争中的重要性&#xff08;一&#xff09;技术壁…

TypeScript系列:第六篇 - 编写高质量的TS类型

掌握这些&#xff0c;ts类型声明事半功倍 &#x1f4aa;&#x1f3fb; 不要做 永远不要使用类型 Number、String、Boolean、Symbol 或 Object 这些类型指的是非原始装箱对象&#xff0c;使用 number、string、boolean 和 symbol 类型不要使用 any 作为类型&#xff0c;除非正在…

逐步构建高性能http服务器及聊天室服务器

目录 如何拿到浏览器发来的http请求 如何给浏览器发送响应 响应基本原理 给浏览器发送一个网页作为响应 给浏览器发送一个图片作为响应 接下来我们要做什么 完善业务逻辑 浏览器如何访问特定文件 访问根目录下的文件 访问子文件夹下的文件 习惯性目录结构 GET请求带…

水下航行器外形分类详解

在水下航行器的设计领域&#xff0c;外形是影响其性能和功能的关键因素之一。根据不同的设计目的和应用场景&#xff0c;水下航行器的外形可以按照多种方式进行分类。 本文将详细介绍几种常见的分类方式及其对应的外形特点。 按流体动力布局分类 标准回转体 外形标准回转体外…

Ubuntu:Mysql服务器

mariadb与mysql完全兼容&#xff0c;使用时感受不到差别 目录 1 mariadb的安装2 启动mysql3 关闭防火墙4 连接到mysql5 Mysql的配置文件6 Mysql远程访问 1 mariadb的安装 apt install mariadb-server检查安装 ls /etc/init.d2 启动mysql service mysql restart3 关闭防火墙…

使用systemd 监控服务并实现故障自动重启

一、为什么需要自动重启&#xff1f; 在生产环境中&#xff0c;服务可能因内存溢出、资源竞争、外部依赖中断等问题意外崩溃。手动恢复效率低下&#xff0c;而 systemd 的自动重启机制可在秒级内恢复服务&#xff0c;显著提升系统可用性。 ⚙️ 二、systemd 自动重启的核心配置…

在 React 中使用 WebSockets 构建实时聊天应用程序

实时通信已成为现代 Web 应用程序&#xff08;尤其是在聊天应用程序中&#xff09;不可或缺的功能。实时通信提供了一种强大的方法来实现客户端和服务器之间的实时双向通信。在本指南中&#xff0c;我们将逐步讲解如何使用React WebSockets构建实时聊天应用程序。 先决条件 在…