算法
文章平均质量分 66
smile_keep looking
ok
展开
-
基础算法(一)——补
归并排序和快速排序的时间复杂度都是 O(nlogn)左右两边设置哨兵,分成左边小于x, 右边大于x。(先分交换, 再递归)为什么说快速排序一般优于归并排序?quicksort通常比其他排序算法快得多,因为它在原地运行,而不需要创建任何辅助数组来保存临时值。与merge sort相比,这是一个巨大的优势,因为分配和释放辅助数组所需的时间是显而易见的。就地操作也提高了quicksort的位置。原创 2023-05-31 20:00:55 · 620 阅读 · 0 评论 -
zoj1137+作业1--2022年5月28日
zoj 1137he second year of the university somebody started a study on the romantic relations between the students. The relation romantically involved is defined between one girl and one boy. For the study reasons it is necessary to find out the maximum se原创 2022-05-28 23:57:50 · 322 阅读 · 0 评论 -
差分约束系统---1且2--2022年5月27日
为了避免最坏情况的出现,在正权图上应使用效率更高的Dijkstra算法。Dijkstra算法选择特殊路径长度最短的路径,将其连接的V-S中的顶点加入到集合S中,同时更新数组dist[]。一旦S包含了所有顶点,dist[]就是从源到所有其他顶点的最短路径长度。(1)数据结构。 设置地图的带权邻接矩阵为map[][],即如果从源点u到顶点i有边,就令map[u][i]=<u,i>的权值,否则map[u][i]=∞; 采用一维数组dist[i]来记录从源点原创 2022-05-27 20:03:55 · 104 阅读 · 0 评论 -
zoj 2770 差分约束系统---2--2022年5月20日
bellman-ford算法允许负数环,即允许边权值为负数。只能做判断,不能算出权值。松弛算法,对边松弛,dijkstra 算法的一些推论。dist[u] // 表示 从起点到u这个中间过渡点S(s, vi ) = s( s, v(i-1) ) + w( vi-1, vi )optimal substructure(最优子结构)d[v0]=0 初始化时候。#include <stdio.h>int main(){ int dis[10], i, k, n, m原创 2022-05-20 21:51:36 · 608 阅读 · 0 评论 -
图模型2--2022-5-13
zoj 2797PTA2797*~~106 miles to Chicago~~ *Time Limit: 5000 msMemory Limit: 32768 KBIn the movie “Blues Brothers”, the orphanage where Elwood and Jack were raised may be sold to the Board of Education if they do not pay 5000 dollars in taxes at the Co原创 2022-05-15 11:40:10 · 380 阅读 · 0 评论 -
zoj-Swordfish-2022-5-6
图模型zoj 1203zoj1203求最短路径.当做一个平面图。有 横 纵 坐 标 x, y 轴最小生成树so Gabriel wants to find out the minimal total length of the tunnel required to connect all these cites. Now he asks you to write a computer program to find out the minimal length.zoj 2048原创 2022-05-12 20:34:50 · 128 阅读 · 0 评论 -
点线段树--2022-4-29
点线段树PTAzoj 2451Minimizing maximizerTime Limit: 5000 msMemory Limit: 32768 KBThe company Chris Ltd. is preparing a new sorting hardware called Maximizer. Maximizer has N inputs numbered from 1 to N. Each input represents one integer. Maximizer has one原创 2022-04-29 18:29:15 · 60 阅读 · 0 评论 -
线段树--2022年4月22日----1610----调了好久---完结撒花
线段树合并区间问题也可以当做光线照盒子,影子长度问题给了一组大数据,一组小数据思路是:生成一个线段树,保存所有可能的节点线段,每次都是对半分线段。线段树的结构,简易版线段树的节点(顺序存储)struct TreeNode { int ld, rd; int cover; // 标记颜色的种类,-1表示该节点以下都没有颜色不用再继续找了 //-2表示被拆分过。需要再往下找}Tree[Maxsize];静态线段树不做真删除一、建立线段树题目会给条件All the num原创 2022-04-22 20:11:15 · 111 阅读 · 0 评论 -
zoj1788——四分树---2022年4月18日
**Quad Trees**Time Limit: 2000 msMemory Limit: 65536 KBA binary image, such as the one shown in Figure 2(a), is usually represented as an array of binary entries, i.e., each entry of the array has value 0 or 1. Figure 2(b) shows the array that represen原创 2022-04-18 15:53:34 · 224 阅读 · 0 评论 -
zoj2833-2022.4.2
Friendship一个典型的并查集问题,由朋友的朋友也是我的朋友这个关系可以知道。其实简单可以理解成一个集合。只要是朋友,就纳入这个朋友圈。(集合)但是其实要在集合理搜索是很慢的,所以需要一个新的结构来加快速度。此题特殊的点在于,所有的点初始朋友数为1,因为自己是自己的朋友。转化为求树的高度的问题。并查集转成一颗树来理解。树中某个点的朋友个数,可以求该点所在的树的叶子结点个数。简单来说就是用基本的 WeightedUnion(int x, int y)来计算。可能会分成以下几个集合:原创 2022-04-02 22:10:46 · 378 阅读 · 0 评论 -
zoj2734-Exchange Cards-2022-3-28
https://zoj.pintia.cn/problem-sets/91827364500/problems/91827366233Exchange CardsTime Limit: 2000 msMemory Limit: 65536 KBAs a basketball fan, Mike is also fond of collecting basketball player cards. But as a student, he can not always get the money to原创 2022-03-28 21:51:57 · 156 阅读 · 0 评论 -
zoj1649-2022-3-28
RescueTime Limit: 2000 msMemory Limit: 65536 KB7 8#.#####.#.a#…r.#…#x……#…#.##…##….#……TLE,深搜超时#include<iostream>#include<string.h>#include<string>#include<algorithm>using namespace std;char maps[205][205];int visi原创 2022-03-28 20:18:22 · 238 阅读 · 0 评论 -
蓝桥杯模拟题--2022-3-26
第一题问题描述 以下是一个 25 行 25 列的字母矩阵,全部由字母 A 和 B 组成。 AAAAAAABABBAABABABAAAAAAA ABBBBBABBAABBBBBABABBBBBA ABAAABABBBABAABBBBABAAABA ABAAABABBBBBAABAABABAAABA ABAAABABBABABBABABABAAABA ABBBBBABBBABAABBBBABBBBBA AAAAAAABABABABABABAAAAAAA BBBBBBBBA原创 2022-03-26 20:01:43 · 1392 阅读 · 0 评论 -
STL编程总结--2022-3-25
STL文档访问网站: https://docs.microsoft.com/zh-cn/cpp/standard-library/map-class?view=msvc-170MFC设计文档网站 : https://docs.microsoft.com/zh-cn/cpp/mfc/mfc-desktop-applications?view=msvc-170总结:stack取栈顶用top()queue取队首元素 是front()取最后的元素是 back()// queue_back.原创 2022-03-25 14:21:01 · 671 阅读 · 0 评论 -
第十届蓝桥杯补题
第十届蓝桥杯C/C++容易看出来,这个是进制转换的思路把十进制转换成26进制。满26进一个 ‘A’可以把’A’当作0 ,‘Z’当作 25代码是越简单越好。#include <iostream>using namespace std;int main(){ string ans = ""; int n = 0; cin >> n; while (n) { if (n % 26 == 0) ans += 'Z'; else { ans原创 2022-03-23 17:57:09 · 439 阅读 · 0 评论 -
九宫幻卡(50分)
九宫幻卡(50分)Description摘自PTA。九宫幻卡是人气MMORPG《最终幻想14》中里的一个小游戏。模拟一下具体怎么放卡片就行。本题问题在于怎么确定 1到9的位置信息。 因为用的定位是二维数组。这里需要一个转换一个九宫格的转换。把该九宫格可以改变的位置改变。以下的数组中, 0表示不可以到达,1 表示可以到达。 对于(1,1) 就是九宫格中的第一个点,则它可以到达的点只有右边和下面, {0,1,1,0}表示从上不可以经过、右可以经过、下可以经过、左不可以经过。int a[10]原创 2022-03-22 21:13:36 · 3509 阅读 · 0 评论 -
csoj 坑(第5题)
这里用分治的方法分成两半,左边一半,右边一半,递归求解。#include <iostream>using namespace std;#define MAXN 1000000int A[MAXN + 1];long long ans;int maxdepth=-1;int countnumber = 0;void CAL(int lef, int rig) //产生W结构时且W中点大于任一端点则分治,否则直接计算{ int L_max = A[lef], R_ma.原创 2022-03-19 21:10:39 · 329 阅读 · 0 评论 -
POJ 2503
2503解决方法一:用 map容器,一对一的映射过去。要点二、需要注意输入的问题,这里有一行空行怎么保留,getline(cin, line); 这里读入line之后,就可以发现如果是空行,则line =""对输入的字符串进行截取。#include<iostream>#include <map>#include <iostream>#include <cstdio>#include <string>#include <m原创 2022-03-19 18:16:45 · 500 阅读 · 0 评论 -
1091 zoj Knight Moves的BFS算法和DFS
Knight Moves的BFS算法和DFS可以理解成八叉树进行层次遍历。#include <iostream>#include<string>#include<queue>using namespace std;#define MAXSTEP 0x7fffffff;int step=MAXSTEP;//用于DFS中的计算步数int visit[8][8];//记录点的访问int rules[8][2] = { {-1,2},{-2,1},{-2,-原创 2022-03-18 18:29:12 · 308 阅读 · 0 评论 -
zoj 1097 code the tree
1097 code the tree已知无根树,求prufer 序列第一步: 按无向图的思路,把所有结点的关联结点连起来,set 的insert()的方法, 可以把一个结点与其他结点连接第二步: 把所有结点度数为1 的数字入队列(从小到大)重复以下步骤第三步:把与前面度数为1 的结点相连的另一个结点(这里记为 Nextnode)记录,并且Nextnode的度数减一(大小减一)输出Nextnode的值。如果此时Nextnode的度数变成1了,也需要继续进入队列。#include<ios原创 2022-03-18 16:29:16 · 386 阅读 · 0 评论 -
POJ- 3253 Fence Repair
3253 Fence RepairInputLine 1: One integer N, the number of planksLines 2…N+1: Each line contains a single integer describing the length of a needed plankOutputLine 1: One integer: the minimum amount of money he must spend to make N-1 cutsSample Inpu原创 2022-03-12 22:03:23 · 253 阅读 · 0 评论 -
Decode the Tree poj2568--无根树记录
Decode the Tree poj2568(Prufer序列)题目要求,由题目给的prufer序列,得到无根树的广义表表示。1.树的组成元素一定是1-n这个范围。 所以在序列中最大的数字就是树的结点个数。2.树的每一个结点的度数= 数字的出现次数+1; 未出现的结点,则度数是0+1 ,为 13....原创 2022-03-12 10:51:16 · 282 阅读 · 0 评论 -
最大子数组问题
求一组数字里面最大的子数组的和第一种暴力解决但是发现很多重复计算的值可以省略的。下面是优化用分而治之的算法对于跨越的数组这里求解最大值找左边最大的子数组找右边最大的子数组相加就是最大子数组分治与合整体思路:就是从分到治到合的过程using System;namespace cchoop{ class Program { public static void Main() { int[]原创 2022-03-07 14:13:21 · 146 阅读 · 0 评论 -
补充c语言的输入输出
输入输出规范#include <stdio.h>int main(){ int n=0; char ch[24]; double s; float fl; scanf("%d",&n); printf("%d\n",n); long long num =0; scanf("%lld",&num); printf("%lld\n",num); scanf("%lf",&s); printf("%lf\n",s); scanf("%原创 2022-03-04 21:28:58 · 263 阅读 · 0 评论 -
贪心算法+0-1背包算法----2022年2月27日
贪心算法就是不管其他因素,只找对应最大的。符合贪心的例子:通过分析,发现减少逆序就可以减少加工时间。背包问题对于背包问题不能这么思考经过以上反例可以知道,不能一味找最大值。数学的问题:求, x1+x2+…+ xn = m问有多少种序列(有序的),可以用高中的排列组合解决问题。可以看成 1和0 的组合这样的序列个数怎么求?可以求在 m+n-1中 选 择 m 个1 求组合数...原创 2022-02-27 19:19:27 · 315 阅读 · 0 评论 -
动态规划----(1)2022年2.1 +高精度
稍微总结了一下一些网站算法学习https://oi-wiki.org/https://www.luogu.com.cn/(好像注册不了了)https://leetcode-cn.com/https://acm.hdu.edu.cn/ (杭电ojhttp://poj.org/ (北大ojCTF学习https://ctf-wiki.org/https://0xffff.one/d/769-ctf-cong-dao-1-zero2one (强烈安利看这个入门https://adworld.xc原创 2022-02-01 19:15:18 · 191 阅读 · 0 评论