自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 图形学总结

图形学考试总结

2022-06-18 17:40:56 555 1

原创 ch3 Linux shell编程基础

重点内容:1. 条件测试2. shell脚本执行方式3. grep set awp 文本处理命令(要知道实现了什么功能)

2022-06-18 11:04:07 135

原创 ch2 Linux命令基础

重点:用户 文件 重定向 I/O流主要内容:

2022-06-17 20:20:06 285

原创 Linux系统编程5 进程通信

主要内容:IPC通信(消息队列 共享内存 信号量)无名管道:pipe有名管道:FIFO管道为半双工。管道只能在共同祖先的进程间使用。管道也是文件。命名管道(FIFO)pipe函数参数filedes[2]为一个数组,用来保存函数返回的两个文件描述符。filedes[0]视为管道的读端。filedes[1]视为管道的写端。单个进程使用管道如下:父子进程使用管道如下:P36............

2022-06-17 15:30:27 114

原创 Linux系统编程4 线程编程

主要内容:一个进程创建的多个线程共享进程的地址空间。创建子进程是复制的父进程的地址空间(进程与进程间是独立的)同一程序中的所有线程都会执行相同的程序,且共享内存的内存段,包括数据段,堆区。(进程的栈区对线程不共享,每个线程都拥有属于自己的栈区)........................

2022-06-16 22:01:51 253

原创 编译原理 LR分析

LR分析过程是一种规范规约过程。LR(K)文法都是无二义性的。LR分析器的组成:可归前缀:在分析过程中每次采取规约动作之前符号栈中的内容,把规范句型的这种前部称为可归前缀。活前缀:把在规范句型中形成可归前缀之前包括可归前缀在内的所有前缀都称为活前缀。LR(0)项目集规范族构造:......

2022-06-14 21:27:39 516

原创 编译原理 理论知识点

机器语言:计算机可以直接执行的代码形式的指令系统称为机器语言。翻译程序:源程序 --- 目标程序汇编程序:汇编语言 --- 机器语言编译程序:高级语言 --- 汇编语言、机器语言高级语言的执行方式:编译执行 解释执行编译执行:编译-运行 编译-汇编-执行解释执行:编译执行和解释执行的区别是:是否生成目标代码编译过程划分为6个阶段:词法分析、语法分析、语义分析、中间代码生成、代码优化、目标代码生成。一个完整的编译程序还包括:表格管理程序 、出错处理程序。编译程序各阶段的任务:词法分析:接受源程序,识别单词及其

2022-06-12 15:39:22 1755

原创 Linux系统编程3 进程编程

主要内容:进程:一个其中运行着一个或多个线程的地址空间和这些线程所需要的系统资源。进程终止的五种方式:正常终止:非正常终止主要内容:会话组,进程组,进程的关系:PID为进程ID;PPID为父进程ID;PGID为进程组ID;SID为会话组ID进程组的组长ID为此进程组的PGID会话组的组长ID为该会话组的SIDfork函数用于创建一个子进程。fork()后,父子进程分别得到fork()函数返回的一个值。fork函数执行失败,父进程得到返回值-1fork函数执行成功,则:exec()并不创

2022-06-09 21:58:41 107

原创 CSDN打印文章为PDF

按F12+Fn在控制台中输入如下代码,回车即可:参数设置如图:即可打印为pdf

2022-06-09 19:42:10 76

原创 Linux系统编程2 Linux文件 I/O

主要内容:主要内容:stat()得到一个与Path所指定的文件有关的信息结构,并保存在第二个参数buf中。fstat()以将文件打开之后的文件描述符作为参数,功能与stat()函数一致。lstat()中path指向的文件是一个符号链接,返回的是符号链接有关信息,而不是由该符号链接引用的文件的信息。buf是一个结构体指针,指向一个结构体,该结构体基本形式如上方 struct stat。函数成功返回0,失败返回-1。主要内容:目录文件的权限说明:读:允许读目录,获得该目录中所有文件名的列表。在目

2022-06-07 10:20:03 304

原创 Linux 系统编程1

