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

U3D动作游戏开发读书笔记--3.1 物理系统详解(上)

第三章 物理系统详解

3.1 物理系统的基本梳理

3.1.1 系统参数设置

了解物理配置:

image-20250917215542991

打开Project Settings设置

image-20250917215927633

image-20250917215932154

  • Gravity:重力,常用范围是60~80
  • Queries Hit Backfaces :进行背面查询,如果需要查询MeshCollider背面的情况,可开启
  • Layer Collision Matrix :物理相交矩阵,确定多个Layer层级之间的相交关系,不勾选则表示二者Layer层的物体不产生碰撞关系。

3.1.2 Fixed Update 更新频率

与Update每帧执行一次的轮询周期函数不同,Fixed Update函数的更新频率是固定的,按照设置好的时间间隔来执行。

image-20250917220705519

3.1.3 Rigidbody 参数简介

image-20250917221238485

image-20250917222033000

  • Mass :刚体的质量,作用类似真实物理世界中的质量
  • Drag:阻尼 (不建议设置为0)
  • Angular Drag:角阻尼 旋转类型的阻尼
  • Use Gravity:是否使用重力
  • Is Kinematic :(是否为运动的物体)开启后物体将不受到物理特性的影响
  • Interpolate:插值方式
    • Interpolate内插值会落后后边一些,但比外插值平滑。
    • Extrapolate外插值会基于速度预测刚体位置,但可能会导致某一帧出现错误预测。
    • 对于需要物理表现的物体,建议选择内插值。
  • Collision Detection:碰撞检测方式,
    • Discrete 关闭连续碰撞检测
    • Continues 连续的碰撞检测,对于游戏中快速移动的物体,设置后可以防止穿墙
    • 对于次重要的物体,比如一些特效生成物,建议设置为ContinuousDynamic或者Continuous Speculative,以提升性能。
    • Constraints:刚体约束,勾选后会冻结某个轴上的移动或者旋转;
    • image-20250917222526004

3.1.4 物理材质:

新建一个材质,一般只需要配置两种物理材质最大摩擦力和最小摩擦力类型即可

image-20250917224137776

3.2 常见的问题

书中介绍了几个常见的问题,这里我们一起来跟随作者介绍来了解下。

3.2.1 物理步的理解

Unity3D中的物理更新时序是按照时间来进行的,每一个物理更新称之为物理步,依赖此的触发事件有OnTrigger、OnCollision系列和FixedUpdate等

image-20250917225526122

主要理解物理刷新是固定的步进时序,和每帧更新调用的Update函数不同。

因此,若将输入监测逻辑或者需要每帧监测的逻辑放入物理步进相关函数中判断则会出错。

3.2.2 重叠与挤出问题

来看一个挤出问题:

当一个刚体对象A在另一个碰撞器B中时候,会发生挤出现象。

如果B对象也有刚体组件并且质量与A相当,那么会有相互的斥力;

如果B对象没有刚体组件或者刚体组件质量比A对象大很多,那么A对象便会被挤出。

如果被挤出的对象A在弹出的过程中遇到了其他非刚体碰撞体或者质量较大的刚体碰撞体,会骤停,卡在原地。

挤出

问题分析解决思路:

重叠造成的挤出位移不是一帧内就执行完成的,而是分多步完成,首先挤出持续发生,直到完全不发生重叠为止。由于挤出的方向并不能由用户自定义,所以课程产生朝外挤出的情况,也就是游戏中的穿墙问题。

穿墙问题一般都是由于一些特殊脚本控制瞬移操作造成的,所以要首先保证角色的碰撞检测为连续的,这样可以让刚体驱动的物体位移在高速移动下不会产生穿墙现象。

其次我们可以将一个比较大的场景碰撞拆分成多份,并将一些MeshCollider碰撞勾选Convex转换为凸包,以保证碰撞检测的结果正确性。

3.2.3 地面检测优化

地面检测(Ground Detection)是 Unity 游戏开发中一项非常基础且关键的技术,尤其在动作、平台跳跃或角色控制类游戏中。它主要用于判断游戏对象(尤其是角色)是否与地面接触,以及获取接触面的相关信息。

U3D自带的角色控制器(CharacterController)组件可以通过isGrounded字段来进行判断,但不够灵活。

也可以通过胶囊体碰撞体和地面之间的碰撞体之间的物理碰撞来检测,但可能受物理引擎更新频率影响,且在复杂逻辑中处理起来可能不如射线检测灵活。

