- 博客(43)
- 收藏
- 关注
原创 前端面试知识点总结
前言:博主在春招中拿到腾讯,美团,百度offer call,这是我学习过程中整理的前端知识点,内容有些多,可ctrl+f 查找食用~https://www.bbsmax.com/A/6pdDZo2kJw/https://www.cnblogs.com/duzheqiang/archive/2016/07/17/5679378.htmlhttps://blog.youkuaiyun.com/weixin_44370837/article/details/116602151https://xue.baidu.com/o
2023-05-22 23:26:50
1254
1
原创 前端视频预览功能的实现
这是我模仿B站所写项目遇到的第二个很有挑战性的部分,网上的资料比较缺乏,还是大佬室友换了个关键词才搜到比较有用的资料hh。之前没有写过视频相关的项目,所以视频相关的API都十分陌生。从最开始的一无所知,一步步查资料,理解代码,进行修改,解决代码,最后实现的时候感觉非常有成就感。网上能找到的相关插件是用angular.js实现(现在基本被vue,react替代),跟我使用技术栈冲突,无法直接引用插件,而且很多技术细节没有文字解释,阅读比较困难。
2022-09-26 00:57:08
3994
原创 登录功能的实现(包括前后端)
登录功能对于前端刚入门不久的我来说较为困难,花了很久查阅了许多资料。代码部分涉及的技术栈和细节也很多。过了一段时间来看,发现对自己写的代码竟然感觉十分陌生,故想写篇博客,对整个过程进行梳理。方便自己重看代码,同时也希望能帮到在实现这一功能受阻的程序猿们o( ̄▽ ̄)ブ前端验证用户输入是否符合规范前端调用后端登录接口,向后端发起登录请求后端收到请求,查验数据库种是否有相应账号以及密码是否正确验证通过后,将成功信息连同token一起发送给前端。...................................
2022-08-10 22:44:45
32665
10
原创 “蔚来杯“2022牛客暑期多校训练营2 H.Take the Elevator
故采用贪心算法,两种情况都按右端点从大往小排序,维护一个优先队列。对于每个点,先将优先队列中比当前右端点大的点pop掉,然后如果没满就加进去,否则等下一轮,将每一轮的最右端点-1存下。有n个人需要乘坐,每个人的起点终点分别为li,ri。问从一楼出发,满足所有乘客需求,最后回到一楼的最短时间。因为下降时不能中途转向,我们肯定希望每次上升的高度尽可能低,而当前楼层最高的乘客我们是迟早要接到(送达)的。将乘客的起始点终点相连,把起点和终点转化为左端点和右端点,把抽象成点,就成了类似区间覆盖的问题。......
2022-07-24 23:54:51
332
原创 2021GDCPC广东省大学生程序设计竞赛 H.History
如果每次都变换成不同的,namo这题感觉不太可做,但连续代入几次后发现,这是个周期为4的循环,故可以用分层图做。我们可以一开始建好四层图,也可以先存边在dij函数内求不同层之间的距离,这里我用了第二种方法。给定一个由n个点,m条边组成的图,每走一步,所有边权都会按以下公式变换。......
2022-07-22 22:27:16
670
2
原创 2021GDCPC广东省大学生程序设计竞赛 B.Byfibonacci
最大值和次大值,那么符合条件的子集有且仅有他们中的一个。就不能以值域作为状态,但我们可以发现。的范围较小,那就是01背包,但。找到这个规律后就可以DP了,我们令。给一个数x,问有多少个。namo转移方程则为。...
2022-07-22 21:50:41
573
原创 2022牛客暑期多校训练营1 J Serval and Essay
1.当一个点V1的父节点V2只有一个时,选父节点V2作为起始点,若V2的父节点V3只有一个时,则选V3,直到某个节点父节点多于一个或为0,将其设置为起始点。对于所有满足条件的点,模拟一遍拓扑排序,取最大值作为结果,可以证明每个点遍历次数不超过10次,故复杂度可控制在1e8内。给一个图,对于图内的每个点,当且仅当其所有入边入应的点为真时,该点为真。开始可指定一个点为真,问为真的点的最大个数。2.当存在环时,选环上的任意一点作为起始点。有可能使结果最大的起始点。...
2022-07-20 22:17:49
215
原创 Educational Codeforces Round 128 (Rated for Div. 2) E. Moving Chips
题目链接:E. Moving Chips题意:只有 * 和 . 的2行n列的图,每次可以将任意一个 *移动一格,当两个 *相遇时将合并为一个,问最少需要多少不能将所有 *合并为一个思路:贪心,对于每一排,看离他最近的前面的*在哪,用last1,last2 表示对于每个点,我们可以贪心的把后面的 * 先移到他这,然后再让他往前移,也可以让后面的 * 在他移的路径路径上跟他合并如果是前者,更新完这个点后,lasti更新为i,如果是后者,last1 last2都更新为i,而如何决定为那种情况
2022-05-14 02:28:00
269
原创 Educational Codeforces Round 128 (Rated for Div. 2) C. Binary String
题意:给一个01字符串,从字符串两侧删若干个数,对剩下的0和删掉的1取最大值,让这个最大值最小思路:前缀和我们注意到如果剩下的0比删掉的1多很多的话,显然不是最优解,故我们先统计下0的总数cnt,先从左往右遍历,统计0的前缀和pre0[i]与1的前缀和pre1[i],这样对于每个点,就能得到剩下的0(cnt-pre0[i])和删掉1的数量(pre1[i]),取其差值(res=cnt-pre0[i]-pre1[i]),然后考虑从右边删,容易想到当删掉的1的个数比剩下的0的个数还要多的话,继续删就没意义
2022-05-14 02:04:03
472
原创 Vue 搜索历史功能的实现(增添,删除,隐藏,清空)
Vue刚入门,模仿了B站首页(部分)UI巩固所学知识,下面展示其中搜索历史功能的实现,项目完整代码和页面效果见文末链接HTML:<div class="search_record_box" id="search_record_box_id"> <!-- 搜索框 --> <div class="top_navigation_bar_input"> <input @blur="hide_browsing_history1" @focu
2022-02-22 19:13:29
2066
原创 Codeforces Round #772 (Div. 2) E. Cars
思路分析题目可得无论op是多少,i,j必定反向,op为1,posi<posj,否则posi>posj。采用二分图染色法,col=2表示L,col=3表示R,然后根据ij的位置关系由小向大建边,最后跑一遍拓扑即可Code#include <bits/stdc++.h>#pragma GCC optimize(2)#define debug freopen("_in.txt", "r", stdin);// #define debug freopen("_in.txt",
2022-02-21 23:12:13
339
原创 Codeforces Round #772 (Div. 2) D. Infinite Set
D. Infinite Set思路二进制下,2x+1相当于进一位然后+1,4x相当于进两位,令DP[i]表示进i位的情况数,则有递推方程dp[i] = dp[i - 1] + dp[i - 2],然后对于每个数,若k位该数能进的最大位数,则情况数为dp[0]~dp[k]的总和,用还需预处理出前缀和。然后对最开始的数组去重,接着算出每个数能进的位数,就做完了Code#include <bits/stdc++.h>#pragma GCC optimize(2)#define debug
2022-02-21 23:09:52
292
原创 Codeforces Round #772 (Div. 2) C. Differential Sorting
C. Differential Sorting思路逆推,如果a[n-1]>a[n]或者a[n]<0都不可能构造出符合题意的数组,否则从n-3开始让a[i]=a[i+1]-a[n],这样就能保证不递减code#include <bits/stdc++.h>#pragma GCC optimize(2)// #define debug freopen("_in.txt", "r", stdin);#define debug freopen("_in.txt", "r", s
2022-02-21 17:16:35
636
原创 Codeforces Round #768 (Div. 2) C. And Matching
思路:如果k不为n-1的话,就把k和n-1配,0和n-1-k配,其他相加为n-1就配一对如果为n-1的话就把后四组和前四组单独配一下,其他相加为n-1配一对,尽量不要打乱中间的配对Code#include <bits/stdc++.h>// #define DEBUG freopen("_in.txt", "r", stdin);#define DEBUG freopen("_in.txt", "r", stdin), freopen("_out.txt", "w", stdout)
2022-01-28 23:46:15
1111
原创 第 46 届 ICPC 国际大学生程序设计竞赛亚洲区域赛(南京) CDH
CKlee in Solitary Confinement思维题先预处理出每个数的个数,若k为0,直接输出最大的个数。若不为0,对于每个数,对自己x贡献-1,并且当贡献≤0时,重新置0,意味着不对前面的数+k。然后对x+k贡献+1,并更新最大值,最后输出最大值即可Code#include <cstdio>#include <algorithm>#define py 2000000using namespace std;int n, k, dp[4000010], a
2021-12-20 01:15:44
2114
原创 计算几何板子
三角形相关int sgn(double x){ if (fabs(x) < eps) return 0; if (x < 0) return -1; else return 1;}struct Point{ double x, y; Point() {} Point(double _x, double _y) { x = _x; y = _y;
2021-12-12 15:30:56
391
原创 第 46 届 ICPC 国际大学生程序设计竞赛亚洲区域赛(上海)DEGHI
D令t=b/a,可以得到关于t的一元二次方程,用根的存在定理以及根是否为整数判断是否存在解,若有解,用求根方式求出t来,取t=(p+sqrt(pp-4qq))/(2*q)(为了保证结果为正数),然后让a,b分别等于分子,分母code:#include <bits/stdc++.h>#define DEBUG freopen("_in_.txt","r",stdin);typedef long long ll;using namespace std;ll t, p, q;int
2021-11-29 22:57:56
1119
原创 排序板子(基数,归并)
基数排序(栈模拟)首先离散化,然后二进制从低位到高位看每位是否为1,为1放进b栈,否则放入c栈,然后将b,c栈的数顺次放入a栈,循环直到最高位。#include <bits/stdc++.h>typedef long long ll;// #define DEBUG freopen("_in.txt", "r", stdin)#define DEBUG freopen("_in.txt", "r", stdin), freopen("_out.txt", "w", stdout);u
2021-11-23 21:31:09
334
原创 线性代数板子
矩阵快速幂struct Mat{ ll m[101][101];};//存储结构体Mat a,e; //a是输入的矩阵,e是输出的矩阵Mat Mul(Mat x,Mat y){ Mat c; for(int i=1;i<=n;++i){ for(int j=1;j<=n;++j){ c.m[i][j] = 0; } } for(int i=1;i<=n;++i){
2021-11-19 21:32:52
372
原创 分块板子整理
莫队T(n): O((n+m)*sqrt(n))ll n,q,blo,curl,curr,cnt[maxn],answer,ans[maxn];ll arr[maxn];struct Query{ ll l,r,pos; bool operator<(Query other)const { if(l/blo!=other.l/blo) return l<other.l; else return r<other.r;
2021-10-22 15:10:21
129
原创 二分及三分板子
查找大于等于x的第一个数ll l = 0, r = n - 1, mid;while (l < r){ mid = (l + r) >> 1; if (nodes[mid].val >= x) { r = mid; } else { l = mid + 1; }}浮点数情况double eps=1e-6;double l,r,mid;while(r-l>eps){
2021-10-17 16:11:26
130
原创 D2. Seating Arrangements (hard version)
题目:It is the hard version of the problem. The only difference is that in this version 1≤n≤300In the cinema seats can be represented as the table with n rows and m columns. The rows are numbered with integers from 1 to n. The seats in each row are numbere
2021-09-13 21:57:05
314
原创 网络流板子
int n,m,x,cnt=0;int head[maxn];int dis[maxn];struct node{ int e; int v; int nxt;}edge[maxm<<1];inline int read(){ int ans=0;char r=getchar(); while(r<'0'||r>'9')r=getchar(); while(r>='0'&&r<='9'){ans=an
2021-08-23 23:49:00
103
原创 倍增板子整理
LCA(最近公共祖先)()struct zzz{ ll t, nex;} edges[maxn << 1];ll head[maxn], tot;void add(ll x, ll y){ edges[++tot].t = y; edges[tot].nex = head[x]; head[x] = tot;}ll depth[maxn], fa[maxn][22], lg[maxn];void dfs(ll now, ll fath)/
2021-08-11 15:34:19
123
原创 Codeforces Round #737 (Div. 2) C.Moamen and XOR
题目链接:C.Moamen and XOR题目大意:一个含有n个数的数组,每个数都要满足小于2的k次方,求满足a1 &a2&a3&…&an≥a1⊕a2⊕a3⊕…⊕an.的个数思路:k<=2e5,再加上题中的位运算符号,很自然的想到用二进制来表示数组中的每一个数以及最终的结果,我们一位一位分析,设前一个式子为A,后一个式子为B,则可画出以下表格A的第k位B的第k位1n个数的第k位全为1n个数的第k位一共含有奇数个10n个数的第k
2021-08-10 13:04:20
234
原创 平衡树、可持久化线段树板子
#include<iostream>#include<cstdio>#include<queue>#include<cstring>#include<algorithm>#include<climits>typedef long long LL;using namespace std;int RD(){ int out = 0,flag = 1;char c = getchar(); while(c &l
2021-07-19 15:49:57
123
原创 动态规划(DP)
最长递增子序列(LIS)memset(dp1,0,sizeof(dp1));for (ll i = 1; i <= n; i++){ dp1[i] = 1; for (ll j = 1; j < i; j++) { if (arr[j] < arr[i]) { dp1[i] = max(dp1[i], dp1[j] + 1); } }}
2021-07-13 13:05:45
237
原创 Codeforces Round #726 (Div. 2) E.Erase and Extend (Hard Version)
Problem:This is the hard version of the problem. The only difference is the constraints on n and k. You can make hacks only if all versions of the problem are solved.You have a string s, and you can do two types of operations on it:Delete the last chara
2021-06-19 01:23:31
235
2
原创 Educational Codeforces Round 110 (Rated for Div. 2) C. Unstable String
Problem:You are given a string sconsisting of the characters 0, 1, and ?.Let’s call a string unstable if it consists of the characters 0 and 1 and any two adjacent characters are different (i. e. it has the form 010101… or 101010…).Let’s call a string
2021-06-11 12:36:56
230
2
原创 线段树板子
定义:ll arr[maxn], sum[maxn << 2], tag[maxn << 2];ll n, m, v, l, r, k;建树:inline void build(ll l, ll r, ll rt){ if (l == r) { sum[rt] = arr[l]; return; } ll m = (l + r) >> 1; build(l, m, rt <<
2021-04-30 00:54:29
236
原创 HDU:1559 最大子矩阵
题目:给你一个m×n的整数矩阵,在上面找一个x×y的子矩阵,使子矩阵中所有元素的和最大。Input输入数据的第一行为一个正整数T,表示有T组测试数据。每一组测试数据的第一行为四个正整数m,n,x,y(0<m,n<1000 AND 0<x<=m AND 0<y<=n),表示给定的矩形有m行n列。接下来这个矩阵,有m行,每行有n个不大于1000的正整数。Output对于每组数据,输出一个整数,表示子矩阵的最大和。Sample Input14 5 2 23 3
2021-04-15 19:39:21
214
原创 树状数组板子
const ll maxn = 1000 + 10;ll tr[maxn][maxn];ll stars[maxn][maxn];ll t,x,y;char c[10];ll x1,x2,y1,y2;ll lowbit(ll i)//二进制最低位1位置{ return i&(-i);}void update(ll x,ll y,ll c)//更新(二维数组){ for(ll i=x;i<maxn;i+=lowbit(i)) {
2021-04-13 23:26:36
124
原创 高精度板子
高精度加法char str1[250], str2[250],str[250];void add(char str1[], char str2[]){ ll a[250], b[250], len; //数组的大小决定了计算的高精度最大位数 memset(a, 0, sizeof(a)); memset(b, 0, sizeof(b)); a[0] = strlen(str1); //取得第一个字符串的长度 for (ll i = 1; i
2021-04-10 14:26:49
137
原创 博弈论板子
巴什博弈(取石子)if (n % (m + 1) == 0){ printf("second\n"); //必败态}else{ printf("first\n"); //必胜态}
2021-04-08 20:37:09
92
原创 STL及其他库函数
全排列sort(arr, arr + k);//排序ll len = unique(arr, arr + k) - arr;//去重,与sort一起用do{} while (next_permutation(arr, arr + len));//全排列二分查找stack<int> sta;vector<int> v;vector<int>::iterator it;it = lower_bound(v.begin(), v.end(), sta.to
2021-03-25 20:04:35
104
原创 树相关板子整理
二叉搜索树const ll maxn = 1e3 + 10;typedef struct Node *BinTree;ll n, s = 0, t = 0, k = 0;ll a[maxn], b[maxn], c[maxn];struct Node{ ll data; BinTree left, right;};//建立二叉搜索树 BinTree CreatTree(BinTree BST, ll x){ if (!BST) { BS
2021-03-24 21:01:58
128
原创 图论(Dijkstra,SPFA,Floyd,拓扑,Tarjan)
Dijkstra算法ll mp[maxn][maxn], pre[maxn], vis[maxn];ll cnt[maxn], dis[maxn];ll m, n, s, d;// 打印路径void Path(ll i){ if(pre[i]==i) return; else Path(pre[i]); cout<<pre[i]<<" ";}int main(){ ll mini, mind; cin >> n
2021-03-23 23:23:43
231
原创 【BZOJ】1590: [Usaco2008 Dec]Secret Message 秘密信息
Description贝茜正在领导奶牛们逃跑.为了联络,奶牛们互相发送秘密信息.信息是二进制的,共有M(1≤M≤50000)条.反间谍能力很强的约翰已经部分拦截了这些 信息,知道了第i条二进制信息的前bi(l《bi≤10000)位.他同时知道,奶牛使用N(1≤N≤ 50000)条密码.但是,他仅仅了解第J条密码的前cj(1≤cj≤10000)位.对于每条密码J,他想知道有多少截得的信息能够和它匹配.也就是说,有多少信息和这条密码有着相同的前缀.当然,这个前缀长度必须等于密码和那条信息长度的较小者.在
2021-03-20 14:00:16
237
原创 并查集、最小生成树
并查集ll fd(ll x)//查找祖先{ if (f[x] == x) return x; else return f[x] = fd(f[x]);}void hb(ll x, ll y)//合并{ f[fd(y)] = fd(x);}求集合元素数量最大值ll fd(ll x)//查找祖先{ if(f[x]==x) return x; else return f[x]=fd(f[x]);}void hb(l
2021-03-15 20:49:07
114
原创 NOIP 2004 合唱队形
题目:N位同学站成一排,音乐老师要请其中的(N-K)位同学出列,使得剩下的K位同学不交换位置就能排成合唱队形。合唱队形是指这样的一种队形:设K位同学从左到右依次编号为1, 2, …, K,他们的身高分别为T1, T2, …, TK,则他们的身高满足T1 < T2 < … < Ti , Ti > Ti+1 > … > TK (1 <= i <= K)。你的任务是,已知所有N位同学的身高,计算最少需要几位同学出列,可以使得剩下的同学排成合唱队形。Input
2021-03-06 12:23:23
543
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人