自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 P2433 【深基1-2】小学数学 N 合一

【代码】P2433 【深基1-2】小学数学 N 合一。

2023-09-24 21:13:27 278

原创 米勒拉宾素数测试

查看了一篇热搜文章,包含费马定理,合数判定,快速幂等知识,反复思考,还是觉得记住代码最为简单,以下是nowcoder上的题目通过代码。觉得自己的通过代码耗时太长,查看了一位叫做。的一种高效率素数测试算法。同学的代码,发现了叫做。(他的码风和我好像)

2023-06-01 15:51:11 193

原创 动态规划总结(暂时非常简略

动态规划结合题目的一些简单总结板子

2022-10-09 21:32:31 344

原创 Codeforces Round #744 (Div. 3) 补题纪录

题目列表A(Ac)B (已补)CD (已补)E1(Ac)E2F (还不会)G (还不会) A(Ac) 代码 : #include<bits/stdc++.h> using namespace std; void solve() { string s; cin >> s; if(s.size() %2 == 0) { int k = 0; for(int i = 0; i < s.size(); i ++ )

2022-10-09 21:30:47 496

原创 动态规划——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 124

原创 高精度学习笔记及代码模板

整数加法 需要注意的点: 倒序存储方便后续操作 采用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 176

原创 高级语言程序设计——编程题答案

编程题在线测评第3周——从键盘中来,到键盘中去,开始输入和输出啦第4周——无处不在的抉择第5周——周而复始的循环之道第6周——函数:分工与合作的艺术第7周——《盗梦空间》的逻辑:探寻递归的奥秘第8周—— 一堆数据来了,你准备好了吗第9周——指针:C语言世界中所向披靡的“金箍棒”第10周——字符串:C语言世界中的大力水手第11周——指针的孪生兄弟第12周——海陆空齐上阵:又来了一堆数据 第3周——从键盘中来,到键盘中去,开始输入和输出啦 学分绩计算 #include<stdio.h> int

2021-06-27 10:57:07 361

转载 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 1194

原创 哈希表

把大数据映射在小范围内 以单链表为基础知识 其实哈希表就相当于是一个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 136

原创 快速排序求第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 606

原创 归并排序求逆序数代码及解释

为什么要用归并排序来求逆序数? 归并排序的特点,是先递归,再排序,在排序的过程中就可以找出逆序对的个数。 需要注意的点 ans的范围,虽然题目给的数据在int范围内,但是我们无法保证逆序数对数在int范围内,所以,不管三七二十一直接开long long。(就是因为没有开long long ,一直wa) 为什么要那样子计数:ans += mid - i + 1;(自己带一个例子看看就懂了) 通常归并求逆序数,快排求最小数 代码如下 板子可自己敲三遍以上背过 #include <bits/stdc++

2021-03-29 22:09:57 390

原创 整数二分和浮点数二分

整数二分 在这里插入代码片 浮点数二分 在这里插入代码片

2021-03-29 18:23:11 152

原创 扩展欧几里得算法

裴蜀定理 对于任意一对正整数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 152

原创 打印沙漏——c++

对应代码和图找规律 #include<bits/stdc++.h> using namespace std; int main() { int n; string op; cin >> n; cin >> op; int f = (int)sqrt((n+1)/2);//层数,公式自推 int ans = f*f*2 - 1;//实际的字符数 //输出上一层 for (int i = f; i >= 1; i -- ) { int x = (

2021-03-14 10:35:06 1162

原创 牛客--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 428

原创 牛客--方格取数--动态规划--四维

链接:方格取数 来源:牛客网 设有N*N的方格图(N ≤ 10,我们将其中的某些方格中填入正整数,而其他的方格中则放入数字0。如下图所示(见样例): 某人从图的左上角的A 点出发,可以向下行走,也可以向右走,直到到达右下角的B点。在走过的路上,他可以取走方格中的数(取走后的方格中将变为数字0)。 此人从A点到B 点共走两次,试找出2条这样的路径,使得取得的数之和为最大。 输入描述: 输入的第一行为一个整数N(表示N*N的方格图),接下来的每行有三个整数,前两个表示位置,第三个数为该位置上所放的数。一行单独

2021-03-08 20:01:26 326 1

原创 栈与队列

栈 //栈:先进后出 int stk[N], tt; //插入 stk[ ++ tt ] = x; //弹出 tt --; //判断栈是否为空 if(tt > 0) not empty else empty //栈顶 stk[tt]; 队列 //队列:先进先出 int q[N],hh,tt = -1; //插入 q[ ++ tt] = x; //弹出 hh ++ ; //判断是否为空 if(hh <= tt) not empty else empty //取出队头元素 q[hh]; //取

2021-02-24 08:34:00 124

原创 并查集

背过 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 141

原创 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 142

原创 快速幂板子

快速幂 #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 205

原创 最佳牛围栏

最佳牛问题简析 原题目如下 代码如下 #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 301

原创 十进制转二进制位运算

2020年12月14日三个知识点纪录 十进制转二进制位运算 快速幂板子 筛法求素数

2020-12-14 22:17:18 286

空空如也

空空如也

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

TA关注的人

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