当前位置: 首页 > news >正文

Mashup-Math_Topic_One

Tutorial and Introspection

A Rudolf and 121

注意到第 1 1 1 位只能被第 2 2 2 位影响,以此类推位置,对于 a i a_i ai , 如果 < 0 < 0 <0 ,不合法 ; 否则, a i − = a i , a i + 1 − = 2 ∗ a i , a i + 2 − = a i a_i-=a_i,a_{i+1}-=2*a_i,a_{i+2}-=a_i ai=ai,ai+1=2ai,ai+2=ai

操作到最后再检查一下 n − 1 n-1 n1 n n n 这两个位置

void solve(){cin >> n;for(int i = 1; i <= n; i ++){cin >> a[i];}for(int i = 1; i <= n - 2; i ++){if(a[i] == 0){continue;}else if(a[i] < 0){cout << "NO\n";return ;}else{int tmp = a[i];a[i] -= tmp;a[i + 1] -= 2 * tmp;a[i + 2] -= tmp;}}if(a[n] == 0 && a[n - 1] == 0){cout << "YES\n";}else{cout << "NO\n";}
}

Divisible Pairs

这题主要考察对取模的理解

a + b a+b a+b mod x = 0, 即 a + b = p ∗ x a+b=p*x a+b=px , 所有数对 x x x 取模,a%=x,b%=x , 得 a + b = 0 o r x a+b=0\;or\;x a+b=0orx

a − b a-b ab mod x = 0, 取模 x, 即 a=b

一边读入一边计算,不会重复计算

void solve(){int n, x, y, res = 0;cin >> n >> x >> y;map<pair<int, int>, int> mp;for(int i = 1; i <= n; i ++){int tmp;cin >> tmp;if(mp.count({x - tmp % x, tmp % y})){res += mp[{x - tmp % x, tmp % y}];}else if(mp.count({-tmp % x, tmp % y})){res += mp[{-tmp % x, tmp % y}];}mp[{tmp % x, tmp % y}] ++;}cout << res << '\n';
}

Anna and the Valentine’s Day Gift

如果 x ≥ 1 0 m x\geq 10^m x10m , 在 x x x 没有前导零的情况下, 只需要 x x x 的长度为 m + 1 m+1 m+1 即可,知道这个性质贪心两边操作即可

(萨沙不需要最大化最终的数字,只要最大化数字的位数即可。)

void solve(){int n, m, res = 0;cin >> n >> m;vector<int> a(n + 5), c(n + 5);for(int i = 1; i <= n; i ++){cin >> a[i];res += to_string(a[i]).size();}auto check = [](int x) -> int{string tmp = to_string(x);int sz = tmp.size(), i = sz - 1;while(tmp[i] == '0') i --;return sz - i - 1;};sort(a.begin() + 1, a.begin() + n + 1, [&](int x, int y) -> bool{return check(x) > check(y);});for(int i = 1; i <= n; i += 2){res -= check(a[i]);}cout << (res >= m + 1 ? "Sasha" : "Anna") << '\n';
}

Physical Education Lesson

如果位置 n n n 的人报数为 x x x , 队伍长为 k k k , 不难发现

n = ( 2 k − 2 ) ∗ t + x n=(2k-2)*t+x n=(2k2)t+x , t ∈ [ 0 , ⌊ n − x 2 k − 2 ⌋ ] t\in[0,\lfloor\frac{n-x}{2k-2}\rfloor] t[0,2k2nx⌋]

n = ( 2 k − 2 ) ∗ t + k + k − x n=(2k-2)*t+k+k-x n=(2k2)t+k+kx , 即 t ∈ [ 1 , 1 + ⌊ n + x − 2 2 k − 2 ⌋ ] t\in[1,1+\lfloor\frac{n+x-2}{2k-2}\rfloor] t[1,1+2k2n+x2⌋]

n − x n-x nx n + x − 2 n+x-2 n+x2 分解因子,留下偶数因子对应的 k k k 插入 s e t set set 集合当中,

最后检查所有 k > = x k>=x k>=x 的合法解数量

#include<bits/stdc++.h>
using namespace std;
#define int long long
int n, x;
void solve(){set<int> s;cin >> n >> x;/*n = (2k-2)*t + xn-x = (2k-2)*tn = (2k-2)*t + k + k - xn + x - 2 = (2k-2) * tk < n*//*num = a * b*/auto op = [&](int num){set<int> tmp = set<int> ();for(int i = 1; i * i <= num; i ++){if(num % i == 0){if(i % 2 == 0) tmp.insert(i);if((num / i) % 2 == 0) tmp.insert(num / i);}}for(auto x : tmp){s.insert(x / 2 + 1);}};op(n - x);op(n + x - 2);int res = 0;for(auto k : s){if(k >= x){res ++;}}cout << res << '\n';
}signed main(){ios::sync_with_stdio(false);cin.tie(0), cout.tie(0);int T = 1;cin >> T;while (T --){solve();}return 0;
}
/*10 22356n-x=8, 2 4 8               2 3 5n+x-2=10 2  10
*/