GCC包含了预处理器、编译器、汇编器、链接器等组件。输入文件的类型和传递给gcc的参数决定了gcc调用具体哪些组件。一般情况下,C程序的编译过程是:使用参数 -Egcc -E -o gcctest.i gcctest.c使用wc命令比较预处理后的文件与源文件,可以看到两个文件的差异。-O0 -O1 -O2 -O3在结果中,-O3不一定是优化最多的。举例:对于自定义头文件 my.h,不能使用 #include 修改方法如下两种:静态库和动态库静态库的生成与使用动态库的......

2022-06-02 21:14:30 95

原创 图形学 Lecture7 光线追踪

关键:Whitted-Style Ray Tracing光线追踪和光栅化是两个不同的成像方式。在于光栅化的问题:

2022-06-01 19:36:32 1060 1

原创 图形学 Lecture6 阴影 Shadow mapping

光栅化里面是怎样生成阴影的?着色是一种局部的行为,只考虑自己,光源,摄像机,没有考虑其他物体的影响(如遮挡)。所以 如何解决此遮挡等问题造成的阴影呢?只要使用了shadow mapping,在生成阴影的这一步,是不需要知道场景的几何信息的。shadow mapping会产生走样点光源下如何生成阴影?shadow mapping的两步操作:若上面两个深度一样,则点不在阴影中。若第一个深度小于第二个深度,则光源看不到这个点,则此点在阴影中。分两步,做两次不同的投影,第一次,从光源看这个场景,记录能

2022-05-31 22:12:57 316

原创 图形学 Lecture5 几何 曲线和曲面

几何的例子,不同几何的表示方法。

2022-05-30 11:11:54 514

原创 图形学 Lecture4 着色

主要内容:光照、着色、图形管线

2022-05-26 17:43:44 444

原创 图形学 Lecture3 光栅化(三角形)*

上节课的回顾MVP 完成之后,会得到-1到1的立方体......透视投影的两个属性长宽比 垂直可视角度forvY (水平可视角度)定义一个视锥,只需定义一个垂直可视角度和一个宽高比,就可以得出远近、左右、上下。光栅化概念:将立方体画在屏幕上屏幕:可描述为二维数组,每个元素都是一个像素。像素:可表示灰度,划分为256个等级,0表示黑,255表示白。像素坐标:如图中蓝色像素坐标为(2,1)【左下角】像素中心:(2.5,1.5)(x+0.5,y+0.5)...

2022-05-25 20:23:38 275

原创 图形学 Lecture 2 Transformation(变换)

主要内容:二维空间的变换:旋转 缩放 切变 齐次坐标的概念 把不同变换组合到一起,形成新的变换 三维空间中的变换变换:模型变换 视图变换二维变换线性变换缩放变换 反射变换切变旋转变换旋转(默认:绕原点 且 逆时针方向旋转)总结:线性变换平移变换不是线性变换若能写成如下的形式,则为线性变换,上述的几种变换,都是线性变换:齐次坐标 引进齐次坐标:平移变换的特殊性平移变换 ...

2022-05-22 18:03:27 580 2

原创 图形学 Lecture1--概述

课程内容1.光栅化(shader)2.曲线和曲面3.光线追踪4.动画与模拟Rasterization-光栅化概念:将三维空间的形体显示在屏幕上。曲线和曲面如何表示曲线,曲面?由简单曲面表示更复杂的曲面?光线追踪生成真实的、质量更高的画面。(缺点:速度慢)实时光线追踪。(效果好,速度快)动画与模拟(仿真)如:模仿一个布的掉落过程Model–>image 图形学image–>Model 计算机视觉...

2022-05-21 18:29:35 186

原创 L2-019 悄悄关注 (25 分)

这个25分的题也算是比较简单的了…里面主要是应用到了map数组记录某个人是否在关注列表中。#include <bits/stdc++.h>using namespace std;int n,m;map<string,int> mp;struct users{ string name; int num;}user[10010];bool cmp(users a,users b){ return a.name<b.name;}int main(){ c

2022-04-22 22:00:51 213

原创 L2-016 愿天下有情人都是失散多年的兄妹 (25 分)

参考博客这个题主要是vector数组+dfs#include <bits/stdc++.h>using namespace std;int n;vector<int> vec[100010];char s[100010];int vis[100010];int flag;void dfs(int sou,int deep){ if(deep>=5) return; for(int i=0;i<vec[sou].size();++i){ if(

2022-04-22 21:37:12 310

