2023牛客暑期多校训练营2(D/E/F/H/I/K)
目录
D.The Game of Eating
E.Square
F.Link with Chess Game
H.0 and 1 in BIT
I.Link with Gomoku
K.Box
D.The Game of Eating
思路:倒着贪心。因为正着贪会导致一种局面:我选了当前喜爱值最大的菜,但是就算我不选这个菜,后面的人也可能选这一道菜,我依然能吃上这道菜,那么我为什么不选其它的菜而两者兼得呢?所以我们考虑倒着贪心。贪心到第i个人时,根据喜爱值从大到小遍历一遍菜,如果这个菜被后面的人选过了,那就不选了,直到有一个菜是没被选过的。
bool cmp(PII a,PII b) {return a.first>b.first;
}
void solve() {map<int,int>mp;int n,m,k;cin>>n>>m>>k;for(int i=1; i<=n; i++)v[i].clear();for(int i=1; i<=n; i++) {for(int j=1; j<=m; j++) {int x;cin>>x;v[i].push_back({x,j});}sort(v[i].begin(),v[i].end(),cmp);}for(int i=k; i>=1; i--) {int now=i%n,j=0;if(!now)now=n;while(mp[v[now][j].second])j++;mp[v[now][j].second]=true;}for(auto x:mp) {cout<<x.first<<" ";}cout<<endl;
}
E.Square
思路:题目的公式可以表示为,求Y使得:
Y^2-(Y^2)%(10^K) = X*(10^K)
可见只需枚举K的大小然后判断即可。
代码:
string cmp;
bool pd(int y) {string now=to_string(y*y);while(now.size()<cmp.size())now+='0';//防止runtime errorfor(int i=0; i<cmp.size(); i++) {if(cmp[i]!=now[i])return false;//有一位不相同就不合法答案}return true;
}
void solve() {int x;cin>>x;cmp=to_string(x);for(int k=0; k<=9; k++) {//枚举k的大小int now=pow(10,k)*x;int y=sqrt(now);if(pd(y)) {//判断这个y是否合法cout<<y<<endl;return;}if(pd(y+1)) {//因为y*y会减掉一部分余数,所以要判一下y+1cout<<y+1<<endl;return;}}cout<<-1<<endl;
}
F.Link with Chess Game
思路:若只有一个棋子,当棋子有距离边界为奇数长度的局面为先手必胜态,因为两个人必须在这个奇数区间里一直走,而先手可以一直选到所有位置选完。该情况可推广至三个棋子,三个棋子的距离端点距离可以抽象为所有棋子距离端点的距离之和,棋子可以在端点之和为奇数的区间内反复横跳,来保持自己的最终的奇偶性,从而导致先手必胜,反之先手必败。
代码:
void solve() {int n,a,b,c;cin>>n>>a>>b>>c;int sum1=(a-1)+(b-1)+(c-1);int sum2=(n-a)+(n-b)+(n-c);if(sum1%2||sum2%2)cout<<"Alice"<<endl;else cout<<"Bob\n";
}
H.0 and 1 in BIT
思路:操作A相当于将x变成反码,也就是在取模意义下,操作A会令x=-x-1,而操作B会x=x+1,所以我们先开两个前缀和数组,一个记录前缀A的个数,一个记录前缀的贡献,然后在每次操作中,若l~r的区间内的A的个数为奇数,则原本的贡献要乘上-1,如此模拟即可。
代码:
int sum1[maxn],sum2[maxn];
//sum1记录前缀A的个数,sum2记录前缀的贡献
void solve() {int n,q,l,r,L,R,ans=0;string s,x;cin>>n>>q>>s;for(int i=1; i<=n; i++) {sum1[i]=sum1[i-1]+(s[i-1]=='A');if(s[i-1]=='A')sum2[i]=-sum2[i-1]-1;else sum2[i]=sum2[i-1]+1;}while(q--) {int sum=0;cin>>l>>r>>x;L=min((ans^l)%n+1,(ans^r)%n+1),R=max((ans^l)%n+1,(ans^r)%n+1);int now1=(sum1[R]-sum1[L-1])%2,now2;for(int i=0; i<x.size(); i++) {sum=sum*2+(x[i]-'0');}//将x转换为10进制,方便与贡献进行运算if(now1) {//若区间A的个数为奇数,则贡献*-1now2=sum2[R]+sum2[L-1];sum=-sum;} else now2=sum2[R]-sum2[L-1];int mod=(1<<(int)x.size());ans=(now2+sum+mod)%mod;for(int i=(int)x.size()-1; i>=0; i--) {cout<<((ans>>i)&1);}cout<<endl;}
}
I.Link with Gomoku
思路:在前面的n-n%2行中,摆放方式和题目样例一样:
xxxxoxxxxoxxxxo......
ooooxooooxoooox......
最后一行若为奇数行,则这样摆放即可:
xoxoxoxoxo......
代码:
void solve() {int n,m;cin>>n>>m;for(int i=1; i<=n-n%2; i++) {int cnt=0;for(int j=1; j<=m; j++) {if(cnt%5==4) {//前4个放相同的 if(i%2)cout<<"o";//行与行之间连续4个xo交替放 else cout<<"x";} else {//最后一个放不同的 if(i%2)cout<<"x";else cout<<"o";}cnt++;}cout<<endl;}if(n%2) {//若最后一行为奇数行则xoxox......交替放 for(int i=1; i<=m; i++) {if(i%2)cout<<"x";else cout<<"o";}cout<<endl;}
}
K.Box
思路:我们设:
dp[i][0]表示第i位移动到i-1位的情况
dp[i][1]表示第i位不移动的情况
dp[i][2]表示第i位移动到i+1位的情况
具体实现见代码注释。
代码:
void solve() {int n;cin>>n;for(int i=1; i<=n; i++)cin>>a[i];for(int i=1; i<=n; i++)cin>>b[i];for(int i=1; i<=n; i++) {if(b[i]) {//只有1有主动权,0是被迫的QAQdp[i][0]=dp[i-1][0]+a[i-1];//当前1左移只能由上一个1左移转移过来dp[i][1]=max(dp[i-1][0],dp[i-1][1])+a[i];//当前位置不动,上一个位置1不动或者左移都可以dp[i][2]=max({dp[i-1][0],dp[i-1][1],dp[i-1][2]})+a[i+1];//当前位置右移,上一个位置1不动、左移、右移都可以} else {dp[i][0]=max({dp[i-1][0],dp[i-1][1]});// 当前位左移,可以由上一个位置左移,或者上一个位置1还没动的过转移过来dp[i][1]=dp[i-1][2];//这个0可以被上个右移的1挤到左边}}cout<<max(dp[n][0],dp[n][1])<<endl;//最终答案在左移和不动的情况下取max(因为最后一个位置无法右移)
}
相关文章:
2023牛客暑期多校训练营2(D/E/F/H/I/K)
目录 D.The Game of Eating E.Square F.Link with Chess Game H.0 and 1 in BIT I.Link with Gomoku K.Box D.The Game of Eating 思路:倒着贪心。因为正着贪会导致一种局面:我选了当前喜爱值最大的菜,但是就算我不选这个菜࿰…...

Ubuntu搭建Samba服务-学习记录
文章目录 Ubuntu安装Samba流程Samba配置文件Samba添加账户配置文件修改Samba服务控制设置开机自动启动通过systemctl 启动服务通过 rc.local 启动 Windows访问参考链接 当前文章仅用于记录,在 Ubuntu中安装使用Samba,在Windows访问 系统环境:…...

Unity Shader - if 和 keyword 的指令比较
文章目录 环境TestingIf4Sampleunity shaderlab 中的 TestingIf4Sample.shadergraphics analyzer 中的 TestingIf4Sample.glsl TestingKW4Sampleunity shaderlab 中的 TestingKW4Sample.shadergraphics analyzer 中的 TestingKW4Sample.glsl 比较 环境 Unity : 2020.3.37f1 Pi…...

【C++入门到精通】C++入门 —— 类和对象(了解类和对象)
目录 一、类和对象的历史由来 二、面向过程和面向对象的初步认识 三、类 1.引子 2.类的定义 3.类的访问限定符及封装 ⭕访问限定符 🚩访问限定符解释说明 🚩struct 与 class 的区别 1. 默认访问级别: 2. 继承权限(默认的…...

DRS 迁移本地mysql 到华为云
准备工作: 源端的IP地址(公网),用户明和密码。如果通过公网迁移,需要在安全组放通drs访问源端数据库的3306端口。目标端的IP地址,用户名和密码。 创建DRS迁移任务 创建迁移任务 登录华为云控制台。单击管…...

腾讯云 Cloud Studio 实战训练营——快速构建React完成点餐H5页面
目录 编辑 一、前言 1、什么是腾讯云 Cloud Studio 2、本文实验介绍 二、前期准备工作 1、注册 Cloud Studio 2、初始化工作空间 三、开发一个简版的点餐系统页面 1、安装依赖 1.1、安装 antd-mobile 1.2、安装 less 和 less-loader 1.3、暴露 webpack 配置文件 …...
在 React 中,props(属性)用于在组件之间传递数据
在 React 中,props(属性)用于在组件之间传递数据。它是父组件向子组件传递信息的一种方式,通过 props,父组件可以向子组件传递数据、回调函数、配置项等。 注意: props 是只读的,它的值由父组件…...

Unity实现camera数据注入RMP推送或轻量级RTSP服务模块
技术背景 随着技术的不断进步和应用的不断深化,Unity3D VR应用的前景非常广阔,它广泛应用于教育、医疗、军事、工业设计、虚拟数字人等多个领域。 教育领域:Unity3D VR技术可以用来创建虚拟现实教室,让学生能够身临其境地体验课…...
CVPR2023新作:3D感知的AI换脸算法
Title: 3D-Aware Face Swapping (3D感知的人脸交换) Affiliation: 上海交通大学人工智能研究所 Authors: Yixuan Li, Chao Ma, Yichao Yan, Wenhan Zhu, Xiaokang Yang Keywords: Face swapping, 3D human faces, Generative Adversarial Network, geometry Summary: (1):…...

Android安卓实战项目(4)---提供给阿尔兹海默症患者的APP(源码在文末)
Android安卓实战项目(4)—提供给阿尔兹海默症患者的APP(源码在文末) 一.项目运行介绍 1.大致浏览 (1)开机界面 (2)主界面 (3)Read Instructions界面 &…...

详解Mybatis之自动映射 自定义映射问题
编译软件:IntelliJ IDEA 2019.2.4 x64 操作系统:win10 x64 位 家庭版 Maven版本:apache-maven-3.6.3 Mybatis版本:3.5.6 文章目录 一、Mybatis中的自动映射是什么?二、Mybatis中的自定义映射是什么?三、为什…...
shiro的优点
shiro是一个强大的java安全框架,它的优点有以下: shiro就是权限管理:包括两部分:身份验证、授权 一、它提供了身份验证、授权、密码和会话管理等功能,可以满足各种应用程序的安全需求。 身份认证就是:验证是…...

使用分布式HTTP代理爬虫实现数据抓取与分析的案例研究
在当今信息爆炸的时代,数据已经成为企业决策和发展的核心资源。然而,要获取大规模的数据并进行有效的分析是一项艰巨的任务。为了解决这一难题,我们进行了一项案例研究,通过使用分布式HTTP代理爬虫,实现数据抓取与分析…...
Linux操作系统运维常用集合
目录 1、服务器磁盘查询、管理常见命令: 2、Centos系统挂载移动硬盘或U盘 3、Linux系统磁盘管理方式 4、Linux系统下挂载磁盘格式详解 1、服务器磁盘查询、管理常见命令: lsblk 查看分区和磁盘df -h …...
UE4/5C++多线程插件制作(十四、MTPAbandonable)
目录 MTPAbandonable h实现 cpp实现 MTPMarco.h 首先是异步任务的宏定义部分:...
集装箱装卸作业相关的知识-Part1
1.角件 Corner Fitting of Container or called Corner Casting. there are eigth of it of one container. 国家标准|GB/T 1835-2006https://openstd.samr.gov.cn/bzgk/gb/newGbInfo?hcnoD35857F2200FA115CAA217A114F5EF12 中国的国标:GB/T 1835-2006《系列1集…...

BurpSuite超详细安装教程-功能概述-配置-使用教程---(附下载链接)
一、介绍 BurpSuite是渗透测试、漏洞挖掘以及Web应用程序测试的最佳工具之一,是一款用于攻击web 应用程序的集成攻击测试平台,可以进行抓包、重放、爆破,包含许多工具,能处理对应的HTTP消息、持久性、认证、代理、日志、警报。 二…...

不同局域网下使用Python自带HTTP服务进行文件共享「端口映射」
文章目录 1. 前言2. 视频教程3. 本地文件服务器搭建3.1 python的安装和设置3.2 cpolar的安装和注册 4. 本地文件服务器的发布4.1 Cpolar云端设置4.2 Cpolar本地设置 5. 公网访问测试6. 结语 1. 前言 数据共享作为和连接作为互联网的基础应用,不仅在商业和办公场景有…...

产业大数据应用:洞察企业全维数据,提升企业监、管、服水平
在数字经济时代,数据已经成为重要的生产要素,数字化改革风生水起,在新一代科技革命、产业革命的背景下,产业大数据服务应运而生,为区域产业发展主导部门提供了企业洞察、监测、评估工具。能够助力区域全面了解企业经…...

【爬虫逆向案例】某名片网站 js 逆向 —— data解密
声明:本文只作学习研究,禁止用于非法用途,否则后果自负,如有侵权,请告知删除,谢谢! 【爬虫逆向案例】某名片网站js逆向—— data解密 1、前言2、步骤3、号外 1、前言 相信各位小伙伴在写爬虫的…...

调用支付宝接口响应40004 SYSTEM_ERROR问题排查
在对接支付宝API的时候,遇到了一些问题,记录一下排查过程。 Body:{"datadigital_fincloud_generalsaas_face_certify_initialize_response":{"msg":"Business Failed","code":"40004","sub_msg…...
React hook之useRef
React useRef 详解 useRef 是 React 提供的一个 Hook,用于在函数组件中创建可变的引用对象。它在 React 开发中有多种重要用途,下面我将全面详细地介绍它的特性和用法。 基本概念 1. 创建 ref const refContainer useRef(initialValue);initialValu…...

理解 MCP 工作流:使用 Ollama 和 LangChain 构建本地 MCP 客户端
🌟 什么是 MCP? 模型控制协议 (MCP) 是一种创新的协议,旨在无缝连接 AI 模型与应用程序。 MCP 是一个开源协议,它标准化了我们的 LLM 应用程序连接所需工具和数据源并与之协作的方式。 可以把它想象成你的 AI 模型 和想要使用它…...

令牌桶 滑动窗口->限流 分布式信号量->限并发的原理 lua脚本分析介绍
文章目录 前言限流限制并发的实际理解限流令牌桶代码实现结果分析令牌桶lua的模拟实现原理总结: 滑动窗口代码实现结果分析lua脚本原理解析 限并发分布式信号量代码实现结果分析lua脚本实现原理 双注解去实现限流 并发结果分析: 实际业务去理解体会统一注…...
JDK 17 新特性
#JDK 17 新特性 /**************** 文本块 *****************/ python/scala中早就支持,不稀奇 String json “”" { “name”: “Java”, “version”: 17 } “”"; /**************** Switch 语句 -> 表达式 *****************/ 挺好的ÿ…...
什么?连接服务器也能可视化显示界面?:基于X11 Forwarding + CentOS + MobaXterm实战指南
文章目录 什么是X11?环境准备实战步骤1️⃣ 服务器端配置(CentOS)2️⃣ 客户端配置(MobaXterm)3️⃣ 验证X11 Forwarding4️⃣ 运行自定义GUI程序(Python示例)5️⃣ 成功效果:def __in…...
蓝桥杯 冶炼金属
原题目链接 🔧 冶炼金属转换率推测题解 📜 原题描述 小蓝有一个神奇的炉子用于将普通金属 O O O 冶炼成为一种特殊金属 X X X。这个炉子有一个属性叫转换率 V V V,是一个正整数,表示每 V V V 个普通金属 O O O 可以冶炼出 …...
LangChain知识库管理后端接口:数据库操作详解—— 构建本地知识库系统的基础《二》
这段 Python 代码是一个完整的 知识库数据库操作模块,用于对本地知识库系统中的知识库进行增删改查(CRUD)操作。它基于 SQLAlchemy ORM 框架 和一个自定义的装饰器 with_session 实现数据库会话管理。 📘 一、整体功能概述 该模块…...
离线语音识别方案分析
随着人工智能技术的不断发展,语音识别技术也得到了广泛的应用,从智能家居到车载系统,语音识别正在改变我们与设备的交互方式。尤其是离线语音识别,由于其在没有网络连接的情况下仍然能提供稳定、准确的语音处理能力,广…...