自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 线段树板子

#include<bits/stdc++.h>using namespace std;using ll = long long;const int N = 1e6 + 10;int b[N], n, m;struct vv{ll l, r, sum, lazy;};vv tree[N*4];//建树inline void build(ll i, ll l, ll r){tree[i].l = l, tree[i].r = r;if(l == r){tree[i].sum

2022-04-08 21:57:35 105 2

原创 树状数组板子

#include<bits/stdc++.h>using namespace std;const int N = 5e5 + 10;#define lowbit(x) ((x) & (-x))int tree[N], n, m;inline void update(int i, int x){for(int pos = i; pos < N; pos += lowbit(pos)){tree[pos] += x;}}inline int query(int n)

2022-04-08 21:56:18 83

原创 tarjan板子

#include<bits/stdc++.h>using namespace std;using ll = long long;const int N = 1e6 + 10;//存图struct vv{int to, next;}G[N];int head[N], cnt;inline void add(int from, int to){G[++cnt].to = to;G[cnt].next = head[from];head[from] = cnt;}//tar

2022-04-08 21:55:00 113

原创 kmp板子

#include<iostream>#include<vector>using namespace std;const int N = 1e6 + 10;int Next[N];string s1, s2;void get(string s) { int j = 0, k = -1; Next[0] = -1; while(j < s.size()) { if(k == -1 || s[j] == s[k]) { ++j; k++;

2022-04-08 21:53:30 247

原创 数据结构实验

文章目录实验1:线性表代码:实验2 : 链表实现实验1思路:代码:实验3:表达式求值思路:代码:实验四:字符串匹配思路:代码:实验5.二叉树思路:代码:实验6:赫夫曼树思路:代码实验7.1邻接矩阵代码:实验7.2 邻接表代码:实验8 最小生成树代码:实验9 最短路代码:实验10 拓补排序与关键路径思路:代码:实验11.查找思路:代码:实验12代码:实验13,简单排序思路:代码:实验14 堆排序思路:代码:实验14 堆排序思路:代码:实验1:线性表基本就是按照思路直接写代码:#include&lt

2021-12-06 16:44:40 765

原创 数据结构实验

文章目录实验1:线性表代码:实验2 : 链表实现实验1思路:代码:实验3:表达式求值思路:代码:实验四:字符串匹配思路:代码:实验5.二叉树思路:代码:实验6:赫夫曼树思路:代码实验7.1邻接矩阵代码:实验7.2 邻接表代码:实验1:线性表基本就是按照思路直接写代码:#include<iostream>#include<fstream>#include<cstring>#include<iomanip>using namespace std

2021-11-04 22:47:02 192

原创 二分的记录

发现二分里面if表示else的那个在升序找>=int l = 1, r = len2;while(l <= r){ int mid = (l + r) >> 1; f(d2[mid] >= target){ r = mid-1; }else{ l = mid+1; }}ans = l;此时l代表了第一个>=target的下标找第一个>target的数就是换成if(… > …)降序找<int l = 1, r

2021-10-22 20:51:12 48

原创 最小生成树prim算法板子

最小生成树,也就是求图里面用n-1条边使得整个图连接起来的算法。两种算法,一种是kusual, 另一种是prim。两种算法都很简单。kusual : 简单来说就是我们先把所有的边排序,然后从小到大选出n-1条边使得图相连。那么就是用优先队列维护最小,用并查集维护是否在同一个集合就好。prim:主要思想和迪杰斯特拉是一样的,每次找最小的,没有被找到过的那一个边对应的点,然后用这个点去更新其余边的最小值。只是这里记录的是最短路里面上一个点到当前点的值。 证明麻烦得很,总之应该是贪心。总之前人发明的东

2021-09-02 23:44:40 191

原创 最短路迪杰斯特拉板子

这个算法是找单源最短路,思想就是找当前离起点最短的一条边去维护其余点的最短距离。简单描述就是 a 能到b, b能到c, a能到c。那么对于a到c, 如果a到b再从b到c比a直接到c更短,那么就选则a-b-c,而不是直接选择a-c 。算法就是不断找最小,然后维护。模板:邻接矩阵版本#include<bits/stdc++.h>using namespace std;const int N = 1e4 + 10;const int inf = 0x3f3f3f3f;int G[N