原创 L2-017 人以群分 (25 分)

嘶,这个题竟然是25分的题???#include <bits/stdc++.h>using namespace std;int n;int a[100010];int main(){ cin>>n; for(int i=0;i<n;++i){ cin>>a[i]; } sort(a,a+n); if(n%2==0){ int sum1=0,sum2=0; for(int i=0;i<n/2;++i){ sum1+=a[i

2022-04-22 21:34:32 154

原创 L2-038 病毒溯源 (25 分)

用两种方法来做:第一种是邻接表第二种是vector数组邻接表做法:#include <iostream>using namespace std;int n;int vis[10010];int head[10010];int cnt;struct list{ int to; int next;}e[200010];void add_edge(int u,int v){ e[++cnt].to=v; e[cnt].next=head[u]; head[u]=cnt

2022-04-21 15:08:12 223

原创 L2-037 包装机 (25 分)

···stack:stack sta;sta.push(2);sta.top();sta.pop();sta.size();//读取栈的大小 返回类型是Int int size=sta.size();sta.empty();//为空的时候返回true,不为空返回的是false···queue:queue q;q.push(2);q.front();//读取队列头q.pop();sta.size();//读取栈的大小 返回类型是Int int size=sta.size();.

2022-04-21 10:30:54 201

原创 最小生成树 P2872 Building Roads S

这道题是最小生成树的简单应用#include <iostream>#include <cmath>#include <algorithm>#include <cstdio>using namespace std;int n,m;double ans;int cnt;int x[1010],y[1010];int f[1010];struct node{ int u; int v; double w;}e[2000020];dou

2022-04-08 19:27:45 186

原创 并查集-反集 P1525 关押罪犯

首先对权值进行排序;再结合敌人的敌人和自己在一个监狱的规律合并。当查找时发现其中两个罪犯不可避免地碰撞到一起时,只能将其输出并结束。#include <iostream>#include <algorithm>using namespace std;int n,m;int f[40040];struct node{ int u; int v; int w;}e[100010];int find(int x){ if(f[x]==x) return x;

2022-04-08 15:56:32 98

原创 反集--P1892 团伙

敌人的敌人是朋友–反集思想即如果a和b是敌人,合并n+b和a,n+a和b 如果c和a是敌人,合并n+c和a,n+a和c 那么b和c就并在一起了这样就符合了题目敌人的敌人是朋友的规则#include <iostream>using namespace std;int n,m;int f[1010];int find(int x){ if(f[x]==x) return x; return f[x]=find(f[x]);}int main() { cin&g

2022-04-08 15:04:48 307

原创 线段树 应用--P1198 最大数

之前的博客里写的线段树模板,每个节点都代表着这个区间的和。此题中,每个节点代表的是对应区间的最大值。而且此题不需要构建线段树,只需要查询和更新操作即可。题目链接#include <iostream>using namespace std;typedef long long ll;long long MAXn=-9e18;ll m,p,cnt,t;ll tree[800080];void add(int cur,int l,int r,int pos,int k){ if(l

2022-04-07 21:48:33 225

原创 线段树 模板

题目链接代码:#include <iostream>using namespace std;typedef long long ll;ll n,m,ans;ll tree[400040],lazy[400040];ll f[100010];void build_tree(ll cur,ll l,ll r){ if(l==r){ tree[cur]=f[l]; return; } ll mid=(l+r)/2; build_tree(cur*2,l,mid); b

2022-04-07 16:07:45 189

原创 洛谷 单源最短路径(用堆优化的Dijkstra)

记录一个最短路的题 这个是用堆优化的Dijkstra算法Dijkstra算法的时间复杂度是O(n*n) n是1e5的话 就会超时,优化后时间复杂度为O((n+m)log n)原题链接(参考第一篇题解)//最短路 #include <iostream>#include <queue>using namespace std;const int INF=0x3f3f3f3f; int n,m,s;int dis[100010];//记录所有点与起点的距离,初始化为INF

2022-04-04 18:43:57 328

原创 字符串 string的使用

整理一下基础的字符串知识点:s.insert(pos,s2) --在s下标维pos处插入字符串s2s.substr(pos,len) --返回一个string,为s中下标pos起的len个字符串s.replace(pos,len,s2) --删除s中下标为pos开始的len个字符,并在pos处插入s2s.find(s2,pos) --从pos位置起查找s2第一次出现的位置,查找不到返回string::nposatoi(s.c_str()) --将字符串 s 转