Eat the chip

纵向距离决定谁吃谁,然后进行模拟,被吃者逃离,捕食者靠近, O ( h ) O(h) O(h)

实际存在 O ( 1 ) O(1) O(1) 做法就能判断,这里不做深究

#include<bits/stdc++.h>
using namespace std;
#define int long long// void solve(){
// 	int h, w, x1, y1, x2, y2;
// 	cin >> h >> w >> x1 >> y1 >> x2 >> y2;
// 	auto out = [](int op){
// 		if(op == 1) cout << "Alice\n";
// 		else if(op == 2) cout << "Bob\n";
// 		else cout << "Draw\n";// };// if(x1 >= x2){// 	out(3);// }
// 	else{
// 		int dis = abs(y1 - y2);
// 		if(dis <= 1){
// 			if(abs(x1 - x2) % 2){
// 				out(1);
// 			}
// 			else{
// 				out(2);
// 			}
// 		}
// 		else{
// 			out(3);
// 		}
// 	}
// }
/*获胜条件 : 当被捕食者进入攻击区域时,捕食者通过之前的操纵使得两者距离之差不超过 3除非距离间隔为 1, 捕食者直接发起进攻否则被捕食者一定
*/
/*如果两者距离为 0, 捕食者不改变, 否则,捕食者令距离减 -1;被捕食者一定要让距离 + 1捕食者先手, 而被捕食者进入判定区域时先手假设横向距离为 3,纵向距离为 51 : 22 : 33 : 24 : 3h <= 1e6即纵向的距离, 显然题目比较善良,让我们通过 O(h) 而非 O(1)的操作完成题目那么就可以通过模拟解决了
*/
void solve(){int h, w, x1, y1, x2, y2;cin >> h >> w >> x1 >> y1 >> x2 >> y2;auto out = [](int op){if(op == 1) cout << "Alice\n";else if(op == 2) cout << "Bob\n";else cout << "Draw\n";};// 计算横向距离auto dis = [&] () -> long long {return abs(y1 - y2);};// a 远离 bauto a_away_b = [&] () -> void {for(int i = -1; i <= 1; i ++){int tmp = y1 + i;if(tmp >= 1 && tmp <= w && abs(tmp - y2) >= dis()){y1 = tmp;}}};auto a_in_b = [&] () -> void {for(int i = -1; i <= 1; i ++){int tmp = y1 + i;if(tmp >= 1 && tmp <= w && abs(tmp - y2) <= dis()){y1 = tmp;}}};auto b_away_a = [&] () -> void {for(int i = -1; i <= 1; i ++){int tmp = y2 + i;if(tmp >= 1 && tmp <= w && abs(tmp - y1) >= dis()){y2 = tmp;}}};auto b_in_a = [&] () -> void {for(int i = -1; i <= 1; i ++){int tmp = y2 + i;if(tmp >= 1 && tmp <= w && abs(tmp - y1) <= dis()){y2 = tmp;}}};if(x1 >= x2){out(3);}else{// 进入判定区域的时候,结局就已经注定了if((x2 - x1) % 2 == 1){ // A 吃 Bfor(int i = 1; i <= x2 - x1 - 1; i ++){if(i & 1){a_in_b();}else{b_away_a();}}if(abs(y1 - y2) <= 1) out(1);else out(3);}else{ // B 吃 Afor(int i = 1; i <= x2 - x1 - 1; i ++){if(i & 1){a_away_b();}else{b_in_a();}}if(abs(y1 - y2) <= 1) out(2);else out(3);}}}
signed main(){ios::sync_with_stdio(false);cin.tie(0), cout.tie(0);int T = 1;cin >> T;while (T --){solve();}return 0;
}
// 每次移动改变两棋子之间的横向距离 dis_x 和纵向距离 dis_y
// 先手到达 dis_x = 0 且 dis_y = 0 的玩家获胜
// 如果无人取胜,平局。
// 每次操作,纵向距离必然 -1
// 如果两者距离为奇数, 必然是 A 尝试吃掉 B 或者平局
// 如果两者距离为偶数,必然是 B 尝试吃掉 A 或者平局

Increasing Subsequences

题解写的很好

让我们来看看构建所需数组的解决方案之一。

假设数组 a a a x x x 个递增子序列。如果我们在数组末尾添加一个新的最小值,那么新数组中的递增子序列数等于 x + 1 x+1 x+1 (因为新元素不会与其他元素形成递增子序列)。(由于新元素不会与其他元素形成递增子序列,因此只会添加由该元素组成的子序列)。如果我们在数组的末尾添加一个新的最大值,那么新数组中的递增子序列数等于 2 x 2x 2x (因为新元素与其他元素形成递增子序列)。

利用上述事实,我们来定义一个递归函数 f ( x ) f(x) f(x) ,它返回的数组恰好有 x x x 个递增子序列。对于奇数值 x x x ,返回 f ( x ) = f ( x − 1 ) + m i n f(x) = f(x-1) + min f(x)=f(x1)+min (这里的 + 表示在数组末尾添加一个元素);对于偶数值 x x x ,返回 f ( x ) = f ( x 2 ) + m a x f(x) = f(\frac{x}{2}) + max f(x)=f(2x)+max 。现在我们需要估算通过这种算法得到的数组中的元素个数。需要注意的是,第一种类型( x → x − 1 x \rightarrow x-1 xx1 )不能有两次连续的运算,因此每两次运算, x x x 的值至少减少两次。因此,数组的大小满足 200 200 200 的限制。

#include<bits/stdc++.h>
using namespace std;
#define int long longvector<int> f(int x){vector<int> res;if(x == 2){res.push_back(0);}else if(x & 1){res = f(x - 1);res.push_back(*min_element(res.begin(), res.end()) - 1);}else{res = f(x / 2);res.push_back(*max_element(res.begin(), res.end()) + 1);}return res;
}void solve(){int x;cin >> x;auto res = f(x);cout << res.size() << '\n';for(auto a : res) cout << a << ' ';cout << '\n';
}signed main(){ios::sync_with_stdio(false);cin.tie(0), cout.tie(0);int T = 1;cin >> T;while (T --){solve();}return 0;
}

