LC2221-数组的三角和
原题
这题涉及到了一些求逆元的知识,我们刚好回顾一下。
首先很明显这题答案是: $$
\sum_{i=0}^{n-1} a_i C_{n-1}^i \bmod 10.
$$
数据范围也不大,可以暴力 O(n2)
求组合数,或者你直接模拟题意就行。
但作为Acmer必然要考虑更高效的做法。如果模数不是10而是一个质数 p,那么可以直接使用费马小定理来直接计算组合数分母的那些阶乘的逆元:
$$
a^p \equiv a \space (\bmod \space p).
$$
但是这题的10显然不是质数,怎么办呢?诶,我们还有个欧拉定理:
$$
a^{\phi(b)} \equiv 1\space (\bmod \space b),\gcd(a,b)=1.
$$
只要我们要求逆元的数 a
和10互质,就可以用欧拉定理求出它的逆元,即 aϕ(10) − 1 = a3.
可以考虑先将 a
中的质因子2和5全都提出。考虑我们要求的组合数 $C_n^m=\frac{n!}{m!(n-m)!}$,我们先考虑提出
m! 和 (n − m)!
中所有...
games101
Games101学习笔记
1. 线性代数
1.1. 线性变换
我们首先举个二维平面下的例子。
二维线性变换可以写为:
$$
\begin{aligned}
x' = ax + by. \\
y' = cx + dy.
\end{aligned}
$$
可以用矩阵 M 来表示: $$
\begin{bmatrix} x^{'}\\y^{'} \end{bmatrix}= \begin{bmatrix} a & b\\c
& d \end{bmatrix} \begin{bmatrix} x\\y \end{bmatrix}.
$$
这里有一个小技巧,就是将两个基向量 (1, 0), (0, 1) 分别代入,得到 (a, c), (b, d)
就是这两个基向量经过变换后的向量,从而快速得到矩阵 M。
1.2. 齐次坐标(Homogeneous
Coordinates)
在线性变换的基础上添加平移变换。
线性变换不能表示平移: $$
\begin{bmatrix} x^{'}\\y^{'} \end{bmatri...
ASC and AS
目前GAS系列文章是在作者边学边实践的过程中的产出,因此未来100%会继续改善。
GAS-1
在这篇文章,我们来引进GAS系统中的两个部件。
Ability System Component
Ability System
Component(ASC)是整个GAS系统中最基础的一个组件,它负责主要的对象与GAS的交互。在后续提及Gameplay
Effect(GE)的时候,可以发现GE本身就是通过ASC进行施加的,同时这个过程中需要的
FGameplayEffectContextHandle 和
FGameplayEffectSpecHandle
都是通过ASC进行构建。不仅如此,ASC还和其所在类对应的AttributeSet,以及处理各种Gameplay
Effect与使用技能Gameplay
Ability都密切相关。因此对于一个角色,如果要将其加入GAS系统,你第一时间就是给予其一个Ability
System Component。
ASC有两个代表Actor,分别是OwnerActor和AvatarActor,前者是实际构建(拥有)该AS...
GAS_Intro
Gameplay Ability
System前置知识
再进入我们UE5特供的GAS插件之前,我们需要回顾一些关于虚幻的知识~
Controller
在我之前使用UE4制作一些demo的时候,我通常直接在要控制的Character类中,实现一些逻辑(如控制输入)。然而,受MVC设计模式的启发,对于我们要possess的Character(或者Pawn),应当尽量将逻辑与功能解耦合。
我自己举一个例子吧,例如在射击游戏中,可能存在固定位置的机枪、岸防炮,我们应当将这些作为Pawn的子类,因为它们需要被玩家控制。对于各自武器的特定功能,例如发射子弹或者炮弹,应当在Pawn中实现,因为它们是独立于Controller的。对于Controller,我们可以切换自己possess的pawn,例如在使用固定机枪前控制我们的角色,这时候可以进行移动,而使用机枪时,则可以控制机枪射击,无法进行移动。而这便是Controller的职责。(对于切换移动,我目测可以采用UE5的Enhanced
Input系统,通过切换Input Mapping Context来实现。
当然,对于Cont...
Hello World
Welcome to Hexo! This is your very
first post. Check documentation for
more info. If you get any problems when using Hexo, you can find the
answer in troubleshooting or
you can ask me on GitHub.
Quick Start
Create a new post
1$ hexo new "My New Post"
More info: Writing
Run server
1$ hexo server
More info: Server
Generate static files
1$ hexo generate
More info: Generating
Deploy to remote sites
1$ hexo deploy
More info: Deployment