2022-03-29 20:00:08 122

原创 天梯赛 L2-红色警报

并查集思想参考博客//并查集#include <iostream>using namespace std;int n,m;int f[510];int dest[510];//记录此城市是否被攻占 int find(int x){ if(f[x]==x) return x; return f[x]=find(f[x]);}void init(){ for(int i=0;i<510;++i) f[i]=i;}struct nodes{ int a; i

2022-03-29 15:06:53 305

原创 天梯赛 L2-排座位

这是一个比较简单的并查集的题目//并查集#include <iostream>using namespace std;int dd[110][110];//记录是否是敌对关系int f[110];//并查集记录朋友关系int find(int x){ if(f[x]==x) return x; return f[x]=find(f[x]);}int n,m,k;int a,b,c;int main(){ cin>>n>>m>>k;

2022-03-28 18:12:36 83

原创 天梯赛 L2-抢红包

这个题比较简单 用一个结构体就可以解决了#include <bits/stdc++.h>using namespace std;struct list1{ int pos; int money; int total;}person[10010];int n,k;int num,p;bool cmp(list1 a,list1 b){ if(a.money==b.money && a.total==b.total) return a.pos<b.p

2022-03-28 17:50:54 77

原创 天梯赛 L2家庭房产

这个题看起来比较复杂,但其实就只用了并查集的知识而已。#include <bits/stdc++.h>using namespace std;int n,self,fa,ma,num,son;int total[10000],area[10000];int ans;int f[10000];int s[10000];struct house{ int b; int Min; int cnt; double htotal; double harea;}family[10

2022-03-28 16:03:01 129

原创 天梯赛 邻接表的使用习题+天梯赛 L2-病毒溯源另一种解法

之前用vector数组代替邻接表做了几道题 哲哲打游戏和病毒溯源 但是最近遇到一个题目,是不能用普通的vector数组来替代邻接表的,因为它加上了权重,因此 还是得学习一下邻接表的使用。用邻接表的方法再做一下这几道题。...

2022-03-26 11:31:48 351

原创 天梯赛 集合相似度

记录一下新学的set数组参考例:set st;插入: st.insert(2);访问:set::iterator it;for(it=st.begin();it!=st.end();it++){printf("%d",*it);}查找:st.find(2);找不到 st.find(2)==st.end()删除:erase():st.erase(st.find(2));//删除元素2it=st.find(2);st.erase(it,st.end());大小:st.size

2022-03-22 16:46:05 242

原创 天梯赛 月饼

注意库存不一定是整数,定义成double类型就好了!/*4.16 4.8 4.5*/#include <bits/stdc++.h>using namespace std;const int MAXn=1000+10;int n,d;struct goods{ double kc; double price; double one;}good[MAXn];bool cmp(goods a,goods b){ return a.one>b.one;}i

2022-03-21 19:28:26 54

原创 天梯赛 链表去重

参考博客其实就是用了一个结构体#include <bits/stdc++.h>using namespace std;const int MAXn=100000+10;struct node{ int from; int key; int to;}beg[MAXn],yes[MAXn],no[MAXn];int first,n,vis[MAXn];int main(){ cin>>first>>n; int a,b,c,l1=0,l2=0;

2022-03-21 18:51:18 1314

原创 天梯赛 紧急救援

dijkstra + DFS参考博客#include <iostream>#include <bits/stdc++.h>using namespace std;const int INF=0x3f3f3f3f;int now,n,m,s,d,num[505],dis[505][505];int vis[505],minlen,ans[505];//与原点的最小距离 int path[505],temp[505],cont,maxnum,tt;void dijk(i

2022-03-21 17:02:39 183

原创 天梯赛 哲哲打游戏

又是一个vector数组#include <iostream> #include <bits/stdc++.h>using namespace std;const int MAXn=100000+10;int n,m,proc[MAXn],pos[MAXn];vector <int> play[MAXn];int main(){ scanf("%d%d",&n,&m); for(int i=1;i<=n;++i){ int k

2022-03-21 14:55:53 5020

空空如也

空空如也

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

TA关注的人

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