笔记
rainllu
这个作者很懒,什么都没留下…
展开
-
动态规划总结(暂时非常简略
动态规划结合题目的一些简单总结板子原创 2022-10-09 21:32:31 · 240 阅读 · 0 评论 -
动态规划——01背包
01背包问题==>每个数只能用一次//二维for (int i = 1; i <= n; i ++ ){ for (int j = 0; j <= m; j ++ ) { dp[i][j] = dp[i-1][j]; if(j >= v[i]) dp[i][j] = max(dp[i][j] , dp[i-1][j-v[i]] + w[i]); }}//一维for (int i = 1; i <= n; i ++ ) for (int j =原创 2021-10-09 22:01:15 · 56 阅读 · 0 评论 -
高精度学习笔记及代码模板
整数加法需要注意的点:倒序存储方便后续操作采用vector容器方便操作余数的合理处理#include <iostream>#include <vector>//vector比较好用,当然也可以用数组 using namespace std;vector<int> add(vector<int> &A, vector<int> &B)//不是全局变量需要取址 { vector<int> C;原创 2021-10-09 22:00:06 · 84 阅读 · 0 评论 -
STL常用——acwing——yxc
vector, 变长数组,倍增的思想 size() 返回元素个数 empty() 返回是否为空 clear() 清空 front()/back() push_back()/pop_back() begin()/end() [] 支持比较运算,按字典序pair<int, int> first, 第一个元素 second, 第二个元素 支持比较运算,以first为第一关键字,以second为第二关键字(转载 2021-04-04 16:45:59 · 1049 阅读 · 0 评论 -
哈希表
把大数据映射在小范围内以单链表为基础知识其实哈希表就相当于是一个h[N]数组上搭了很多条子链#include <iostream>#include<cstring>using namespace std;const int N = 100003;int h[N], e[N], ne[N], idx;void insert(int x){ int k = (x % N + N) % N; e[idx] = x; ne[idx] = h[k]; h[k原创 2021-04-04 16:41:46 · 78 阅读 · 0 评论 -
快速排序求第k小的数字
为什么要用快排求第k小的数字?快排的特点,是先找参考值x,然后排序,最后递归。我们可以在递归的过程中,判断递归时候的子数组长度,看看与x的关系。要知道,第k个小的数字无非就是从小到大排序后的第k个数字。求第k大的数字及是求第n-k+1小的数字。代码如下注意递归条件和k的变化#include<bits/stdc++.h>using namespace std;const int N = 8e6 + 6;int t,n,k,q[N];int quick_sort(int原创 2021-03-29 22:17:41 · 444 阅读 · 0 评论 -
整数二分和浮点数二分
整数二分在这里插入代码片浮点数二分在这里插入代码片原创 2021-03-29 18:23:11 · 89 阅读 · 0 评论 -
扩展欧几里得算法
裴蜀定理对于任意一对正整数a,b 那么一定存在非零整数x,y 使得ax + by = (a,b);(a和b的最大公约数)int gcd(int a,int b){ if(!b) { return a; } return gcd(b,a%b);}代码块#include<bits/stdc++.h>using namespace std;int exgcd(int a,int b,int &x,int &y){ if(!b) { x =原创 2021-03-28 09:13:26 · 82 阅读 · 0 评论 -
牛客--CSL分苹果--动态规划--01背包问题
题目如下链接:CSl分苹果来源:牛客网CSL手上有n个苹果,第i个苹果的质量是wi,现在他想把这些苹果分给他的好朋友wavator和tokitsukaze。但是CSL为了不让他们打架,根据质量决定尽量地均分成两堆分给他们。现在CSL想知道到底给每个人分多少质量的苹果。注意:苹果不能劈开来,并且如果不能正好均分,tokitsukaze小姐姐会拿到重的那一堆。输入描述:第一行输入一个整数n(2 ≤ n ≤ 100),第二行n个整数,表示每个苹果的质量wi(1 ≤ wi ≤ 100)。输出描述;输原创 2021-03-08 20:31:33 · 290 阅读 · 0 评论 -
牛客--方格取数--动态规划--四维
链接:方格取数来源:牛客网设有N*N的方格图(N ≤ 10,我们将其中的某些方格中填入正整数,而其他的方格中则放入数字0。如下图所示(见样例):某人从图的左上角的A 点出发,可以向下行走,也可以向右走,直到到达右下角的B点。在走过的路上,他可以取走方格中的数(取走后的方格中将变为数字0)。此人从A点到B 点共走两次,试找出2条这样的路径,使得取得的数之和为最大。输入描述:输入的第一行为一个整数N(表示N*N的方格图),接下来的每行有三个整数,前两个表示位置,第三个数为该位置上所放的数。一行单独原创 2021-03-08 20:01:26 · 222 阅读 · 1 评论 -
栈与队列
栈//栈:先进后出int stk[N], tt;//插入stk[ ++ tt ] = x;//弹出tt --;//判断栈是否为空if(tt > 0) not emptyelse empty//栈顶stk[tt]; 队列//队列:先进先出int q[N],hh,tt = -1;//插入q[ ++ tt] = x;//弹出hh ++ ;//判断是否为空if(hh <= tt) not emptyelse empty//取出队头元素q[hh]; //取原创 2021-02-24 08:34:00 · 50 阅读 · 0 评论 -
并查集
背过int find(int x){ if(p[x] != x) p[x] = find(p[x]); return p[x]; } 全部代码#include <iostream>using namespace std;const int N = 100010;//M==>合并//find==>查找父节点,当其下标与父节点相同即为根节点//根节点相同则在同一个集合中//合并即将某个集合的根节点改变为某个集合的父节点int n, m;int p[N]原创 2021-02-17 19:03:54 · 78 阅读 · 0 评论 -
Tire笔记
代码int son[N][26],cnt[N],idx;//son结点,cnt当前结点的字符串个数,idx当前位置 插入void insert(char str[]){ int p = 0; for (int i = 0; str[i]; i ++ ) { int u = str[i] - 'a'; if (!son[p][u]) son[p][u] == ++ idx; p = son[p][u]; } cnt[p] ++; } 查找int query(ch原创 2021-02-17 19:02:31 · 71 阅读 · 0 评论 -
快速幂板子
快速幂#include<bits/stdc++.h>using namespace std;const int N = 1000;//取模的数值 long long n,m;long long fastPower(long long base, long long power){ long long result = 1; if(power > 0) { if(power & 1) result = result*base%N; power &原创 2021-02-17 18:06:10 · 80 阅读 · 0 评论 -
最佳牛围栏
最佳牛问题简析原题目如下代码如下#include<bits/stdc++.h>using namespace std;const int N = 100010;double sum[N] ={0};int cows[N];int n,f;bool check(double avg) { for (int i = 1; i <= n; i++) { sum[i] = sum[i - 1] + cows[i] - avg; }//求前缀和原创 2020-12-14 22:28:15 · 222 阅读 · 0 评论 -
十进制转二进制位运算
2020年12月14日三个知识点纪录十进制转二进制位运算快速幂板子筛法求素数原创 2020-12-14 22:17:18 · 197 阅读 · 0 评论