- 博客(22)
- 收藏
- 关注
原创 米勒拉宾素数测试
查看了一篇热搜文章,包含费马定理,合数判定,快速幂等知识,反复思考,还是觉得记住代码最为简单,以下是nowcoder上的题目通过代码。觉得自己的通过代码耗时太长,查看了一位叫做。的一种高效率素数测试算法。同学的代码,发现了叫做。(他的码风和我好像)
2023-06-01 15:51:11 97
原创 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 431
原创 动态规划——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 77
原创 高精度学习笔记及代码模板
整数加法需要注意的点:倒序存储方便后续操作采用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 103
原创 高级语言程序设计——编程题答案
编程题在线测评第3周——从键盘中来,到键盘中去,开始输入和输出啦第4周——无处不在的抉择第5周——周而复始的循环之道第6周——函数:分工与合作的艺术第7周——《盗梦空间》的逻辑:探寻递归的奥秘第8周—— 一堆数据来了,你准备好了吗第9周——指针:C语言世界中所向披靡的“金箍棒”第10周——字符串:C语言世界中的大力水手第11周——指针的孪生兄弟第12周——海陆空齐上阵:又来了一堆数据第3周——从键盘中来,到键盘中去,开始输入和输出啦学分绩计算#include<stdio.h>int
2021-06-27 10:57:07 250
转载 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 1100
原创 哈希表
把大数据映射在小范围内以单链表为基础知识其实哈希表就相当于是一个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 96
原创 快速排序求第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 475
原创 归并排序求逆序数代码及解释
为什么要用归并排序来求逆序数?归并排序的特点,是先递归,再排序,在排序的过程中就可以找出逆序对的个数。需要注意的点ans的范围,虽然题目给的数据在int范围内,但是我们无法保证逆序数对数在int范围内,所以,不管三七二十一直接开long long。(就是因为没有开long long ,一直wa)为什么要那样子计数:ans += mid - i + 1;(自己带一个例子看看就懂了)通常归并求逆序数,快排求最小数代码如下板子可自己敲三遍以上背过#include <bits/stdc++
2021-03-29 22:09:57 316
原创 扩展欧几里得算法
裴蜀定理对于任意一对正整数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 100
原创 打印沙漏——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 1060
原创 牛客--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 329
原创 牛客--方格取数--动态规划--四维
链接:方格取数来源:牛客网设有N*N的方格图(N ≤ 10,我们将其中的某些方格中填入正整数,而其他的方格中则放入数字0。如下图所示(见样例):某人从图的左上角的A 点出发,可以向下行走,也可以向右走,直到到达右下角的B点。在走过的路上,他可以取走方格中的数(取走后的方格中将变为数字0)。此人从A点到B 点共走两次,试找出2条这样的路径,使得取得的数之和为最大。输入描述:输入的第一行为一个整数N(表示N*N的方格图),接下来的每行有三个整数,前两个表示位置,第三个数为该位置上所放的数。一行单独
2021-03-08 20:01:26 243 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 68
原创 并查集
背过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 93
原创 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 89
原创 快速幂板子
快速幂#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 99
原创 最佳牛围栏
最佳牛问题简析原题目如下代码如下#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 255
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人