2021-08-28 11:59:27 204

原创 2021牛客多校7(H,I),多校8(A,D,E,K).

多校7:H. xay loves count题目:给了数组a, 求三元组(i, j, k)的数量,使得 ai_ii​ * aj_jj​ = ak_kk​思路:对于a * b = c来说,如果我们知道了c, 那么就可以从 1到c\sqrt{c}c​找a, 然后通过a去判断b。这里可以用一个map把数量存下来,然后遍历c\sqrt{c}c​ 就好。#include<bits/stdc++.h>using namespace std;using ll = long long;const

2021-08-12 22:02:38 267

原创 2021暑期牛客6 F,I 补题

F. Hamburger Steak题目:给一堆汉堡和要煎汉堡的时间,还有锅的数量。求最少时间,还要输出方案。思路:其实本题有点像洛谷搜索题单第二题,我第一眼就看了出来。但是本题要更复杂,但是思想有点类似。就是这个最少时间要么是全部加起来除以锅的数量, 要么是最大的汉堡时间。我们依次就可以先把每个锅定一个容量。然后就放,直接放,不够就放到下一个里面。当时就是死脑筋非要在一个锅里面煎。代码:#include<iostream>#include<algorithm>using

2021-08-12 20:30:47 57

原创 2021杭电多校5 :3,6,7; 多校6:1 5

多校5:1003. VC Is All You Need题目:能否用一条直线把n个点分成两部分,每一边的颜色是相同的。思路:如果稍微了解过机器学习应该就会了。想一下对于四个点你不能用一条直线直接分开。但是,如果你把右下角的红点翻折上来,这样就是一个三维平面,你就可以分开。而我们考虑最坏的情况,每次翻折只能使两个点变成一个点。那么四个点翻一次,五个点翻两次…于是答案就呼之欲出了。代码:#include<bits/stdc++.h>using namespace std;int

2021-08-11 14:41:39 296

原创 2021暑期牛客5,B,D,H,J,K 补题

B. Boxes题意:箱子里有黑球和白球,你可以花费Vi 打开箱子,花费C询问裁判黑球数量。现在求你知道箱子里球的颜色的最少期望。思路:首先对于询问黑球个数,我们只问第一次,后面的根据所开的球的数量可以得到。然后就是找规律。我们分析四个球,现在用0表示白,用1表示黑。所有情况2n,第一次就知道:0000, 1111。 2/16。第二次就知道:(0)111, (1)000。 2/16。第三次就知道:()011, ()100。 4/16。第四次就知道:()()

2021-08-07 22:20:01 94

原创 2021暑期杭电多校4:1,2,9

1.Calculus结论题题目大意:给你一个函数式,求他是否收敛。思路:第一眼想到的就是收敛的性质,收+收则收,收+发则发,发+发不确定。然后发现给的函数只有一种可能是收的,就是C==0的时候。代码:#include<iostream>#include<algorithm>#include<cstring>#include<vector>using namespace std;using ll = long long;int ma

2021-08-04 16:53:36 86

原创 2021暑期杭电多校3(4,7, 11)

Game on plane理论上是水题,但是题目读错了…题目大意:爱丽丝和鲍勃在玩游戏。在这个游戏中,二维平面上有n条直线。首先爱丽丝会在n条直线中选出确切的k条直线l1, l2, … , lk,鲍勃将会画一条直线L.Bob的惩罚被定义为在{l1、l2,…,lk}中与L至少有一个公共点的数量,注意两个重叠的线也有共同点。Alice想要最大化Bob的惩罚而Bob想要最小化。你会得到这n条线,请写一个程序来预测当k=1,2,3,…,n时,Bob的惩罚,如果两个玩家都会做最优的方案简单的描述就.

2021-08-04 16:36:56 206

原创 2021暑期牛客多校4

C. LCS构造,我是暴力的…题目:s1, s2, s3, 公共的字符长度是a,b,c。思路:暴力…代码:#include<bits/stdc++.h>using namespace std;struct vv{ int u, id; string s;};bool cmp1(vv a, vv b){ return a.u < b.u; }bool cmp2(vv a, vv b){ return a.id < b.id;

