自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(96)
  • 收藏
  • 关注

原创 数论入门篇

算数基本定理:一个数可被唯一地表示成若干个素数的乘积。x=p1cnt1∗p2cnt2∗p3cnt3∗⋯∗pncntnx=p^{cnt_1}_1*p^{cnt_2}_2*p^{cnt_3}_3*\cdots*p^{cnt_n}_nx=p1cnt1​​∗p2cnt2​​∗p3cnt3​​∗⋯∗pncntn​​cnticnt_icnti​表示x分解后的乘积表达式中有cnticnt_icnti​个pip_ipi​.定理的一些基本应用1.求出x的因子个数factorCnt=(cnt1+1)∗(cnt2+1

2020-07-06 21:22:30 418 1

原创 Unity3D学习之旅7-RPG游戏-更新与踩坑实录

关于如何捕获UI层物体的点击事件无效做法首先给出已经失效无用的写法,注意,不要用下面的代码!代码返回值就是当点击到UI层物体时(内置UI层为第五层)返回false,否则返回True.但经过实验,并无效果. public bool Check() { Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); LayerMask layerMask = (1 << 5); R

2021-07-11 17:01:12 1037 7

原创 Unity3D学习之旅6-RPG游戏-更新与踩坑实录

关于ScriptableObject的一点个人理解下文中简称为so1.我暂时理解so为一个数据文件,在Project中有实体存在,如下图:如果把他作为参数挂载到游戏物体上,那么所有挂载该so的物体最近做从Excel读入技能数据遇到了一点问题.游戏在编辑器中可以正常释放技能,但打包后技能却无法使用了.经过调查验证:是因为我的技能数据是从Excel中读取的,而Resouces.Load函数无法读取目录下的Excel文件,推测是因为Excel形式的文件无法完成打包.我需要重新理解打包的过程到底是什

2021-07-05 21:56:36 723 9

原创 Unity3D学习之旅5-RPG游戏-更新与踩坑实录

首先总结一下这周踩的坑:关于设定了位置的物体突然位置变成坐标原点(0,0,0)由于我使用了Unity自带的导航系统AI-Navication,当我把游戏人物传送到一个新地点时,该地点未被烘焙上,导致游戏人物位置(position)被重置为(0,0,0)附近,注意这个坐标会发生一定的偏移,不一定三个参数全都是0.Button无任何反应除了检查父类中的Canvas有没有检查一下当前场景是否有事件系统这个游戏物体...

2021-06-12 18:36:18 1180 8

原创 Unity3D学习之旅4-RPG游戏-更新与踩坑实录

首先总结一下这周踩的坑:1.MonoBehaviour将没有绑定到游戏物体上的类声明成了继承自MonoBehaviour,导致传参数异常.谨记如果声明一个类继承自Monobehaviour,一定要作为游戏物体的组件形式存在.2.协程的进一步理解:①yield return fun();这种形式的调用会将协程阻塞直到fun函数执行完.②yield return会将控制权交还,不然协程将一直执行下去.③ yield return new WaitForSeconds(2.5f);会阻塞协程一段

2021-06-07 15:19:14 242 3

原创 Unity3D学习之旅3---一个简单的RPG游戏

导言在入门了unity熟悉了一些基本操作后,最近一段时间,我是这样学习提高自己的.下面首先给大家看一下我这几天的学习成果:开始游戏传送门演示当然你还可以看到其中有一些怪物,这些怪物也做了一些基本的AI(比如巡逻).技能系统我将在下期中为大家更新并带来自己的学习体会!安装教程以下为该项目的github网址:github链接项目下载并打开后依次安装好PolyBrush,Probuilder,Cinemachine,Universal RP,2d.sprite等包,这时你注意到很多mis

2021-06-01 14:12:21 332 4

原创 VisualStudio中给C#工程安装缺少的包

1.右键Dependencies,选择Managet NuGet Packages2.搜索你缺少的库,并在Browse界面输入(在下图中我输入了我缺少的LitJson库)3.点击install即可完成安装

2021-05-24 10:16:07 662

原创 原创 Unity3D在C#脚本中播放声音

1.首先你需要一个AudioSourceAudioSource你可以把它理解成声源,所有的声音都需要从声源发出. AudioSource audio = GetComponent<AudioSource>();2.声明并初始化AudioClipAudioClip可以简单理解成一个声音片段,通过声源我们可以播放声音再通过PlayOneShot函数即可完成声音的播放. AudioClip clip = (AudioClip)Resources.Load ("audio/ju

2021-04-26 15:54:17 652

原创 Unity3D物体运动学习笔记2021/6/8

1.设置物体为刚体,在代码中赋予刚体速度.using System.Collections;using System.Collections.Generic;using UnityEngine;public class PlayerMovement3D : MonoBehaviour{ // Start is called before the first frame update public float speed=20; private Vector3 motio

2021-04-22 14:45:17 276

原创 Unity3D安装TerrainTool

1.点击上方菜单栏中的Window-Package-Manager(注意Unity版本要较新,2020年后的版本肯定可支持该插件)2.点击图片左上角的+号,选择最后一项-按名字添加,输入:com.unity.terrain-tools然后搜索安装即可!

2021-04-21 19:25:02 4081 4

原创 Unity3D场景切换

简单切换1.首先你要有多个场景-Scene(没有的话新建几个)2.在上方菜单栏中选择File-Build Settings添加当前场景上图显示的为已添加的场景列表:可以注意到每个添加的场景都会有一个索引.3.在脚本里调用语句 Application.LoadLevel(1); //或者Application.LoadLevel("Game");括号里可跟场景名称(记得加双引号)或索引.更多相关知识点我还在学习中.未完待续...

2021-04-21 13:46:31 785

原创 Unity3D解决2D物体在3D场景中不显示的问题

将2D物体的z坐标设置为负数即可…原因有待探究.

2021-04-21 09:29:05 783

原创 Unity3D给Button注册监听事件

一.onClick.AddListener(functon)给点击这个动作加入监听器,当触发点击动作时运行函数.创建脚本如下using UnityEngine;using UnityEngine.UI;using System.Collections;public class ClickExample : MonoBehaviour { public Button start; void Start () { Button btn = start.GetComponent<Bu

2021-04-21 09:05:25 751 1

原创 C++-模板

戳进来的可以直接看文末的英文链接…C++添加了两个新关键子来支持模板:template and typenametypename keyword can always be replaced keyword class模板是在编译时进行"拓展"的,就像宏一样.不同点在于,编译器在模板拓展前会做类型检查.模板机制在于源码只包含一个函数/类的代码,但是经过编译的代码可能包含同一函数/类的多份拷贝.解释如下图:代码实例:冒泡排序// CPP code for bubble sort// us

2021-04-15 09:10:03 81

原创 Unity3D如何修改Button显示的文字以及深入了解Button组件

在创建了一个Button后,结构如图:先仔细观察一下Button的Inspector视图:发现其中竟然有一个叫Button的脚本组件.新建脚本,代码如下,并将该脚本绑定给Canvas组件:using UnityEngine.UI;using UnityEngine.EventSystems;using UnityEngine;public class btn1 : MonoBehaviour{ // Start is called before the first frame

2021-03-24 18:57:13 9993 4

原创 树形DP CCPC威海-C. Rencontre

是我比较弱的图论题,比赛的时候没出.传送门题意:给定一棵树和三个集合,要求你从每个集合中任选一点,在得到三个点u,v,w后再在树上找到一个点r,使得dis(u,r)+dis(v,r)+dis(w,r)最小.有一个结论是:这个点r一定在路径uv,vw,uw三个路径的交点上.首先,可以确定的是,这三条路径一定会有交点,(因为是一棵树,树上的一个点到另一个点只有一条路径),当然这个交点唯一.那么dis(u,r)+dis(v,r)+dis(w,r)=(dis(u,v)+dis(v,w)+dis(u,w))

2021-03-22 19:26:50 129

原创 Unity3D学习之旅2

结束了上礼拜轻松的入门看视频后,我开始阅读宣雨松老师写的《Unity3D游戏开发第二版》和《C#入门经典》(从wty那里白嫖获得),非常长草的一个阶段,我看的比较杂,漫无目的地翻阅,因为水平比较低,所以一知半解的,没啥实质性的突破,就总结一下一些新学的实用操作吧!EPPLUS我是看着这个小姐姐的视频学了Unity中Excel文件的读取和写入.传送门EPPLUS是一个使用Open Office XML(xlsx)文件格式,能读写Excel 2007/2010文件的开源组件.拓展系统菜单1.下载EP

2021-03-18 09:07:57 304

原创 数位DP题集

1.D. Beautiful numbers这题总结一下就是状态的压缩,容易知道如果不经过压缩,那么DP状态数会非常多,我们需要将无限的状态压缩成有限的状态,这样可以同时降低时间和空间复杂度,比如这题就将1~9中任意个数的lcm取出来,共计49个状态,最大lcm为5x7x8x9=2520,共计2520个模数.所以dp状态会被压缩为dp[20][49][2520],时间复杂度同状态一致。传送门#include <bits/stdc++.h>using namespace std;usi

2021-03-15 20:08:32 106

原创 Unity3D学习之旅1

本文没有什么硬核知识,只记录一些感想…关于Unity3D,我是通过这位老师的B站视频进行入门学习的,跟着做了一遍.有兴趣学Unity3d的同学可以点传送门进去看看.传送门现在总结一下我学到的知识:1.贴图即模型表面的贴图,起美化作用.2.灯光烘焙LightMapping通过对光线进行烘焙(获得灯光贴图),降低对光线的实时渲染需求.3.镜头更随4.地形刷5.寻路系统(Navication)6.刚体的概念7.动画的创建与导入8.碰撞检测9.transform组件10.perhab

2021-03-11 10:18:55 146

原创 [寒假刷题训练1]Codeforces Round #699 (Div. 2)E. Sorting Books

题意:有n本顺序排放的书,第i本书的颜色是aia_iai​.你的目标是让所有颜色相同的书排在一起.你每次可以把一本书放到最右边,问最少需要操作多少次.

2021-03-06 00:05:31 116

原创 Venice Technique

Venice Technique是我在cf补题的时候看到的,有兴趣的人可以看看这位大佬对这个技巧的描述:大佬写的博客传送门简单总结一下,该技巧可以看成一种数据结构.并支持以下操作:1.添加一个新元素到集合中.2.把一个元素从集合中删去.3.把集合中的所有元素加上一个值.4.得到所有元素的最小值代码如下:struct VeniceSet { multiset<int> S; int water_level = 0; void add(int v) { S.insert(

2021-03-05 20:35:35 206

原创 Codeforces Round #703 (Div. 2)D. Max Median(前缀和)

关于这题,首先想了一个关于上取整中位数的求法:大体做法如下,二分答案mid,对于1~n的所有数判断其的大小,如果大于等于mid,则令值为1,否则为1,统计前缀和,求区间时为了保证长度大于等于k,动态维护(使得长度大于等于k部分)前缀和的最小值即可.只要长度大于等于k的区间和大于等于0即可.但是题目是下取整,在偶数的情况下并不适用,即偶数的条件要大于等于1.奇数的条件要大于等于0,那么考虑取奇数位和偶数位的最小值,就可以了。改动如下:#include <bits/stdc++.h>usi

2021-02-20 15:32:38 118

原创 [前端学习笔记]如何理解JavaScript的this关键字

JavaScript中的this关键字区别于其他语言中的this,略有不同.因为这篇介绍中提及了其他的知识点,不是很了解,所以我也会大致介绍一下.ES51简介参考网址:网址ECMAScript 5.1 (或仅 ES5) 是ECMAScript(基于JavaScript的规范)标准最新修正。 与HTML5规范进程本质类似,ES5通过对现有JavaScript方法添加语句和原生ECMAScript对象做合并实现标准化。ES5还引入了一个语法的严格变种,被称为”严格模式(strict mode)”。注

2020-12-15 14:33:39 90

原创 JSON

简介英文全称:JavaScript Object Notation即JavaScript对象表示法。1.与XML相比,JSON是在JavaScript中读写结构化数据的更好方式。因为可以把JSON直接传给eval(),而且不必创建DOM对象。2.本质上来说,要理解到JSON是一种数据格式,而不是编程语言。尽管具有相同的语法格式,但JSON并不从属于JavaScript.而且并不是只有JavaScript才使用JSON。语法大致分为三种类型:简单值使用与JavaScript相同的语法,可以在J

2020-10-03 00:07:34 198

原创 JAVA学习扫盲之路-Day1

1.什么是XML?英文全写:Extensible Markup Language中文简称:可拓展标记语言作用:用于万维网传输,提供统一的方法来描述和交换独立于应用程序或供应商的结构化数据。简单地说就是用来传输数据的中间载体?诸如此类的标记语言还有:JSON,YAML。这三个是目前比较常见的。此处附上别人的博客:各类语言的比较https://linux.cn/article-10664-1.html2.框架与框架模式框架与框架模式的区别:框架通常是代码重用,而设计模式是设计重用,架构则介于

2020-10-02 22:44:37 149

原创 转型与调用

java学了知识没实践,有点忘了,我在这里总结一下1.instanceof一个二元运算符在下文中我省略了类A和A_Son的定义,A_Son继承自A A_Son son=new A_Son(); if(son instanceof A) { System.out.println("true"); }输出结果过true,表明A_Son类的实例化对象是A的实例。用法:变量名A instanceof 类名B一句话总结就是:如

2020-10-02 17:59:19 219

原创 JAVA泛型入门

基本术语从JDK1.5开始,Java允许定义泛型类、泛型接口和泛型方法。形式泛型类型实际具体类型泛型实例化替换泛型类型的过程。我们通常使用E或T这样的单个大写字母来表示形式泛型类型。注意点1.泛型类型必须是引用类型,不能使用int,double,char这样的基本类型来替换泛型类型。(可采用Integer,Double,Character这些封装类型来代替)八大基本类型都有其对应的封装类型。泛型类区别于普通类的地方在于可以传入一个泛型类。作用:可以在类的成员变量和方法中传入一个同名

2020-09-28 22:09:29 164

原创 JAVA-swing中的图像

Icon接口类,有以下方法int getIconHeight();int getIconWidth();void paintIcon(Component c, Graphics g, int x, int y);ImageIcon构造方法ImageIcon(byte[] imageData)ImageIcon(Image image)ImageIcon(String filename)ImageIcon(URL location) 实现Icon的从图像绘制图标。使用MediaTr

2020-09-09 16:27:37 699

原创 java-swing-布局管理器

流布局管理器流布局管理器是面板的默认布局管理器.流布局管理器决定容器中各组件的大小和位置.按钮总是位于面板的中央.当一行的空间不够时,会显示在新的一行上.边框布局管理器边框布局管理器是每个JFrame的内容窗格的默认布局管理器.流布局管理器会完全控制每个组件的位置,边框布局管理器则不然.它允许为每个组件选择一个位置,可选位置为中央,北部,南部,东部,西部.frame.add(component,BorderLayout.SOUTH);网格布局在网格布局对象的构造器中,需要指定所需的行

2020-09-08 11:41:47 473

原创 关于JAVA-Swing的图像和图标

import java.awt.*;import java.awt.font.*;import java.awt.geom.*;import java.io.File;import java.net.MalformedURLException;import java.net.URL;import javax.swing.*;public class FontTest{ public static void main(String[] args) { EventQ.

2020-09-08 10:38:02 486

原创 Java-GUI-Swing入门笔记(从界面的创建到事件监听)

GUI的概念图形用户界面(Graphical User Interface,简称 GUI,又称图形用户接口)是指采用图形方式显示的计算机操作用户界面。JAVA的GUI开发包Java提供了三个主要包做GUI开发:java.awt 包:主要提供字体/布局管理器javax.swing 包[商业开发常用]:主要提供各种组件(窗口/按钮/文本框)java.awt.event 包:事件处理,后台功能的实现。Swingswing组件可分为三大部分(1)顶层容器JFrame,JDialog(2)中间容器

2020-09-05 22:54:10 424

原创 Java的时间类

时间概念在java语言中,时间的本质是整数,现有的系统基本都是利用从1970.1.1 00:00:00 到当前时间的毫秒数进行计时,这个时间称为epoch。但是光看一个整数,我们无法清晰快速的获得一个日期,所以我们需要引入日期类.三个时间表示类在jdk1.1之后将java有关的时间操作分成了三个类.1.时间表示类Date2.时间操作类Calendar3.时间格式类DateFormatDateJava中有两个Date类.一个是java.util.Date通常情况下用它获取当前时间或构造时间

2020-09-04 22:47:19 201

原创 E. Maximize Mex(匈牙利)

传送门非常巧妙的变形题,契合了模板。对于二分图的左部,采取pip_ipi​作为点。右部,则采用cic_ici​作为点.为什么这样做呢,左右互换不行吗?其实是考虑到匈牙利是从左部的点开始dfs看有无增光路的。考虑逆推,即从最后一个询问的答案开始计算,可以知道此时二分图中的边最少。首先假定答案为0,那么无匹配边,此时我们只能加入pi<=0p_i<=0pi​<=0的点,如果dfs产生了增光路,那么ans++,同时加入pi<=ansp_i<=anspi​<=ans的点

2020-08-23 17:04:54 201

原创 博弈好题汇总

博弈题汇总C. Thanos Nim(2000)难度⭐⭐⭐传送门#include <bits/stdc++.h>using namespace std;using ll = long long;#define MAXN 2000005int t;int n,k;int boyi[MAXN];int a[MAXN];int main() { cin>>n; for(int i=1;i<=n;i++) cin>>a

2020-08-15 16:20:03 122 1

原创 状压DP题目整理

简单题D. Cunning Gena传送门#include <bits/stdc++.h> using namespace std; using ll = long long;#define MAXN 22ll dp[1<<MAXN];int x[150];ll k[150];int M[150];int d[150];int id[150];ll n,m,b;int main(){ scanf("%lld%lld%lld",&n,&

2020-08-15 13:06:35 124

原创 字符串哈希学习入门+一些练习题目

1.入门模板题传送门#include <bits/stdc++.h>using namespace std;#define MAXN 202050#define ll long longint n,m,d;typedef unsigned long long ull;//#define _DEBUGull a[MAXN];ull base=131;int prime=233317;ull mod=212370440130137957ll;ull gethash(stri

2020-08-13 22:22:24 222

原创 矩阵树定理(生成树计数)学习笔记

度数矩阵对于一个图GGG,定义其度数矩阵为D(G)D(G)D(G).D(G)D(G)D(G)是一个n∗nn*nn∗n大小的对角线矩阵.对角线上元素d(i,i)d_{(i,i)}d(i,i)​为顶点iii的度数。(非对角线上的元素d(i,j)d_{(i,j)}d(i,j)​为0)邻接矩阵对于一个图GGG,定义其临接矩阵为A(G)A(G)A(G).a(i,j)a_{(i,j)}a(i,j)​为viv_ivi​和vjv_jvj​之间邻接的边数(注意可以有重边,即大于1)Kirchoff矩阵树定理Ki

2020-08-08 11:17:41 208

原创 [典藏题记004]E. Erase Subsequences(DP)

非常nice的dp题。状态是这样的:另t=a+bt=a+bt=a+bdp[i][j]dp[i][j]dp[i][j]表示a字符串填了前iii个,bbb字符串填了前jjj个需要的最小∣s∣|s|∣s∣长度。dp[0][0]dp[0][0]dp[0][0]=0当然我们还需要枚举分界线,即我们想要的∣a∣|a|∣a∣,如此才可以确定∣b∣|b|∣b∣的前jjj个字符到底是什么。此外,为了状态转移方程:if(s[lens]==b[lena])dp[lena+1][lenb]=min(dp[lena

2020-08-04 09:05:28 131

原创 G. Columns Swaps(2-SAT)

传送门首先判断每个数是否都恰好出现了两次。如果满足上述条件,那么肯定可以经过有限次交换变成两行排列。根据2-SAT的思想进行建边。然后每次dfs(dfs过程中不会碰到同一个数)的时候判断当前点的行位置,记录dfs过程中出现在第一行和第二行中的元素个数(它们满足都在不同列),取计数较小的那个行中的列位置进行交换即可。#include<bits/stdc++.h>using namespace std;#define ll long longconst int MAXN=400005;

2020-08-02 13:52:15 199

原创 C2. Balanced Removals (Harder)(分治+思维)

传送门代码我直接模仿了tourist的…学习一下复述一遍tourist的思路吧.首先就是不考虑三维,我们只考虑一维X,显然按x坐标排序后,从左到右贪心连线即可,最多剩下一个点.现在考略二维(X,Y),那么我们要可以先把Y相同的那些点一起按一维的方式处理,显然对于每个Y,最多只会剩下一个点.现在我们得到了一堆Y不同的点,按Y排序后就又变成了一维,再按照一维的处理方式即可.三维同理,即策略是先解决低维度,再解决比它高一维的问题,依次维度上升的分治思想.#include<bits/stdc++

2020-08-01 21:12:58 168

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除