- 博客(36)
- 收藏
- 关注
原创 Unity基础光照(入门精要6)
标准光照模型标准光照模型只关心直接光照(直接从光源照射到物体表面后。经物体表面一次反射直接进入摄像机的光线)我们可以将进入到摄像机的光线分为4个部分,分别是自发光 cemissivec_{emissive}cemissive高光反射cspecularc_{specular}cspecular漫反射cdiffusec_{diffuse}cdiffuse环境光cambientc_{ambient}cambient环境光在标准光照模型中,我们可以通过一个全局变量来近似模拟环境光,场景中
2022-04-24 14:29:45
1783
原创 数组大顶堆实现优先队列
面试时遇到,忘了怎么写了,复盘之后记录一下#include<iostream>using namespace std;int heap[100];int size;int a[100]={1,2,3,4,5};void heapify(int now){ int nxt=now; if((now<<1)<=size&&heap[now]<heap[now<<1]) { swap(heap[
2022-02-15 19:10:02
438
原创 在epoll et模式 非阻塞io下的一个问题
服务端是用epoll et模式写的echo服务器 ,更改了accept函数返回的fd为NONBLOCK模式下文代码是客户端的一部分接收和发送代码乍一看没有什么问题,但是在运行时发生了意料之外的事while(1) { printf("Please input: "); scanf("%s", buff); int ss=strlen(buff); int ret= send(sockfd, buff,ss, 0);
2021-10-07 14:57:23
81
原创 使用共用体判断本机大小端
#include<bits/stdc++.h>using namespace std;void byteorder(){ union { short value; char union_bytes[sizeof(short)]; }test; test.value=0x0102; if((test.union_bytes[0]==1)&&(test.union_bytes[1]==2)) {
2021-08-25 20:32:52
81
原创 ABC202 E - Count Descendants题目解析
零简洁版题目:给你一棵树,q次询问;每次询问输入两个数,u,d;要求计算出在树的第d层并且是节点u的子孙节点的节点个数一、知识点dfs序二分二、分析通过题目可以容易地看出,要从树的第d层寻找合法答案,那么求节点所在层数可以用dfs/bfs求出不好解决的地方在于如何快速确定在第d层的节点,有哪些的祖先是u可以想到的方法是倍增去找,但对于本题来说显然不够高效有一种更好的方法,就是维护每个节点进出的时间戳(即先序in后序out)可以容易地想到,对于一对节点u,v,当u为v的祖先节点时,
2021-05-28 21:20:08
300
原创 KM算法整理
#include<bits/stdc++.h>using namespace std;int a[maxn][maxn];///二分图左右点间边权int ly[maxn];///右点顶标int lx[maxn];///左点顶标int match[maxn];///左点匹配的右点编号bool visx[maxn];///左点标记bool visy[maxn];///右点标记int dfs(int x){ visx[x]=1; for(int i=1,i<
2021-04-15 19:07:44
167
原创 匈牙利算法整理
用途求二分图的最大匹配求二分图最小点覆盖集(=最大匹配数)求二分图最小边覆盖集(=n-最大匹配数)模板int a[maxn][maxn];///二分图中左右点集之间的关系bool vis[maxn];///当前左点访问过的右点int match[maxn];///右点已匹配的左点int dfs(int x)///匹配当前左点{ for(int i=1,i<=n;i++)///遍历所有右点 { if(a[x][i]&&!vis[i]
2021-03-20 09:51:25
80
原创 NEAUOJ2021年寒假培训阶段考核赛二 C 坤姐姐的等式
题目链接:https://oj.neauacm.cn/problem.php?cid=1100&pid=2简洁版题目:求1a=1x+1y\displaystyle\frac{1}{a}=\frac{1}{x}+ \frac{1}{y}a1=x1+y1的整数对{x,y}\{x,y\}{x,y}的数量1≤a≤10121\leq a\leq10^{12}1≤a≤1012一、 知识点数论唯一分解定理乘法原理二、分析将原式转化为(x−a)(y−a)=a2(x,y≠0)\displa
2021-03-03 17:33:36
906
1
原创 欧拉筛法求欧拉函数
#include<bits/stdc++.h>using namespace std;const int maxn=100005;int eular[maxn],prime[maxn],top=0;bool isprime[maxn];void get_eular(){ eular[1]=1; for (int i=2; i<=maxn; i++) { if (!isprime[i])//i为素数 {
2021-03-02 19:35:38
212
原创 单调栈寻找右边第一个大于的数
#include<bits/stdc++.h>using namespace std;int a[1000];stack<int> st;vector<int> ve;int main(){ int n; scanf("%d",&n); for(int i=1;i<=n;i++) scanf("%d",&a[i]); for(int i=n;i>=1;i--) { whil
2020-08-29 22:21:30
367
原创 御用二分模板
查找大于等于/大于key的第一个元素(最大值最小)int l=1,r=n;while(l<r){ int mid=l+r>>1; if(a[mid]>key) r=mid; else l=mid+1;}return l;查找小于等于/小于key的最后一个元素(最小值最大)int l=1,r=n;while(l<r){ int mid=l+r+1>>1; if(a[mid]<key) l=mid; else r=
2020-08-19 10:07:51
82
原创 Codeforces Round #646 (Div. 2) B. Subsequence Hate
题目链接通过冷静分析,让其没有01交替子序列的方法就是一边都是0,另一边都是1可以枚举01交界点,每次记录两边0,1数量,维护最小值即可数据水,复杂度O(n2)O(n^2)O(n2)即可过#include<bits/stdc++.h>using namespace std;char s[1005];int main(){ int _; scanf("%d",&_); while(_--) { scanf("%s",s);
2020-08-09 14:49:21
88
原创 找规律:寻找循环节
bool flag;for(int i=1;;i++)///枚举循环节 { flag=1; for(int j=1;j<=1000;j++) { for(int k=j;k<=1000;k+=i)///k每次增加1循环节 { if(a[j]!=a[k]) { flag=0;
2020-08-06 09:50:33
344
原创 神奇的ST表-O(1)复杂度求静态区间最大值
P3685题目链接对于ST表st数组st[i][j]st[ i ][ j ]st[i][j]中,iii表示从第几位数开始 jjj表示从iii开始的第2j2^j2j个数#include<bits/stdc++.h>using namespace std;typedef long long ll;inline int read()///快读{ int x=0,f=1;char ch=getchar(); while (!isdigit(ch)){if (ch=='-') f=-1
2020-07-30 13:53:04
344
原创 循环教案
循环一、什么是循环,为什么需要循环引例1-计算数位二、循环的种类1、while循环2、for循环一、什么是循环,为什么需要循环引例1-计算数位给定一个正整数29835797775515656,计算该数是几位数可以从右边开始划(29835797775515656/10)划完一个数后结果加一(cnt++)通过以前的知识可以写出代码#include<stdio.h>long long a=29835797775515656;int cnt=0;int main(){ if
2020-07-24 18:40:29
282
原创 找一个数的质因数
#include<bits/stdc++.h>using namespace std;map<int,int> mp;void get(int n)///寻找n的质因数{ for(int i=2;i<=n;i++) { while(n%i==0) { mp[i]++; n/=i; } }}int main(){ get(10);
2020-07-22 10:22:43
232
原创 Codeforces Round #656 (Div. 3) E. Directing Edges
题目传送门比赛的时候没有想出来要怎么做,隐隐约约一种感觉,要是有向边不成环的话,就一定会是YES但是具体没想到之后应该怎么去加边赛后看cf题解用到了拓扑排序,当时也没明白他俩有什么关联想了一段时间,加上手动画了一下图发现对于拓扑排序的结果,如果添加顺序较后的节点到顺序较前的节点的有向边,必然会构成环如果顺着排序顺序建边则不会构成环所以解体只需按照以下步骤进行存图时存两个图(一个只有有向边即‘1’,一个只有双向边即‘0’)对有向图进行拓扑排序(若排序结果节点数少于n,则说明有环,输出NO)
2020-07-19 11:24:28
219
原创 P1119 灾后重建(Floyd的妙用)
luogu P1119 灾后重建这道题考的是Floyd的妙用,也可以说是对Floyd内涵的考察总所周知,Floyd是一个复杂度为O(n3)O(n^3)O(n3)的算法,也就是说在限时1s1s1s的情况下数据非常弱才会用到他但是该算法的dp思想正是解题的关键每当需要更新距离的时候,只需拿出用来充当松弛操作中转点的结点,进行一次松弛操作就维护了一次最小距离当然在这道题中要注意,当两节点直接相连时,还需特判是否已修建完成#include<bits/stdc++.h>using nam.
2020-07-16 21:46:52
138
原创 P5836 [USACO19DEC]Milk Visits S
luogu P5836有题解说是lca模板题,奈何本蒟蒻还未掌握lca,但是用并查集来做感觉非常巧妙因为只有两种奶牛,可以看成两种颜色,把所有结点分成这两个点集。之后列举起点与终点时,判断两点是否属于一个点集如果不属于同一个点集则两点之间路径必然两种都有如果属于同一个点集则只有一种颜色,那只需比较一下偏好颜色是否是该点集的颜色#include<bits/stdc++.h>using namespace std;char s[100005];int fa[100005]
2020-07-16 14:40:37
216
转载 关于lower_bound( )和upper_bound( )的常见用法(转载)
lower_bound( )和upper_bound( )都是利用二分查找的方法在一个排好序的数组中进行查找的。在从小到大的排序数组中,lower_bound( begin,end,num):从数组的begin位置到end-1位置二分查找第一个大于或等于num的数字,找到返回该数字的地址,不存在则返回end。通过返回的地址减去起始地址begin,得到找到数字在数组中的下标。upper_bound( begin,end,num):从数组的begin位置到end-1位置二分查找第一个大于num的数字,找到
2020-07-09 21:27:04
182
原创 kmp初阶模板整理
///getnext函数void getnext(){ int l=strlen(s2);///s2为模式串 int i=0,j=-1; next[0]=-1; while(i<l) { if(j==-1||s2[i]==s2[j]) next[++i]=++j; else j=next[j]; }}///主函数部分int main(){ scanf("%s%s",s1,s2
2020-07-05 21:35:53
149
原创 最短路之dijkstra及其堆优化
解决问题dijkstra算法用来解决单源最短路径问题通常来说就是求解一个图中两节点的最短路径(只适用于正权边)算法思想该算法的朴素想法是松弛的思想即若dis ( 1->3 ) = 7dis ( 1->2 ) = 1dis ( 2->3 ) = 1则节点2的存在就可以对1,3松弛在松弛完一个节点之后要选择尚未进行松弛的节点松弛,且要选择距起点距离最近的点【1】代码实现///朴素dijkstra O(n^2+m)int g[N][N]; // 存储每条边int d
2020-07-04 19:13:49
196
原创 Codeforces Round #596 C. p-binary
#include<bits/stdc++.h>using namespace std;typedef long long ll;int main(){ ll n,p,cnt,flag=0, ans; scanf("%lld%lld",&n,&p); for(ll i=1;n-i*p>=i;i++) { ll x=n-i*p; cnt=0; while(x) {
2020-05-26 21:48:46
135
原创 记一道神奇数学题
1x\frac{1}{x}x1+1y\frac{1}{y}y1=1n!\frac{1}{n!}n!11n!\frac{1}{n!}n!1-1x\frac{1}{x}x1=1y\frac{1}{y}y11y\frac{1}{y}y1=x−n!x∗n!\frac{x-n!}{x*n!}x∗n!x−n!yyy= x∗n!x−n!\frac{x*n!}{x-n!}x−n!x∗n!
2020-05-19 22:28:48
201
原创 图论基础:最小生成树
最小生成树,走向图论带师的第一步(OWO)=!想来本蒟蒻在寒假集训时看到树,图就瑟瑟发抖,更别说最小生成树这个逼格满满的名字当初的我看到长长的代码就萌生退意但当我最近再看的时候,突然就顿悟了的说 耶As we all know 最小生成树最常用的两个算法,Kruskal算法和Prim算法Kruskal对边排序,所以适合稀疏图,prim对点操作,所以适合稠密图其中,Kruskal算法是...
2020-04-11 21:56:00
134
原创 CF977E Cyclic Components
一个环中,可以保证每个节点的度数为2我们可以以样例为例,不难看出如果若干个节点可以构成一个环,那么这几个节点的度数必定为2所以我们可以先进行vector邻接表存图(常规操作)再通过dfs遍历该图,遍历的时候注意统计节点的度数(即ve[node].size())若度数不为2,说明与该节点所连的所有节点都不能构成环,则需要建立一个标记,使其在最后结算的时候不用加上这个节点所能连通到的所有节点...
2020-03-27 14:22:51
106
原创 CF979C Kuro and Walking Route
CF979C Kuro and Walking Route 题解最近做了好多图题,感觉还是图有意思,争取做个图论选手hh两步dfs遍历图(其实是树)即可求解翻译题目里面已经有了在这就不多加赘述了 总共n个节点n-1条边,说明这个无向图图是个树我们可以先以x为根节点遍历图,遇到y即停止, 计算x不经过y所能到达的节点数numx,n-numx即为y及y一侧的节点数(不包括x与y之间的节点)...
2020-03-27 10:06:45
1708
原创 tarjan求强连通分量及缩点
蒟蒻求强连通分量一、概念什么是连通、强连通、弱连通?这里有比较好理解的概念连通:无向图中,从任意点i可以到达任意点j;强连通:有向图中,从任意点i可以到达任意点j;弱联通:把有向图看成无向图,从任意点i可以到达任意点j;在有向图中成为强连通分量的条件较为苛刻所以引入强连通分量这个概念强连通分量:局部区域强连通...
2020-03-25 10:39:26
296
原创 蒟蒻的倍增(LCA)
蒟蒻的倍增今天蒟蒻蒻学了倍增呦倍增,字面意思1,2,4,8,16,32 … …也就是一倍一倍地增加(曲解qwq)说到倍增,要从一个看似和倍增没有关系的题开始讲起洛谷的LCA模板题(LCA:最近公共祖先)附上链接: https://www.luogu.com.cn/problem/P3379看完题目再食用效果更佳——鲁迅以蒟蒻的智商来看这道题,首先想到的肯定就是暴力了先用一个fa...
2020-03-22 09:49:31
119
原创 蒟蒻的线段树
线段树模板先贴个码,挖个坑,过几天再分析(偷懒偷懒)#include <bits/stdc++.h>#define ll long longusing namespace std;ll m,n,a[1000005];///存数ll tr[1000005<<2];///线段树ll b[1000005<<2];///标记inline ll rd()...
2020-03-18 13:53:07
122
原创 快速幂模板
快速幂模板简单记录一下,以后忘了好找QwQ// m^n % kint quickpow(int m,int n,int k){ int b = 1; while (n > 0) { if (n & 1) b = (b*m)%k; n = n >> 1 ; ...
2020-03-16 10:52:44
93
原创 蒟蒻的瞎搞哈希
蒟蒻今天新学了字符串hash在学习之前,就听闻此算法为瞎搞算法之一这不禁让我好奇心爆炸于是我轻轻撩开了她的面纱众所周知,字符串的题都无比恶心hash就是为了把字符串变成整数而量身定制的比如一个字符串abcd我们可以让它变为131进制数(至于为什么是131(或31,1331),这就是集结了大佬们的智慧,可以将它的冲突率降低)在操作时,每一个前缀用一个数去表示,当有新的字母加入,就将...
2020-03-10 21:35:40
287
原创 蒟蒻存图
通往蒟蒻的最短路(存图篇)今天蒟蒻想学最短路但是本蒟蒻不会存图于是只好学习一下怎么存图1.不管不顾直接刚——临接矩阵优点:简单、易行、直观缺点:效率低、占用内存大可解少量图最大 mp[1000][1000];代码就不上了,重要的在后面。2.伸缩变换无穷尽——邻接表作为还没学链表的蒟蒻,只学会了vector版邻接表用结构体捆绑to和l,之后塞进起点对应的vector能满足大多...
2020-03-07 23:19:46
150
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人