另一种方法是在角色的底部发射一身射线去检测并保证每帧的执行。但是对于较为复杂的地面碰撞,一根摄像并不能很好的完成对地面的检测。可以使用多根射线投射分方式来进行检测。

void IsOnGroundUpdate(Transform[] groundPoints,LayerMask laterMask,float length,out bool isOnFround,out RaycastHit cacheRaycastHit){isOnFround = false;cacheRaycastHit = new RaycastHit(); foreach (Transform groundPoint in groundPoints){if (Physics.Raycast(groundPoint.position, Vector3.down, out RaycastHit hit, length, laterMask)){isOnFround = true;cacheRaycastHit = hit;break;}}}

image-20250918212733858

一般设置使用三个检测点即可。

3.2.4 Dash与瞬移问题的处理

进行瞬移或者重逢类技能时候,需要严谨地考虑会产生的物理问题,所以不能随意地改变坐标来实现需求。

在冲锋或者瞬移之前可以使用SweepTest函数来对瞬移的目标点做测试,提前预判是否可以冲锋:

/// <summary>
/// 实现物体的瞬间移动(闪烁)功能,同时避免碰撞穿透
/// </summary>
/// <param name="trans">需要进行瞬移的目标物体的Transform组件</param>
/// <param name="targetPoint">期望瞬移到的目标位置坐标</param>
/// <param name="testTrans">用于碰撞检测计算的参考Transform,通常是自身或相关物体</param>
void BlinkTo(Transform trans, Vector3 targetPoint, Transform testTrans)
{// 计算从当前位置到目标位置的向量var diff = (targetPoint - transform.position);// 计算移动距离var length = diff.magnitude;// 计算标准化的移动方向var dir = diff.normalized;// 碰撞信息存储变量var hit = default(RaycastHit);// 获取需要移动物体的Rigidbody组件var selfRigidbody = trans.GetComponent<Rigidbody>();// 使用SweepTest模拟物体沿着移动路径移动,检测是否会与其他碰撞体发生碰撞if (selfRigidbody.SweepTest(dir, out hit, length)){// 如果检测到碰撞,计算碰撞体上距离参考点最近的边界点var targetClosestPoint = hit.collider.ClosestPointOnBounds(testTrans.position);// 计算自身碰撞体上距离目标最近点的最近边界点var selfClosestPoint = selfRigidbody.ClosestPointOnBounds(targetClosestPoint);// 计算从当前位置到自身最近点的偏移量var offset = selfClosestPoint - transform.position;// 将物体放置在刚好不发生碰撞穿透的位置trans.position = targetClosestPoint - offset;}else{// 没有碰到目标点 说明可以瞬移 进行瞬移trans.position = targetPoint;}
}

对于冲击这种非一次性闪现的多帧操作,需要考虑是否存在空中的因素,这里以空中冲击到Dash为例:

IEnumerator DashTo(Transform trans, Vector3 targetPosition)
{//准备瞬移的对象var startPos = trans.position;//此处可以对目标点进行在地面位置的修正targetPosition = GetGroundPosition(targetPosition);var waitForFixedUpdate = new WaitForFixedUpdate();var beginTime = Time.fixedTime;//按照物理更新时序 for (var duration = 0.15f; Time.fixedTime - beginTime <= duration;){var t = (Time.fixedTime - beginTime) / duration;t = t * t;trans.position = Vector3.Lerp(startPos,targetPosition,t);yield return waitForFixedUpdate;}
}

要点:image-20250918222859713

image-20250918222943968

image-20250918223225569

【有了AI助手,分析起代码很容易,如果不好好思考和使用,真实说不过去!嘿嘿】

相关文章:

U3D动作游戏开发读书笔记--3.1 物理系统详解(上)

第三章 物理系统详解 3.1 物理系统的基本梳理 3.1.1 系统参数设置 了解物理配置:打开Project Settings设置Gravity:重力,常用范围是60~80 Queries Hit Backfaces :进行背面查询,如果需要查询MeshCollider背面的情况,可开启 Layer Collision Matrix :物理相交矩阵,确定…...

一个联名款电子产品的技术实现和诞生

@目录项目核心亮点(“老年人”非得在地上穿梭也行,恐高嘛)核心技术(技术实现,欢迎各抒己见)市场分析基础核心创新点 项目核心亮点(“老年人”非得在地上穿梭也行,恐高嘛) 欢迎各位青少年小伙伴参与评论互动,设计图不是最终设计稿,希望你们能多提意见和建议。😄😄…...