相关文章:

Mashup-Math_Topic_One

Tutorial and Introspection A Rudolf and 121 注意到第 1 1 1 位只能被第 2 2 2 位影响&#xff0c;以此类推位置&#xff0c;对于 a i a_i ai​ , 如果 < 0 < 0 <0 &#xff0c;不合法 ; 否则&#xff0c; a i − a i , a i 1 − 2 ∗ a i , a i 2 − a …...

基于JavaWEB SSM SpringBoot婚纱影楼摄影预约网站设计和实现

基于JavaWEB SSM SpringBoot婚纱影楼摄影预约网站设计和实现 博主介绍&#xff1a;多年java开发经验&#xff0c;专注Java开发、定制、远程、文档编写指导等,csdn特邀作者、专注于Java技术领域 作者主页 央顺技术团队 Java毕设项目精品实战案例《1000套》 欢迎点赞 收藏 ⭐留言…...

逐步学习Go-Select多路复用

概述 这里又有多路复用&#xff0c;但是Go中的这个多路复用不同于网络中的多路复用。在Go里&#xff0c;select用于同时等待多个通信操作&#xff08;即多个channel的发送或接收操作&#xff09;。Go中的channel可以参考我的文章&#xff1a;逐步学习Go-并发通道chan(channel)…...

王道:OJ15

课时15作业 Description 读取10个元素 87 7 60 80 59 34 86 99 21 3&#xff0c;然后建立二叉查找树&#xff0c;排序后输出3 7 21 34 59 60 80 86 87 99&#xff0c;针对有序后的元素&#xff0c;存入一个长度为10的数组中&#xff0c;通过折半查找找到21的下标&#xff08…...

【案例·查】数据类型强制转换,方便查询匹配

问题描述&#xff1a; MySQL执行中需要将某种数据类型的表达式显式转换为另一种数据类型&#xff0c;可以使用 SQL 中的cast()来处理 案例&#xff1a; SELECT CAST(9.0 AS decimal) #String化为小数类型SELECT * FROM table_1 WHERE 1888-03-07 CAST(theDate AS DATE) …...

spring boot3自定义注解+拦截器+Redis实现高并发接口限流

⛰️个人主页: 蒾酒 &#x1f525;系列专栏&#xff1a;《spring boot实战》 &#x1f30a;山高路远&#xff0c;行路漫漫&#xff0c;终有归途 目录 写在前面 内容简介 实现思路 实现步骤 1.自定义限流注解 2.编写限流拦截器 3.注册拦截器 4.接口限流测试 写在前…...

使用certbot为网站启用https

