算法学习
Fresh&M
改变一些可以改变的
展开
-
字典树
字典树用途:1、给定字符串排序问题2、字符串排序结构体struct Node { int flag; //为1表示成词 struct Node *next[BASE]; } ;Node *getNewNode() { Node *p = (Node *)malloc(sizeof(Node)); p->flag = 0; memset(p->next, 0, sizeof(p->next)); return p;原创 2021-05-08 19:44:27 · 101 阅读 · 0 评论 -
堆排序
堆排序健堆原理:利用一段连续的数组空间实现逻辑上的堆。主要根据完全二叉树的父子节点间的关系,当根节点从0开始时,其父节点i对应的左孩子是 2 * i + 1, 右孩子是2 * i + 2。 相应的子节点i对应的父节点为 (i - 1)/2push一个元素(1)插入元素,在末尾插入,每次向上调整 (大根堆)void shift_up(int ind) { //从下标i开始向上调整 while(ind && data[(ind - 1) / 2] < data[原创 2021-05-01 14:46:59 · 132 阅读 · 0 评论 -
二分查找的模板
1、普通二分int Binary_search(vector<int> &nums, int target) { int l = 0, r = nums.size() - 1; while (l <= r) { //注意可以相等 int mid = (l + r) / 2; if (nums[mid] < target) { l = mid + 1; } else if (nums[原创 2021-04-10 14:58:11 · 223 阅读 · 0 评论 -
素数筛选--线性
线性筛选时间复杂度O(n)数学原理对于一个合数N = P * M1、P是最小素数2、P一定小于等于M的最小素因数3、用M * P 标记合数代码int prime[1000];void Inil(){ for (int i = 2; i <= 1000; i++){ if (!prime[i]) prime[++prime[0]] = i; //记录素数,其中prime[0]是计数器 for (int j =1; j <= prime[0]; j++){ if原创 2020-10-25 22:16:20 · 133 阅读 · 0 评论 -
二分查找实现sqrt
二分查找1、标准模板int Binary_search(int *num,int n,int x){ int head = 0,tail = n-1,mid; while (head <= tail){ mid = (head + tail) >> 1; if (num[mid] == x) return mid; else if (num[mid] > x) tail = mid - 1; else head = mid + 1; } return -1原创 2020-10-25 16:24:14 · 281 阅读 · 0 评论 -
力扣 零钱兑换-DFS
零钱兑换给定不同面额的硬币 coins 和一个总金额 amount。编写一个函数来计算可以凑成总金额所需的最少的硬币个数。如果没有任何一种硬币组合能组成总金额,返回 -1。示例 1:输入: coins = [1, 2, 5], amount = 11输出: 3解释: 11 = 5 + 5 + 1示例 2:输入: coins = [2], amount = 3输出: -1思路:贪心...原创 2020-04-10 19:15:59 · 431 阅读 · 0 评论 -
poj-3228并查集
Gold TransportationTime Limit: 2000MS Memory Limit: 65536KTotal Submissions: 3823 Accepted: 1366DescriptionRecently, a number of gold mines have been discovered in Zorroming State. To protect th...原创 2020-04-06 22:32:59 · 178 阅读 · 0 评论 -
hdu1811 并查集+拓扑排序
Rank of Tetris自从Lele开发了Rating系统,他的Tetris事业更是如虎添翼,不久他遍把这个游戏推向了全球。为了更好的符合那些爱好者的喜好,Lele又想了一个新点子:他将制作一个全球Tetris高手排行榜,定时更新,名堂要比福布斯富豪榜还响。关于如何排名,这个不用说都知道是根据Rating从高到低来排,如果两个人具有相同的Rating,那就按这几个人的RP从高到低来排。终...原创 2020-04-05 20:26:58 · 257 阅读 · 0 评论 -
拓扑序列--HDU 2647
RewardDandelion’s uncle is a boss of a factory. As the spring festival is coming , he wants to distribute rewards to his workers. Now he has a trouble about how to distribute the rewards.The workers...原创 2020-03-27 22:23:50 · 153 阅读 · 0 评论 -
关键路径--HDU4109
题目描述Problem DescriptionAli has taken the Computer Organization and Architecture course this term. He learned that there may be dependence between instructions, like WAR (write after read), WAW, RAW....原创 2020-03-27 17:20:19 · 332 阅读 · 0 评论 -
拓扑排序--确定比赛名次
TopologicalSortHdu 3342,12851285题目有N个比赛队(1<=N<=500),编号依次为1,2,3,。。。。,N进行比赛,比赛结束后,裁判委员会要将所有参赛队伍从前往后依次排名,但现在裁判委员会不能直接获得每个队的比赛成绩,只知道每场比赛的结果,即P1赢P2,用P1,P2表示,排名时P1在P2之前。现在请你编程序确定排名。Input输入有若干组,每组...原创 2020-03-26 23:34:59 · 1219 阅读 · 0 评论 -
最小生成树--Kruskal
继续通畅工程题目描述省政府“畅通工程”的目标是使全省任何两个村庄间都可以实现公路交通(但不一定有直接的公路相连,只要能间接通过公路可达即可)。现得到城镇道路统计表,表中列出了任意两城镇间修建道路的费用,以及该道路是否已经修通的状态。现请你编写程序,计算出全省畅通需要的最低成本。输入描述:测试输入包含若干测试用例。每个测试用例的第1行给出村庄数目N ( 1< N < 100 );...原创 2020-03-26 17:05:25 · 155 阅读 · 0 评论 -
浙大复试-最短路径问题
求两点的最短路径题目描述给你n个点,m条无向边,每条边都有长度d和花费p,给你起点s终点t,要求输出起点到终点的最短距离及其花费,如果最短距离有多条路线,则输出花费最少的。输入描述:输入n,m,点的编号是1~n,然后是m行,每行4个数 a,b,d,p,表示a和b之间有一条边,且其长度为d,花费为p。最后一行是两个数 s,t;起点s,终点t。n和m为0时输入结束。(1<n<=1...原创 2020-03-26 02:45:07 · 484 阅读 · 0 评论 -
玛雅人的密码-BFS
题目描述玛雅人有一种密码,如果字符串中出现连续的2012四个数字就能解开密码。给一个长度为N的字符串,(2=<N<=13)该字符串中只含有0,1,2三种数字,问这个字符串要移位几次才能解开密码,每次只能移动相邻的两个数字。例如02120经过一次移位,可以得到20120,01220,02210,02102,其中20120符合要求,因此输出为1.如果无论移位多少次都解不开密码,输出-1。...原创 2020-03-20 21:17:12 · 376 阅读 · 0 评论 -
北大复试题-八皇后
题目描述会下国际象棋的人都很清楚:皇后可以在横、竖、斜线上不限步数地吃掉其他棋子。如何将8个皇后放在棋盘上(有8 * 8个方格),使它们谁也不能被吃掉!这就是著名的八皇后问题。 对于某个满足要求的8皇后的摆放方法,定义一个皇后串a与之对应,即a=b1b2…b8,其中bi为相应摆法中第i行皇后所处的列数。已经知道8皇后问题一共有92组解(即92个不同的皇后串)。 给出一个数b,要求输出第b个串。串...原创 2020-03-20 15:33:31 · 569 阅读 · 0 评论