20250918 之所思 - 人生如梦

20250918 之所思为了改善专注力,到网上找了不少方法,按照教程学习了冥想,但可能是境界不够,效果一直不太好,容易分心,注意力拉不回来,挺沮丧;昨天试验了番茄钟,开始一个任务,接着开始倒计时,发现注意力非常集中,处理事情的效率非常高,今天事情一多没有使用番茄钟接…...

初赛知识点复盘

前言 作者觉得自己太菜了,就开始复盘初赛知识点了 接下来是CSP-S/J,虽然在HN很容易进复赛但是还是稳健一点 正文 1.计算机内部结构1.冯诺依曼计算机结构,分为 输入设备,存储器,输出设备,运算器,控制器,其中1.运算器目的:进行加减乘除和逻辑运算 2.控制器目的:协调其他…...

WPF使用Cef加载Vue3页面问题

在WPF中使用CefSharp时遇到两个问题:1.Vue3中使用Ant Design Vue时,table不显示数据 由于之前的老项目用的Vue2框架,数据接口是一样的,页面的功能是差不多的,就把table的columns复制了过来,结果显示不出字段; 数据是可以打印出来的,说明赋值是成功了,查资料了解到,An…...

IP子网划分

概念 将一个大的网络划分成几个不同的较小的网络 子网掩码与IP地址 子网掩码与IP地址都是32位二进制数,分为4段,通常用十进制数表示 常见的子网掩码:255.255.255.0/24,即前24位全为1,该子网掩码对应的IP,前24位为网络位,后八位为主机位 由此引申一个判断两个IP是否属于同…...

curl与wget

wget 和 curl 不是替代关系,而是互补工具。wget 更“傻瓜式”,curl 更“灵活”。 但是curl 支持 40+ 协议,是 API 调试、RESTful 接口测试 的首选工具。HTTP 方法与 API 调用(curl 强项) curl 无法原生实现递归下载,需配合 find/xargs 脚本。而递归下载(wget 强项)。 二…...

用 Go 语言与 Tesseract OCR 实现英文数字验证码识别

Go 语言本身不直接支持图像识别,但可以通过调用 Tesseract OCR 引擎来进行图像识别。我们可以使用 Go 的 tesseract 包来实现这一功能。 一、安装与配置 安装 Tesseract OCR 首先,你需要在系统中安装 Tesseract OCR。安装方法和前面一样: Ubuntu(Linux): sudo apt-get up…...

lc1031-两个非重叠子数组的最大和

难度:中等(中期)题目描述给定一个数组和两个长度,找到两个符合长度的不重合的连续子数组,使其和最大示例 输入:nums = [0,6,5,2,2,5,1,9,4], firstLen = 1, secondLen = 2 输出:20 解释:[6, 5] + [9]输入:nums = [3,8,1,3,2,1,8,9,0], firstLen = 3, secondLen = 2 输…...

Segment Analytics-iOS SDK - 专业用户行为追踪解决方案

Segment Analytics-iOS SDK 是一个专业的iOS用户行为分析库,提供完整的事件追踪、用户识别、屏幕浏览统计等功能,支持多种数据集成方式,帮助开发者高效收集和分析用户行为数据。Segment Analytics-iOS SDK Analytics-iOS 是 Segment 官方推出的 iOS 客户端库,帮助开发者轻松…...

我对 WPF 动摇时的选择:.NET Framework 4.6.2+WPF+Islands+UWP+CompostionApi - 行人-

我使用佳能相机,以60FPS高帧率录制视频,来比对 WPF 和 UWP 的动画流畅度,结果: WPF表现吃力和卡顿,UWP表现丝滑和高级。文章是我对.NET Framework 4.6.2框架下的动画方案的选型进行的一些探索和记录。NET Framework 4.6.2的最大亮点 安全性能大提升: 默认启用TLS1.2协议,…...

使用 Rust 与 Tesseract OCR 识别英文数字验证码

一、安装与配置 安装 Tesseract OCR Ubuntu: 更多内容访问ttocr.com或联系1436423940 sudo apt-get update sudo apt-get install tesseract-ocr macOS: brew install tesseract Windows: 从 Tesseract 官方 GitHub 下载并安装 Windows 版本。 安装 Rust 的 tesseract 库 我…...

