自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 unity3d战棋游戏地图点击的实现

初学Unity,c#也是刚刚开始用,如果有大佬能指出不对的地方我会非常感谢。 创建地图网格   在3d编辑器中制作的所以自己划分网格。 效果大概是这样的绿色是点击过的部分,数字和debugt线目前只是用来方便观察分割效果 首先按照这种关系创建一个EmptyObject(Map)和一个有碰撞机的平面。通过在Hierarchy窗口右键中创建出来的plane默认是带有碰撞的,我们需要他来做射线命中检测。 创建的时候最好把Plane的左下角对准Map的中心,因为网格是从Map的中心开始往右上角建立。 如果是不太

2020-10-23 23:42:59 2425

原创 GAME101作业3

  作业三的第一二步是在作业2的基础上添加几个插值 这一段代码的解释可以看传送门 叫做透视矫正插值。 float Z = 1.0 / (alpha / v[0].w() + beta / v[1].w() + gamma / v[2].w()); float zp = alpha * v[0].z() / v[0].w() + beta * v[1].z() / v[1].w() + gamma * v[2].z() / v[2].w(); zp *= Z; 但是在作业中对w值做了处理,将其变成了0。w本

2020-09-06 21:15:00 864

原创 Bresenham直线算法

参考了wiki,不得不说wiki给出的伪代码实现非常简洁,包含了所有情况的直线 void Rasterizer::DrawLine(int x0, int y0, int x1, int y1, Color& c) { //处理斜率大于1的情况 bool steep = abs(y1 - y0) > abs(x1 - x0); if (steep) { swap(x1, y1); swap(x0, y0); } //处理从右向左画的情况 if (x0 > x1)

2020-09-06 10:35:21 365

原创 虚幻4实现自己移动的AI人物

自己用作记录,如果想学习的直接去看这篇文章吧。  设置好导航体积覆盖整个关卡,然后创建一个aicontroller类 用到如下几个api。 GetAllActorsOfClass查找关卡中所有的目标点 MoveToActor移动到某一个目标点 OnMoveCompleted移动完成会自动调用 // Fill out your copyright notice in the Description page of Project Settings. #include "MyAIController.

2020-08-28 11:17:32 1410

原创 虚幻引擎射线命中判断的具体实现

记录一下免得忘太快了 FVector StartPoint = FirstPersonCameraComponent->GetComponentLocation(); FVector EndPoint = StartPoint + FirstPersonCameraComponent->GetForwardVector()*200000.f; //给碰撞方法添加条件的结构体 FCollisionQueryParams* TraceParam = new FCollisionQueryPa

2020-08-26 20:49:31 680

原创 现代计算机图形学入门作业二

博客仅用于个人记录学习过程中的想法和遇到的错误,可能不适合学习目的的阅读。 所有图片都来自现代计算机图形学入门-闫令琪 第一部分  要求是把两个三角形栅格化,填写一个判断点是否再三角形内部的函数和一个光栅化函数。  判断点在三角形内部只要用向量叉乘就能实现 判断点 static bool insideTriangle(float x, float y, const Vector3f* _v) { // TODO : Implement this function to check if the

2020-08-22 11:46:02 729 4

原创 现代计算机图形学入门作业一

博客仅用于个人记录学习历程,可能不适合他人阅读。 十分感谢闫大佬的视频,让我能从0开始学习图形学 所有图片都来自现代计算机图形学入门-闫令琪 第一次作业是填充模型变换和投影变换矩阵,按照课程视频的来就很简单。 要注意作业框架中的相机已经规定了相机看的方向是-z,上方向是y。 正交投影  正交投影是最好理解的,把整个场景移动到0,0,0的位置,随后压缩成一个222的立方体,再进行光栅化就得到了需要的画面,作业中不需要把物体移动到0,0,0位置,因为作业的框架是把相机永远置于0,0,0,物品随之移动保证相对

2020-08-21 22:34:00 1120 5

原创 P2731

欧拉回路逐步插入回路法(Hierholzer 算法) 题目要求字典序最小,所以找最小的起点,注意优先选择奇数度的点为起点。 #include <iostream> #include <stack> #include <algorithm> #include <vector> using namespace std; stack<int> ans; int head[510]; int Enum = 0; int deg[510]; struct

2020-05-22 09:48:27 309

原创 poj4738

tarjan求割边模板题 注意处理重边,有重边必然不是桥。 图一开始不一定连通 #include <bits/stdc++.h> using namespace std; #define MAXN 1010 #define INF 0x3f3f3f int guards[MAXN][MAXN]; int low[MAXN], dfn[MAXN], dfs_clock; vector<int> G[MAXN]; int father[MAXN]; int ans; bool flag

2020-05-22 09:25:32 161

原创 POJ1144 tarjan找割点

POJ1144 Tarjan找割点 就是一道模板题,但是数据比洛谷上求割点的模板题要强, 先贴上我一开始写错的部分。 if((node == stnode&&low[*c]>dep[node]&&graph[node].size()>1)|| (node!=stnode&&low[*c] >= dep[node])) ans.insert(node); 当时是认为对于根节点只要有多于一个邻边的话,判断每一个相

2020-05-15 10:53:03 291

原创 南京网络赛,A The beautiful values of the palace

一开始想到二维前缀和,但是看了数据范围肯定是爆空间的。但是实际用到的点其实很少,所以就把所有的点先读进来,然后离散化一下,在对所有点按照先x后y的顺序排序,再依次以y作为位置放到树状数组里面,然后就可以处理处所有的查询 #include <iostream> #include <cstdio> #include <cmath> ...

2019-09-12 08:07:12 177

原创 POJ 2777 线段树区间覆盖

传送门 这道题需要在线段树的节点tree[index].v存储该节点所代表的范围内的颜色状态。v=-1表示有多种颜色,v > 0表示该区间内范围内都是v这种颜色,这样修改是比较简单的。查询操作的话需要每次查询开始前清空一次vis (标记某个颜色是否已经数过) cnt记录该查询范围内有几种颜色。所以只要找tree[index].v大于0的节点就可以了。 附上代码: #...

2019-09-08 16:44:22 271

原创 HDU 4417 Super Mario

这是一道比较裸的主席树,(但是我却调了好久。。。)题目意思是给一段区间,每一个位置上有一个砖头,每个砖头有不同的高度,马里奥最高能跳h的高度,问某个区间有几个砖头是可以跳的。 所以只要离散化一下, 然后建出主席树,两个主席树相减,返回小于等于h高度的砖头有几个就可以了。需要注意的是upper_bound返回的是最后一个大于指定值的位置,所以减一就是最后一个小于等于指定值...

2019-09-05 11:59:46 138

原创 E. Physical Education Lessons

Physical Education Lessons 动态开点线段树 #include<bits/stdc++.h> using namespace std; #define maxn 15001000 int tot = 1; int tree[maxn]; int ls[maxn], rs[maxn]; int mark[maxn]; int n, m; inlin...

2019-08-06 20:36:58 550

原创 第一次用java写算法——Manacher

尝试用Java写一些算法,之前一直写的一直是很简单的输入输出。 import java.util.*; public class Main { public int Manacher(String a) { int mx = 0, id = 0; String t = "$#"; for(int i = 0; i < a....

2019-05-27 00:24:17 144

原创 DNA sequence HDU 1560

写了有段时间搜索题目,但是第一次碰到迭代深搜。 这是题目链接 题目的意思大概就是给你几个字符串让后让你求包含所有这几个字符串的最短字符串。不要求连续只要相对位置不变就可以 这道题我没有用广搜写过,好像是会MLT。 思路就是对照着“ACGT”,不一定要这个只要包含这四个字母的序列,用一个q数组存每一个字符串当前还没放进去的第一位的位置 然后依次拿输入中的几个字符串的第一位没有被放进去...

2019-04-26 10:19:31 203

原创 [POJ-1456](贪心+并查集)

题目链接 超市里有N个商品. 第i个商品必须在保质期(第di天)之前卖掉, 若卖掉可让超市获得pi的利润. 每天只能卖一个商品. 现在你要让超市获得最大的利润. 多组数据. 每组数据第一行为一个整数N (0 <= N <= 10000), 即超市的商品数目 之后N行各有两个整数, 第i行为 pi, di (1 <= pi, di <= 10000) 对于每一组数据...

2019-04-22 16:13:01 333 1

原创 POJ-1733Parity game做题记录

这是题目链接 这个博客是写给自己看的,加深一下对题目的理解,不太具有参考价值 这道题选择用map来缩小存储的范围,也可以用HASH; 题目思路和HDU3038很相似 以靠后的数字作为根节点来构建一个并查集,节点之间的关系有两种 1.a b even : v[a - 1] = 0;表示a到b之间有偶数个1; ...

2019-04-22 15:48:21 191

原创 杭电1963 -完全背包

        本金和利息都是1000的倍数所以可以除以1000来压缩数组的大小,这道题算简单,典型的完全背包 用了三重循环,从第一种债券开始看起,背包大小从最小也就是当前选的债券的值一直增加到当前本金的值,填入每个位置可获得的最大利息。状态转移方程就是dp[j] = max(dp[j], dp[j - bonds[k]/1000] + interting[k]);就很容易写出来了 记得每一年...

2018-10-16 16:33:19 320

原创 Catch That Cow

用queue写的广搜   #include&lt;iostream&gt; #include&lt;cstring&gt; #include&lt;algorithm&gt; #include&lt;queue&gt; using namespace std; int N, K; //农夫和牛的位置 const int MAXN = 100000; int visited[MAXN + 1...

2018-09-20 09:19:59 190

原创 2815:城堡问题——深搜

代码是模仿郭炜老师的 MOOC #include&lt;iostream&gt; #include&lt;cmath&gt; #include&lt;algorithm&gt; #include&lt;cstring&gt; using namespace std; int rooms[60][60]; //房间有几堵墙 int color[60][60];//房间染色 int maxro...

2018-09-19 08:39:00 320

原创 贪心算法——poj Stall reservations

 优先队列没有学好所以程序有些地方写的比较混乱, sort和优先队列都要用的时候感觉还是写运算符重载代码更加简洁。         思想就是把牛按照挤奶时间从小到大排序,从最早挤奶的牛开始,寻找可放置的畜栏,放入后修改畜栏的挤奶结束时间。畜栏存入优先队列按照结束时间从小到大排序,这样在给牛查找畜栏的时候只要检查第一个畜栏是否可以放入即可。   #include &lt;iostream...

2018-08-26 10:40:54 268

原创 动态规划——最长公共子序列

#include &lt;iostream&gt; #include&lt;string&gt; #include&lt;algorithm&gt; using namespace std; string s1; string s2; int mlen[1000][1000]; int main() { while(cin &gt;&gt; s1) { ...

2018-08-22 16:31:11 135

原创 简单动态规划——最大上升子序列

 题目都是MOOC网视频里的 视频连接没有订阅课程应该是看不了的。 直接贴下自己写的代码。 #include &lt;iostream&gt; #include&lt;algorithm&gt; using namespace std; int main() { int a[1000]; int maxlen[1000]; int n; while(ci...

2018-08-20 16:08:06 256

原创 简单动态规划问题——数字三角形

                    7              3             8        8             1               0 2             7               4             4 寻求从顶部到底部的一个路径,使得路径上的数字的和最大。不必给出具体路径。 三角形行数大于1小于100 数字为0~99...

2018-08-20 16:04:32 256

原创 简单算法—筛法求素数

  筛法求素数的想法就是任意合数都可以表示为素数的积,所以我们找到一个素数便可以筛掉所有他的倍数,这样找素数的范围不断的缩小,最后剩下的就都是素数。   #include &lt;iostream&gt; #include&lt;cstring&gt; using namespace std; const int n = 100; void prime(int a[]) { fo...

2018-08-19 21:24:58 330

原创 快速排序

MOOC上学的快速排序所以代码和视频的有些相似 MOOC         自己对快速排序的理解大概就是,先任意选择一个数然后把比它大的和比他小的分别放到两侧。然后分别对两边再进行上述操作,知道分到只剩一个数再返回。 贴上代码  #include &lt;iostream&gt; using namespace std; void swapp(int &amp;a, int &amp;...

2018-08-19 21:04:53 185

原创 康托展开

看着这篇文章自己尝试的写了康托展开https://blog.csdn.net/update7/article/details/56681789     #include &lt;iostream&gt; using namespace std; int main() { int n; int k; int a[21] = {1,1}; int ans =...

2018-08-19 15:39:21 192

原创 MOOC 学习归并排序求逆序数

   基础的归并排序 #include &lt;iostream&gt; #include&lt;cstring&gt; using namespace std; const int n = 10000; void merge(int a[], int s, int e, int m, int temp[]) //排序部分 { int p1 = s, p2 = m + 1; ...

2018-08-19 15:34:29 272

空空如也

空空如也

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

TA关注的人

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