2021-07-31 23:12:47 74

原创 2021牛客暑期多校3 BCEFJ题解

B.Black and white思维题, 只要想出来就好做了.题目大意:把一个矩阵全涂黑, 问最少需要多少花费,对一个2*2的矩阵的时候,有三个被涂黑了,那么第四个就黑了.每个元素的值就是涂黑的花费.思路:我们把行和列都看成一个点, 每个格子看成点之间的连线, 然后就得到了一个图. 在图上求最小生成树, 使得整个图能联通. 那就是所求值.代码:#include<bits/stdc++.h>using namespace std;using ll = long long;co

2021-07-31 21:51:35 98

原创 2021暑期杭电多校2: 1 5 8 11 12 题解。

I love cube结论题推到一下就好。题目大意:现在我们有一个长度l = n-1立方体,我们要在立方体的内部和边界上画等边三角形。其中等边三角形的顶点必须是整数,每条边必须与一个面平行。思路:简单分析,发现长为1时8个,长为2时8 + 8 * 8。长为3时8 + 88 + 278。后面依次类推。就是一个立方和。可以自己去网上找公式。代码:#include<bits/stdc++.h>using namespace std;using ll = long long;#def.

2021-07-27 16:53:32 255

原创 2021暑期杭电多校第一场1,5,8,9题解

1.Mod, Or and Everything简单结论题,打表找规律。题目大意:现在给你一个数,你要把(n%1) | (n%2) | … | (n%n)计算出来。思路:首先我们打表找一下规律,发现就是从1到x做或操作,其中当n是奇数时x为(n/2),当n是偶数时x为(n/2 - 1)。观察数据我们会发现n是1e12,一半就是5e11,很明显暴力在1s的时间会爆。所以我们再观察一下。要注意的是这是二进制的运算,我们把目光投到二进制上,发现这样的一个运算得到的是1111这样的数。好的到这里就可以了。代

2021-07-26 22:52:14 246

原创 简单快速排序板子

#include<iostream>#include<cstring>#include<algorithm>#include<cmath>#include<iomanip>;using namespace std;const int maxn = 1e5 + 10;int b[maxn];int n;void qst(int l, int r) { if (l >= r) return; int tmp = b[l]

2021-07-25 12:56:41 91

原创 并查集板子

简单并查集板子//并查集板子 const int maxn = 1e6 + 10;int fa[maxn];inline void iit(int n) { for (int i = 0; i <= n; i++) fa[i] = i;}int findx(int x) { return (x == fa[x] ? x : (fa[x] = findx(fa[x])));}void merge(int x, int y) { int f_x = findx(x), f

2021-07-23 18:51:30 103

原创 2021牛客暑期训练2 C,D,F,K题解

C. Draw Grids结论题,直接找。题目大意:两个人玩一个游戏,在已知m,n的前提下一个给(a,b),一个给(c,d)。满足| a-c | + | b-d | = 1, 1<= a,c<= n, 1 <= b,d <= m。然后把(a,b)和(c,d)连起来。然后满足不能再连相同的边,不能封闭。有一个人不能走的时候就输了。问先手能不能赢思路:建议多画几种情况,你会发现走法是走过的边数是n*m - 1。然后很明显,走奇数次就赢了,偶数次就输了。代码:#include&

2021-07-21 22:12:15 93

原创 2021暑期牛客训练1A,B,D,F,G题解

A.Alice and Bob博弈论题目,但是不会博弈论,也不会sg,暴力方法做。题目描述:有两堆石头,现在A和B要比赛。他们对某个石头可以做这样的操作,在一堆里拿x个,在另一堆拿s*x个(s>=0)。当某个人不能拿的时候就输了。而Alice是先手。思路:我们先看(0,0)这种情况,这个时候A会输掉,也就是说(0,0)是后手胜。当我们有一个点能一次性到达(0,0)时,它就是先手胜的。然后我们就把所有(0,0)能到达的点存起来。然后又找到(0,0)不能到达的第一个点,这个时候这个点一定是后手胜的

2021-07-20 10:52:05 102

空空如也

空空如也

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

TA关注的人

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