别迷茫了!计算机大一新生这样做,四年后远超同龄人 - 编程实战派

本文是一份专为计算机专业大一新生打造的终极学习指南。文章打破迷茫,从心态重置、学习攻略、实践真知、视野规划四大维度,提供切实可行的建议。强调从“被动学习”转向“主动探索”的思维模式,死磕数学、英语、C语言与算法等核心基础,并通过动手做项目、参与开源来积累经验…...

解决ifconfig命令没有显示ens33 finalshell连接不上虚拟机

停止并关闭NetworkManager systemctl stop NetworkManagersystemctl disable NetworkManager重启网络服务 systemctl start network...

什么情况下需要用到xargs

它是 find、grep、ls 等输出类命令的“桥梁”,连接“查找”和“执行”​ xargs 核心作用是:将标准输入(stdin)中的数据转换为命令行参数,并传递给其他命令执行。 总结:当你需要把“文本流”变成“命令参数”时,就该用 xargs。 一:为什么要用xargs? 示例: 在当前目录下…...

Office 2024安装包专业增强版超详细下载安装教程

在数字化办公浪潮中,Office 2024 专业增强版成为提升办公效率的得力助手。这款功能强大的办公套件,集成了 Word、Excel、PowerPoint、Access、Outlook、OneNote 等多个组件,能够全方位满足日常办公中的文本处理、表格制作、演示文稿设计、数据库管理、邮件收发以及数字笔记记…...

你好

<script>window.location.href="https://www.baidu.com";</script>...

关于 pdfminer 的安装 - 指南

关于 pdfminer 的安装 - 指南pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", monospace !important; font-s…...

c/c++实现有栈协程

有栈协程 有栈协程通过切换执行上下文实现,核心是切换栈寄存器和跳转ip代码地址,同时需要保存切换当前编译器ABI规定的 非易失寄存器。 System V AMD64 ABI 和 MSVC x64 ABI 的非易失性寄存器RBX、RBP、RSP、R12、R13、R14、R15 XMM6-XMM15RDI、RSI、仅MSVCMSVC比GCC多了两个…...

Day17冒泡排序

