- 博客(22)
- 收藏
- 关注
原创 米勒拉宾素数测试
查看了一篇热搜文章,包含费马定理,合数判定,快速幂等知识,反复思考,还是觉得记住代码最为简单,以下是nowcoder上的题目通过代码。觉得自己的通过代码耗时太长,查看了一位叫做。的一种高效率素数测试算法。同学的代码,发现了叫做。(他的码风和我好像)
2023-06-01 15:51:11
193
原创 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
原创 扩展欧几里得算法
裴蜀定理 对于任意一对正整数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
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