1. 安装certbot客户端 cd /usr/local/bin wget https://dl.eff.org/certbot-auto chmod ax ./certbot-auto 2. 创建目录和配置nginx用于验证域名 mkdir -p /data/www/letsencryptserver {listen 80;server_name ~^(?<subdomain>.).ninvfeng.com;location /.well-known…...

Unity 背包系统中拖拽物体到指定位置或互换位置效果的实现

在Unity中&#xff0c;背包系统是一种常见的游戏系统&#xff0c;可以用于管理和展示玩家所持有的物品、道具或装备。 其中的拖拽功能非常有意思&#xff0c;具体功能就是玩家可以通过拖拽物品图标来移动物品在背包中的位置&#xff0c;或者将物品拖拽到其他位置或界面中&…...

iOS客户端自动化UI自动化airtest+appium从0到1搭建macos+脚本设计demo演示+全网最全最详细保姆级有步骤有图

Android客户端自动化UI自动化airtest从0到1搭建macos脚本设计demo演示全网最全最详细保姆级有步骤有图-CSDN博客 避坑系列-必读&#xff1a; 不要安装iOS-Tagent &#xff0c;安装appium -这2个性质其实是差不多的都是为了安装wda。注意安装appium最新版本&#xff0c;安装完…...

每周编辑精选|在线运行 Deepmoney 金融大模型、AI 偏好等多个优质数据集上线

目前&#xff0c;AI 领域对金融模型的研究成果大多是基于公共知识进行训练的&#xff0c;但在实际的金融实践中&#xff0c;这些公共知识对于当前市场的可解释性往往严重不足。一个理想的金融大模型应该能够理解新闻或数据事件&#xff0c;并能够即时地从主观和量化两个角度对事…...

C++多重继承与虚继承

多重继承的原理 多重继承(multiple inheritance)是指从多个直接基类中产生派生类的能力。 多重继承的派生类继承了所有父类的属性。 在面向对象的编程中&#xff0c;多重继承意味着一个类可以从多个父类继承属性和方法。 就像你有一杯混合果汁&#xff0c;它是由多种水果榨取…...

请简单介绍一下Shiro框架是什么?Shiro在Java安全领域的主要作用是什么?Shiro主要提供了哪些安全功能?

请简单介绍一下Shiro框架是什么&#xff1f; Shiro框架是一个强大且灵活的开源安全框架&#xff0c;为Java应用程序提供了全面的安全解决方案。它主要用于身份验证、授权、加密和会话管理等功能&#xff0c;可以轻松地集成到任何Java Web应用程序中&#xff0c;并提供了易于理解…...

TouchGFX之Button

TouchGFX中的按钮是一种感应触控事件的控件&#xff0c;能够在按钮被按下/释放时发送回调 代码 #ifndef TOUCHGFX_ABSTRACTBUTTON_HPP #define TOUCHGFX_ABSTRACTBUTTON_HPP #include <touchgfx/Callback.hpp> #include <touchgfx/events/ClickEvent.hpp> #includ…...

计算机组成原理 — 指令系统

指令系统 指令系统指令的概述指令的格式指令的字长取决于 操作数类型和操作种类操作数的类型数据在存储器中的存放方式操作类型 寻址方式指令寻址数据寻址立即寻址直接寻址隐含寻址间接寻址寄存器寻址寄存器间接寻址基址寻址变址寻址堆栈寻址 RISC 和 CISC 技术RISC 即精简指令…...

使用easyYapi生成文档

easyYapi生成文档 背景1.安装配置1.1 介绍1.2 安装1.3 配置1.3.1 Export Postman1.3.2 Export Yapi1.3.3 Export Markdown1.3.4 Export Api1.3.6 常见问题补充 2. java注释规范2.1 接口注释规范2.2 出入参注释规范 3. 特定化支持3.1 必填校验3.2 忽略导出3.3 返回不一致3.4 设置…...

蓝桥杯练习题总结(三)线性dp题(摆花、数字三角形加强版)

目录 一、摆花 思路一&#xff1a; 确定状态&#xff1a; 初始化&#xff1a; 思路二&#xff1a; 确定状态&#xff1a; 初始化&#xff1a; 循环遍历&#xff1a; 状态转移方程&#xff1a; 二、数字三角形加强版 一、摆花 题目描述 小明的花店新开张&#xff0c;为了吸…...

Elasticsearch(15) multi_match的使用

elasticsearch version&#xff1a; 7.10.1 multi_match是Elasticsearch中的一种查询类型&#xff0c;允许在一个或多个字段上执行全文本搜索&#xff0c;并合并各个字段的结果得分。这种查询有助于实现跨多个字段的统一搜索体验。 语法 {"query": {"multi_m…...