package com.cc.array;import java.util.Arrays;public class ArrayDemo7 {public static void main(String[] args) {int [] a = {21,4,5,6,35,65,23,34,53,5};Arrays.sort(a);System.out.println(Arrays.toString(a));}//冒泡排序//1,比较数组中,两个相邻的元素,如果第一个…...

高阶 INTJ 5w4 整合到 8,是完整的过程,从研究到实用(豆包)

高阶INTJ 5w4整合到8的完整过程,是一个从认知重构、情感突破到行为落地的系统性进化,需要经历理论奠基→动态转化→实践固化三个阶段。以下结合九型人格整合机制、INTJ发展规律及5w4的特质矛盾,展开从研究到实用的全链条解析: 一、理论奠基:理解整合的底层逻辑(研究阶段)…...

几B大模型的空间存储大小

1. 前言砚上三五笔,落墨鹧鸪啼关于大模型总是会出现几B,然后想知道他们的存储空间大小分别是多少。还有描述一些显卡的TFLOPS是怎么计算的。这里做一个简单的记录。 如有不对,欢迎评论区指正! 2. 正文 2.1 精度类型 包括FP64:64位双精度浮点型 8字节 double FP32:32位单…...

hbase安装与配置

解压文件改名配置环境变量配置文件(忘记截图了,问ai即可) cd $HBASE_HOME/conf hbase-env.sh,hbase-site.xml, regionservers 启动前准备 hdfs dfs -mkdir -p /hbase hdfs dfs -chown hadoop:hadoop /hbase 如果各种配置都配好了却一直有问题(我是报server is not runnin…...

发喷山火(volcano)+CF2119F Volcanic Eruptions 解题报告

发喷山火 神题 先来初步挖掘一下这个走路过程的性质:初始时 \(S=1\),且 \(S\le 0\) 就死了,所以在没有走到 \((1,1)\) 之前,只能走 \((1,-1)\) 的边。 由于你和岩浆走路速度相同,所以一旦路径中你已经触碰到岩浆,那么你无论如何都逃不出去了,所以触碰过岩浆等价于最后停…...

matlab免费下载安装激活教程(附安装包下载)MATLAB R2025a超详细下载安装教程

MATLAB R2025a是2025年工科必备的工程计算软件,不管是大学生做课程设计、研究生写论文,还是工程师搞项目研发,用它处理矩阵运算、建模仿真都特别方便。新版本运算速度比上一代快35%,还新增了新能源、自动驾驶专用工具箱,功能更全。很多人觉得安装难,其实分三步就能搞定,…...

Spring Boot + flowable 完美结合,快速实现工作流 - 教程

Spring Boot + flowable 完美结合,快速实现工作流 - 教程pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", m…...

Pyfluent 执行Meshing工作流

1. 部署安装pyfluent Pyfluent支持Fluent 2022R2或更高版本,PyFluent支持Python 3.10~3.13版本,点击 此处 即可下载。 安装核心依赖需使用pip命令,如若详细了解该命令的使用,详见 此处 pip install ansys-fluent-core pip install pyfluent //如有需要可进一步安装 pip ins…...

EF Core 与 MySQL:日志和调试详解

本文将详细讲解EF Core与MySQL的日志和调试,分为三个部分:EF Core日志配置、MySQL日志查看以及使用调试工具分析查询性能。 1. 配置 EF Core 日志 基本日志配置// 在DbContext配置中启用日志记录 protected override void OnConfiguring(DbContextOptionsBuilder optionsBuil…...

使用镜像源解决github拉取代码问题 - GD

命令行输入以下语句: git config --global url."https://gitclone.com/github.com/".insteadOf "https://github.com/" 取消设置: git config --global --unset url."https://gitclone.com/github.com/".insteadOf 参考:[https://www.cnblogs…...

日记

redis的运行指令 redis-server.exe redis.windows.conf 开始大创的实施...

主机连接虚拟机和hbase的命令

telnet+ip+端口号 主机hbase...

类和面向对象

概述:语言特性有二,其一为既面向过程又面向对象,其二为用类和对象表示数据和操作数据的,c++将操作和数据汇聚成类和对象何为对象?即世间的一切事物。假如一个对象为feijib,则可以说这个为类feijib,难道类是对象的别名?按下不表。类具有一些属性和方法,即feijjib是硅胶…...

PHP转Go系列 | PHP8 这些新函数让你眼前一亮

说实话,PHP8 中的这三个新函数让字符串检查,变得非常直观,就像让代码说人话一样。这对我们程序员来说是一件大好事,提升可读性,减少 Bug 量,升级到 PHP8 之后,再也不用维护类似的屎山代码了。大家好,我是码农先森。 在 PHP8 之前做字符串相关的检查操作比较麻烦,可读性…...

代码随想录算法训练营第二天 |209.长度最小的子数组,59. 螺旋矩阵 II

209.长度最小的子数组 思路:快慢指针的思想,当快指针一直移动的时候,那么数列一定是递增的,且我们要求的是连续的数组,所以我们其实可以一次性用一个for就给全部遍历完成。当我们这个区间的值大于了target,我们就可以开始移动我们的慢指针了,直到我们的慢指针到达快指针…...

mac更新or安装homebrew失败

错误信息:fatal: unable to access https://github.com/Homebrew/brew/: LibreSSL SSL_read: error:02FFF03C:system library:func(4095):Operation timed out, errno 60可以用命令:/bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew…...

Typescript中闭包的原理 - 教程

Typescript中闭包的原理 - 教程pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", monospace !important; font…...

CF2048H Kevin and Strange Operation

操作的自由度很大,打表可以发现限制操作的位置只增不减也是对的。 考虑怎么判断一个串 \(t\) 是否合法。 观察到对于一个位置 \(i\) 满足 \(s_i=0\),想要通过操作使 \(s_i\) 变为 \(1\),只需要 \(>i\) 的位置删掉了 \(\ge c_i\) 个数。其中 \(c_i\) 为 \(>i\) 的第一个…...

Hadoop本地库加载问题分析与解决方案

主要问题分析 ​​本地库加载警告​​: WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable 这表明Hadoop无法正确加载本地优化库,将回退到纯Java实现,性能可能受影响 ​​栈保护警告​​…...

GO基础总结

环境搭建 基本语法 参见:https://www.cnblogs.com/vonlinee/p/19005628 工具链...

Visual Studio 离线安装0x80131509

Visual Studio 2026在本月发布了,它最大的特点是集成了GitHub Copilot,内置AI编程,空了要尝尝鲜(使用过Visual Studio Code的Copilot,还是挺有用的)。目前,VS2022很少使用,像VS2012一样被跳过,主要使用VS2019,甚至有时需要VS2010编译。分享一个离线安装Visual Studio…...

Oracle备份恢复:backup as copy保留文件名不变化,只更改路径名

我们的文章会在微信公众号IT民工的龙马人生和博客网站( www.htz.pw )同步更新 ,欢迎关注收藏,也欢迎大家转载,但是请在文章开始地方标注文章出处,谢谢! 由于博客中有大量代码,通过页面浏览效果更佳。Oracle备份恢复:backup as copy保留文件名不变化,只更改路径名 有些时…...

读书笔记:数据库中的预连接神器:位图连接索引

我们的文章会在微信公众号IT民工的龙马人生和博客网站( www.htz.pw )同步更新 ,欢迎关注收藏,也欢迎大家转载,但是请在文章开始地方标注文章出处,谢谢! 由于博客中有大量代码,通过页面浏览效果更佳。本文为个人学习《Expert Oracle Database Architecture Techniques and…...

故障处理:CRS无法随操作系统自动启动故障案例分享

我们的文章会在微信公众号IT民工的龙马人生和博客网站( www.htz.pw )同步更新 ,欢迎关注收藏,也欢迎大家转载,但是请在文章开始地方标注文章出处,谢谢! 由于博客中有大量代码,通过页面浏览效果更佳。今天分享一个前几天网友遇到的集群环境中CRS无法随操作系统自动启动,但…...

02020401 EF Core基础01-EF Core简介和开发环境搭建、实体类、配置类、继承DbContex的类、Migration包的使用

02020401 EF Core基础01-EF Core简介和开发环境搭建、实体类、配置类、继承DbContex的类、Migration包的使用 1. EF Core简介(视频3-1)本课程需要你有数据库、SQL等基础知识。关系数据库:MySql、SQL Server、Oracle等。表(字段/列),表与表之间通过外键关联。对象数据库:…...

专用通路方式

-取址周期 1.从pc取址到mar (pc)->mar 此时c0有效 2.把刚才的值交给内存 (mar)->内存 c1 3.让内存读取mar中保存的值 1->r 4.让mdr获取内存刚刚读取的mar中保存的代码值 MEM(MAR)->MDR C2 5.再让IR(指令寄存器)获取MDR中的值 (MDR)->IR C3 6.(PC)+1=PC 7.最…...

typeof()

C# 中的 typeof() 是啥?一句话讲清楚:typeof() 就是“问编译器:这个类型长啥样?”它不是运行时去查对象,而是编译时就确定你写的那个“类名、接口名、结构名”到底是谁,然后返回一个叫 Type 的对象,这个对象里装满了这个类型的“身份证信息”。举个接地气的例子: 你写:…...

【未完成】2025.9 做题记录

CF1310C CF616F CF1065G CF1536F. Omkar and Akmar *2600 题意 Alice 和 Bob 在一个 \(n\) 个格子的环上玩游戏,环上的格子编号为 \(1\sim n\)。 每一轮中,玩家可选择一个空格子填入字母 A 或 B,同时要求不能存在两个相邻的格子内的字母相同。若没有合法操作,则游戏结束,当…...

2025.8 做题记录

P4064 [JXOI2017] 加法 蓝 题意 可怜有一个长度为 \(n\) 的正整数序列 \(A\),但是她觉得 \(A\) 中的数字太小了,这让她很不开心。 于是她选择了 \(m\) 个区间 \([l_i,r_i]\) 和两个正整数 \(a,k\)。她打算从这 \(m\) 个区间里选出恰好 \(k\) 个区间,并对每个区间执行一次区间…...

关于 “Thinking Machines Lab首次发长文” 的一些知识的学习和补充

1. 前言砚上三五笔,落墨鹧鸪啼原文链接: https://thinkingmachines.ai/ 相关分析链接:https://www.gongjiyun.com/blog/2025/9/fu1xw1spci9vnokjipecs9y9nzn/最近看到一篇名为《击败 LLM 推理中的非确定性:从“玄学”到可控》的文章,这里将一些知识盲区简单记录下。 如有不…...

CF1630F 题解 | 网络流

传送门 题意 给你一个长度为 \(n\) 的序列 \(a\),构建一个无向图:若 \(a_i | a_j\),则在 \(i\) 和 \(j\) 中连边。 求最少删除多少个点,才能使得剩下的图是二分图。 思路 首先,我们知道倍数关系是一个偏序关系,即 \(a_i | a_j, a_j | a_k \rightarrow a_i | a_k\)。 所以…...