算法
木木不会
临兵斗者皆阵列前行。
展开
-
网监系2021届校赛题解代码
一、阿美的公式题目连接张三今天上自习课的时候,发现他的同学小美在做一道数学题: 1 + 1/2 - 1/4 + 1/8 – 1/16 + 1/32 – 1/64 + … + 1/n ,张三非常喜欢小美,本想去表现一波,但是奈何自己没学好数学,于是乎,张三向你发送了请求,请你帮助张三完成题目,好让他好好去表现一波!!!(结果保留6位小数)题解:这真没说的哈,自己看自己看。#include<bits/stdc++.h>using namespace std;int m原创 2021-12-09 20:21:36 · 854 阅读 · 3 评论 -
求三角形子集的个数
求三角形子集的个数已知有n个值,求他们能组成多少个三角形给定n条边,求能组成三角形的子集个数,首先将给定数组排序,定义三个指针。分别枚举三角形的三条边,若前两个指针能保证指向的元素大于第三个指针指向的元素。则表明后两个指针所包围的元素一定能组成三角形,根据非空集合公式2^n - 1可求集合个数。#include<bits/stdc++.h>using namespace std;typedef long long ll;int main() { ll ans = 0;原创 2021-07-29 13:04:56 · 245 阅读 · 0 评论 -
回旋矩阵(左右都能旋转)
#include<bits/stdc++.h>using namespace std;int a[110][110];int main(){ int n,len,ans = 1; cin >> n; if(n%2==0)len = n/2; else len = n/2 + 1; for(int k=0;k<len;k++){ if(k%2==0){ //顺时针进行 for(int j=k;j<n-k;j++)a[k][j] = ans++原创 2021-05-23 09:52:41 · 202 阅读 · 0 评论 -
求前一万个素数怎么求? (看我就行)
前一万个素数#include<bits/stdc++.h> using namespace std;int primeSize; int prime[10010]; bool mark[104731]; void init(){ for(int i=1;i<104731;i++){ mark[i]=false; } primeSize=0; for(int i=2;i<104731;i++){原创 2021-05-22 21:14:34 · 361 阅读 · 0 评论 -
二维矩阵中求和最大的子矩阵
二维矩阵中求和最大的子矩阵这一天你来到了蓝桥杯的考场,你发现考场是一个N*M的矩阵。因为你的群友很多,你知道考场内每个人有多强,并且把实力换算成了数值。(因为有的人太弱了,所以可能出现实力值是负数的可能)你想知道考场内实力总和最大的矩阵区域的实力和是多少。(注意:区域是按照矩形划分的)输入描述:第一行两个整数 N M \left(1\leq N \times M \leq 2e5\right)(1≤N×M≤2e5)第二到N+1行是一个N*M的矩阵代表考场内的情况 \left( -2原创 2021-04-12 15:12:53 · 945 阅读 · 0 评论 -
数论大集合
数论试除法判定质数试除法分解质因数朴素筛法求素数试除法求所有约数约数个数和约数之和一些数乘积的约数个数一些数乘积的约数之和欧拉函数筛法求欧拉函数快速幂扩展欧几里得算法递归法求组合数通过预处理逆元的方式求组合数Lucas定理分解质因数法求组合数试除法判定质数bool is_prime(int x){ if (x < 2) return false; for (int i = 2; i <= x / i; i ++ ) if (x % i == 0)原创 2021-04-10 18:49:41 · 368 阅读 · 0 评论 -
字典树实战
835. Trie字符串统计#include<bits/stdc++.h>using namespace std;const int N = 110000;int n,son[N][26],cnt[N],idx;char a[N];void insert(char a[]){ int p = 0; for(int i=0;a[i];i++){ int u = a[i] - 'a'; if(!son[p][u])son[p][u] = +原创 2021-04-07 19:58:19 · 68 阅读 · 0 评论 -
利用中序和前序或者后序重建二叉树
利用前序和中序建立二叉树第一步,定义map容器,将中序in里面的元素依次与下标进行绑定,然后定义一个pre_idx整形变量,用于确定重点。第二步,调用dfs函数,进行递归。 dfs(in_begin,in_end);第三步,核心函数编写:1.判断边界,如果当il大于ir的时候,结束。2.记录下当前的根节点元素,即 pre[pre_idx];3.创建新节点装下根节点,以及通过map查询到根节点所在中序的位置。4.post_idx 自加一次,用于找寻下一次根节点。5.进行左子树的建立:dfs原创 2021-04-07 15:27:18 · 251 阅读 · 0 评论 -
C++基础图论算法大集合 (图论,看我就行了)
图论搜索技术深度优先搜索 (应用——求重心)广度优先搜索 (应用——图中的层次遍历)有向图的拓扑排序最短路问题Dijkstra算法(朴素版)Dijkstra算法 (堆优化)bellman_ford算法spfa算法spfa判负权Floyd算法最小生成树系列prim算法二分图判断二分图(染色法)二分图的最大匹配搜索技术深度优先搜索 (应用——求重心)重心是指树中的一个结点,如果将这个点删除后,剩余各个连通块中点数的最大值最小,那么这个节点被称为树的重心。本题的本质是树的dfs, 每次dfs可以确定以u原创 2021-04-06 22:20:05 · 5815 阅读 · 3 评论 -
算法模板
算法模板二维前缀和树状数组线段树KMP字符串匹配算法string 类API超级方便的N皇后离散化(将一些稀疏的数据聚拢在一起)并查集树的重心(深度优先搜索)树的拓扑排序朴素Dijkstra堆优化Dijkstra差分(将一个前缀和数组差分成原来的数组)快速幂取余怎么说呢,怕忘记,多记忆!!!二维前缀和 // 二维前缀和 for(int i=1;i<N;i++){ for(int j=1;j<N;j++){ s[i][j] = s[i-1][j] + s[i][j-1] -原创 2021-04-05 15:04:10 · 244 阅读 · 0 评论 -
来练练排序吧,好兄弟
统计图插入public class Insertion { // 进行插入排序 public static void sort(Comparable[] a){ for(int i=1;i<a.length;i++){ for(int j=i;j>0;j--){ if(greater(a[j],a[j-1])){ break; }原创 2021-03-22 19:47:20 · 101 阅读 · 0 评论 -
N皇后问题
N皇后问题咳咳,马上就要考试了,今天重新来复习一下N皇后问题,好好的整理下,嗯嗯,N皇后作为经典的回溯和剪枝应用,还是很好入门的。行,那就先看题目吧,先把题目意思弄懂。hdu 2553 “n皇后问题”题目链接:点我了解题目(这是一个链接)题目大意: 在N*N的方格棋盘放置了N个皇后,使得它们不相互攻击(即任意2个皇后不允许处在同一排,同一列,也不允许处在与棋盘边框成45角的斜线上。你的任务是,对于给定的N,求出有多少种合法的放置方法。输入样例:1850输出样例:1原创 2021-01-10 15:02:36 · 957 阅读 · 0 评论 -
二进制子集生成与排列组合
二进制子集生成与排列组合 咳咳,二进制我觉得很有必要单独列出来,二进制的玩法还是很多的,比较多的就是表示多重状态,因为只有1和0的存在,每一位可以表示可取或者不可取,还能配合排列组合使用,来试试。首先,我们来搞搞排列,列出n个数的全排列。这里我们有三种方法去搞定。想不到吧。首选当然是强大的STL提供的next_permutation函数,直接下一次排列。...原创 2020-12-24 11:26:32 · 2747 阅读 · 4 评论 -
map关联容器使用详解
map关联容器使用详解咳咳,马上就要期末考试了,说实话有些科目还是有点方的,有些课一直没有听,也没有去练习,然后最近几日还要去赶双创的项目,害。。。。按照流程,今天来讲讲map关联容器的使用,咳咳,冲冲冲。。。首先哈,来讲一个问题。有n个学生,然后每个人都有姓名name和学号id,现在给定一个学生的name,要求查找他的id。那么通常情况下呢,我们会建立一个自定义一个数据结构,里面有name和id两个变量,然后进行储存。如此,也能实现数据的存储的查询,但是每次查询的复杂度都是O(n)级原创 2020-12-23 19:00:45 · 1298 阅读 · 0 评论 -
set集合使用详解
set集合使用详解 “曾经年少爱追梦,一心只想往前飞。”那会高二,刚刚接触c语言,一发不可收拾,还记得当时为了一个想法和朋友一起想到半夜。现在我还是那个少年,那个又菜又爱玩的少年。咳咳,set集合容器,非常好哈!内部是用二叉搜索树实现的,重点是什么呢,容器内每一个元素呀,它只会出现一次,并且是排好序的,你爱了吗?复杂度更是只有 O(log2n),非常高效呢。set算是竞赛里面用的比较多的了,因为,很多题目都爱考一些集合什么的。咳咳,来看看使用方式吧。上表:写法说明set原创 2020-12-18 19:11:30 · 11239 阅读 · 2 评论 -
c++容器链表list的使用
链表和list咳咳,不是每一朵鲜花都能代表爱情,但是玫瑰做到了;不是每一颗树都能耐的住干渴,但是白杨做到了;也不是每一个人都会追求上进,挑战自我,但是我相信我们也能做到。今天给大家带来的是c++容器,list链表。list作为c++里面的容器哈,它是一个双向链表,空间可以不连续,通过指针进行数据的访问哈,他可以高效率的完成在任意地方的删插改。但是list链表不支持随机访问哦!然后我们来看看他的用法:写法说明list < int > mlist;定义一个链表原创 2020-12-18 15:39:30 · 2090 阅读 · 2 评论 -
栈(stack)与队列(queue)使用详解
栈与队列使用详解咳咳,老规矩,开局扯会犊子,上午刚刚把vector数组预习了一遍,晚上决定来看看栈,栈和队列作为非非非非非非非非非非常重要的数据结构之一,还是很有必要去学会的,咱就不去说那个先入后出的原理了,那玩意看的人头大,咱今就来学习他的用法。感谢c++,感谢函数。咳咳,咱就直接上吧,先看看他们的使用方式,然后直接实战!!!stack栈queue 队列说明stack < Type > squeue < Type > q定义s.top原创 2020-12-17 18:57:22 · 3422 阅读 · 1 评论 -
vector动态数组详解
vector动态数组咳咳,又是愉快的一天哈,icpc济南站马上就要开始,多少还有点紧张。也不知道能拿到什么样的成绩。。。咳咳,言归正传哈,今天咱学学vector动态数组,说实话这玩意用的就比较多了,我尽力写出它的所有用法,再找找实战例子哈!先来讲讲这vector的特性,话说这vector呀,能从尾部直接插入或者修改,直接访问数组任何元素以及修改。也可以根据需要来定义数组的类型以及大小;接下来,看看这vector的定义规范:功能例子说明定义 int 型数组vector原创 2020-12-16 17:14:06 · 4185 阅读 · 5 评论 -
sort函数自定义排序
sort函数自定义排序咳咳,自定义排序说实话用的地方还是很多的,像ACM里面,天梯赛里面,特别是天梯,必出这玩意。。。咳咳,水点字数,咱继续。首先哈,我们来看一下c++自带的排序;可以看出哈,默认是按升序排序的。sort不但可以对整型进行排序还能对字符串进行排序。咳咳,好像讲偏了哈,今天主要是讲自定义排序哈,c++自带的只是排升序,但是我要排降序怎么办呢。这个时候就需要我们自定义排序了。这里我们可以看到那个cmp比较函数哈,排序规则也很简单,你想着降序是大的在前.原创 2020-12-15 18:09:29 · 9766 阅读 · 9 评论 -
算法竞赛入门到进阶 --- 完整学习路线(含知识点讲解)
前言:咳咳,接触算法竞赛也有一年了,却从来都没有进行过一次系统的学习,稀里糊涂的就这么搞了半年,如今,我决定认认真真的进行一次系统的复盘。嗯嗯,先把大体路线列出来,然后往后每天搞几篇,可能大三能完成,可能永远也不能写完这些,我只能慢慢来,一起共勉吧。冲了!(主要是太菜了,不系统学习下,怕是铜牌都拿不到呀!)算法竞赛入门到进阶一、sort函数自定义排序二、c++容器的使用1.vector动态数组2.stack栈3.queue队列4.list链表5.set集合6.map映射三、二进制子集生成四、bfs.原创 2020-12-15 14:23:59 · 18673 阅读 · 12 评论