nodejs的线程模型和libuv库的基本使用

文章目录 nodejs中集成addon本地代码的回调问题单线程事件驱动模型libuvlibuv基本框架addon中使用libuv代码nodejs中集成addon本地代码的回调问题 在C++的代码中,回调函数是一个基本的代码调用方式。而在我自己的开发实践中,需要在addon这样一个nodejs的本地化模块中实现一个…...

Uni-app/Vue/Js本地模糊查询,匹配所有字段includes和some方法结合使用e

天梦星服务平台 (tmxkj.top)https://tmxkj.top/#/ 1.第一步 需要一个数组数据 {"week": "全部","hOutName": null,"weekendPrice": null,"channel": "门市价","hOutId": 98,"cTime": "…...

深度学习pytorch——激活函数损失函数(持续更新)

论生物神经元与神经网络中的神经元联系——为什么使用激活函数&#xff1f; 我们将生物体中的神经元与神经网络中的神经元共同分析。从下图可以看出神经网络中的神经元与生物体中的神经元有很多相似之处&#xff0c;由于只有刺激达到一定的程度人体才可以感受到刺激&#xff0c…...

鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个医院挂号小程序

一、开发准备 ​​环境搭建​​&#xff1a; 安装DevEco Studio 3.0或更高版本配置HarmonyOS SDK申请开发者账号 ​​项目创建​​&#xff1a; File > New > Create Project > Application (选择"Empty Ability") 二、核心功能实现 1. 医院科室展示 /…...

[10-3]软件I2C读写MPU6050 江协科技学习笔记(16个知识点)

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16...

k8s业务程序联调工具-KtConnect

概述 原理 工具作用是建立了一个从本地到集群的单向VPN&#xff0c;根据VPN原理&#xff0c;打通两个内网必然需要借助一个公共中继节点&#xff0c;ktconnect工具巧妙的利用k8s原生的portforward能力&#xff0c;简化了建立连接的过程&#xff0c;apiserver间接起到了中继节…...

多种风格导航菜单 HTML 实现(附源码)

下面我将为您展示 6 种不同风格的导航菜单实现&#xff0c;每种都包含完整 HTML、CSS 和 JavaScript 代码。 1. 简约水平导航栏 <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport&qu…...

Docker 本地安装 mysql 数据库

Docker: Accelerated Container Application Development 下载对应操作系统版本的 docker &#xff1b;并安装。 基础操作不再赘述。 打开 macOS 终端&#xff0c;开始 docker 安装mysql之旅 第一步 docker search mysql 》〉docker search mysql NAME DE…...

mac 安装homebrew (nvm 及git)

mac 安装nvm 及git 万恶之源 mac 安装这些东西离不开Xcode。及homebrew 一、先说安装git步骤 通用&#xff1a; 方法一&#xff1a;使用 Homebrew 安装 Git&#xff08;推荐&#xff09; 步骤如下&#xff1a;打开终端&#xff08;Terminal.app&#xff09; 1.安装 Homebrew…...

Linux系统部署KES

1、安装准备 1.版本说明V008R006C009B0014 V008&#xff1a;是version产品的大版本。 R006&#xff1a;是release产品特性版本。 C009&#xff1a;是通用版 B0014&#xff1a;是build开发过程中的构建版本2.硬件要求 #安全版和企业版 内存&#xff1a;1GB 以上 硬盘&#xf…...

破解路内监管盲区:免布线低位视频桩重塑停车管理新标准

城市路内停车管理常因行道树遮挡、高位设备盲区等问题&#xff0c;导致车牌识别率低、逃费率高&#xff0c;传统模式在复杂路段束手无策。免布线低位视频桩凭借超低视角部署与智能算法&#xff0c;正成为破局关键。该设备安装于车位侧方0.5-0.7米高度&#xff0c;直接规避树枝遮…...

通过MicroSip配置自己的freeswitch服务器进行调试记录

之前用docker安装的freeswitch的&#xff0c;启动是正常的&#xff0c; 但用下面的Microsip连接不上 主要原因有可能一下几个 1、通过下面命令可以看 [rootlocalhost default]# docker exec -it freeswitch fs_cli -x "sofia status profile internal"Name …...

【Kafka】Kafka从入门到实战:构建高吞吐量分布式消息系统

Kafka从入门到实战:构建高吞吐量分布式消息系统 一、Kafka概述 Apache Kafka是一个分布式流处理平台,最初由LinkedIn开发,后成为Apache顶级项目。它被设计用于高吞吐量、低延迟的消息处理,能够处理来自多个生产者的海量数据,并将这些数据实时传递给消费者。 Kafka核心特…...