自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(60)
  • 收藏
  • 关注

原创 图的m着色问题(第十二次实验)

图的m着色问题问题: 图的m着色问题。给定无向连通图G和m种颜色,用这些颜色给图的顶点着色,每个顶点一种颜色。如果要求G的每条边的两个顶点着不同颜色。给出所有可能的着色方案;如果不存在,则回答“NO”。解析: 图着色问题描述为: 给定无向连通图G=(V, E)和正整数m,求最小的整数m,使得用m种颜色对G中的顶点着色.使得任意两个相邻顶点着色不同。这个问题是图的m可着色判定问题。若一个图最少需要m种颜色才能使图中每条边连接的2个顶点着不同颜色,则称这个数m为该图的色数。求一个图的色数m的问题称为图的m可

2021-06-22 20:28:29 607

原创 构造最优前缀的贪心算法(第十一次实验)

构造最优前缀的贪心算法问题:构造最优前缀的贪心算法,即哈夫曼算法解析:我们可以用一个数据结构维护所有数字的最小两个值,每次取最小的两个值就是序列,把这两个值累加到结果上,那么结果就是WPL设计:priority_queue<int, vector<int>, greater<int> >q; for(int i = 0; i < n; i++){ int x = rd(); q.push(x); }

2021-05-24 22:17:08 134

原创 LCS与背包问题(第九次实验)

问题:一、X = <x1, x2, x3,…xm>, Z=<z1, z2, z3,…zk>,如果存在X的元素构成的按下标严格递增序列<Xi1, Xi2, Xi3,…Xik>,使Xij = Zj, j= 1,2,3,…k那么 Z 是 X 的子序列,Z 含有的元素个数,称为子序列的长度。求最长。二、给定一个背包且给定其最大容量,现给定一系列物品,分别给定其体积和价值,请问背包里放入物品且所有物品体积和小于等于背包容量,求背包里物品价值和的最大值。解析:X=<A,

2021-05-17 20:43:43 159 1

原创 贪心算法和装载问题(第十次实验)

问题:一、n 项活动申请使用同一个礼堂,每项活动有一个开始时间和一个截 止时间。如果任何两个活动不能同时举行,问如何选择这些活动,从而使得被安排的活动数量达到最多。二、给你一个空间,告诉你这个空间的最大储存空间,告诉你一系列物品且知道每件物品的价值和占用空间,每件物品只能取一遍,问这个这个存储空间存放的东西价值和最大是多少。解析:一、把活动按照截止时间进行升序排序,然后从前往后遍历,只要该活动与前面的活动没有结合的就可以选入。二、0/1背包问题伪代码设计:一、A = {1}J = 1Fo

2021-05-17 16:36:20 335

原创 矩阵链乘法(第八次实验)

问题:n个矩阵序列,确定一种计算次序使得运算的总次数最少。解析:Ai…j:表示矩阵链相乘的子问题Ai,Ai+1…Aj;M[i…j]:表示得到乘积Ai…j所用的最少基本运算次数;假设,最后一次相乘发生在矩阵链Ai…k和Ak+1…j之间,即AiAi+1…Aj=(AiAi+1…Ak)(Ak+1Ak+2…Aj) k=i,i+1,…,j-1伪代码 :For r=2 to n do For i=1 to n-r+1 do J=i+r-1 m[i,k]=m[i+1,j]+Pi-1PkPj S[

2021-05-06 21:14:04 192

原创 投资问题(第七次实验)

问题: 给你m万元和n个投资项目,每个项目投资不同的钱会有不同的回报。解析: 因为每个项目投资不同的钱会有不同的收益,所以我们可以将每个项目投资不同的钱看成不同的个体(因为每个项目投资不同的钱和回报之间没有联系),同时同一项目同一付出投资都是一份的,所以我们可以将拆分后的问题转化为0/1背包问题,即有m万元和n*m个项目,告诉你每个分解后项目的付出和回报。设计:for(0 -> n*m) for(m - > cost[i]) dp[j] = max(dp[j], dp[j - cos

2021-04-25 17:44:42 209

原创 选第k小元素:特定分治策略(第六次实验)

问题: 选择第k小元素,特定分治策略解析:代码:#include<bits/stdc++.h>using namespace std;const int maxn = 1e3 + 10;int rd(){ int x; scanf("%d", &x); return x;}int n, k;int selectK(vector<int> &v, int k){ vector<int>groupMi

2021-04-19 22:22:40 105

原创 Popular Cows POJ - 2186(Tarjan+极大强连通分量+缩点 )

Every cow’s dream is to become the most popular cow in the herd. In a herd of N (1 <= N <= 10,000) cows, you are given up to M (1 <= M <= 50,000) ordered pairs of the form (A, B) that tell you that cow A thinks that cow B is popular. Since popu

2021-04-14 23:52:08 96

原创 告诉一系列同一平面上的点,求最近点对(第五次实验)

问题:告诉一系列同一平面上的点,求最近点对。解析:1暴力算法,遍历每一个点对的距离求出最小值2分治算法,根据中位点二分左右区间得到最短距离,然后对区间[mid - d, mid + d]求最短距离,两值取小,不断递归。对于最近对问题最容易最直接想到的就是蛮力算法,我们可以得到每两个点的距离求最小值,但这样的时间复杂度较高。我们可以采用分治的想法解决这一问题,将复杂难问题转化为简单问题解决。但是最短点对可能出现在中位点的左右两侧,所以我们还需要求出中间区间的最短点对。设计:#include &l

2021-04-12 16:35:32 118

原创 对一个无序数组进行二分归并排序(第四次作业)

对一个无序数组进行二分归并排序问题:对一串无序的数组进行二分归并排序解析:我们可以进行递归的方式尽心二分归并排序,为了方便起见这里实现的是升序的排序。我们可以对一串数组进行二分一直到容量为1的时候开始往上递归,往上递归的时候我们得到的两个区间总是升序的,合并这两个数组时我们只需要使用归并排序就可以了,这样我们就可以得到一个有序的大区间。为了实现修改原数组,我们在中间先放一个容器来暂存数组内容,实现合并后将该容器里的数字全部放回原数组,这就达到了修改原数组的效果。设计:void merge_so

2021-03-29 15:51:42 421

原创 在排好序的数组中使用两种不同的方法获取目标数字的索引(第三次作业)

在排好序的数组中使用两种不同的方法获取目标数字的索引问题:在排序好的数组中使用两种不同的方法获取目标数字的索引,如果不存在返回0。解析:在一个数组里面查找一个数字的方法最直接的就是使用暴力的方法进行搜索,遍历每一个数组查询到目标数字即可返回。因为这个数组是排好序的,所以我们便可以使用二分搜索的方法来查找这个数字。(便于操作我们令得到的数组是升序排序的)设计:(1)暴力算法: For(数组){ If(arr[i] == x){ return i; 退出 }}Return 0;(

2021-03-22 15:43:41 173 1

原创 用Floyd算法和Dijkstra算法分别求多源最短路径和单源最短路径(第二次作业)

用Floyd算法和Dijkstra算法分别求多源最短路径和单源最短路径。问题:用Floyd算法求解下图各个顶点的最短距离。写出Floyd算法的伪代码和给出距离矩阵(顶点之间的最短距离矩阵)。对于下图使用Dijkstra算法求由顶点a到顶点h的最短路径,按实验报告模板编写算法。解析:用Floyd算法求解题一,我们用三重循环进行判断,当然我们可以进行相应的减枝,不用对无效的数据即没有连通的点算最短距离。用Dijkstra算法求解题二,我们可以用优先队列优化问题,获取最短边的时候可以降低复杂度,因

2021-03-15 16:03:54 436

原创 分别采用prim算法与kruskal算法构造最小生成树(第一次作业)

分别采用prim算法与kruskal算法构造最小生成树1.问题举一个实例,画出采用Prim算法构造最小生成树的过程,并按实验报告模板编写算法。举一个实例,画出采用Kruskal算法构造最小生成树的过程,并按实验报告模板编写算法。有n个村庄需要修通道路,已知每两个村庄之间的距离,问怎么修路,使得所有村庄都连通(但不一定有直接的公路相连,只要能间接通过公路到达即可),并且道路总长度最小?请计算最小的公路总长度。2.解析令一张连通图的点集为V,未标记的点集合为V1;V1 = V;Prim算法的核心

2021-03-08 22:17:20 1919

原创 HDU - 1808 Halloween treats(鸽巢原理)

Halloween treatsEvery year there is the same problem at Halloween: Each neighbour is only willing to give a certain total number of sweets on that day, no matter how many children call on him, so it may happen that a child will get nothing if it is too la

2021-01-26 23:46:53 202 1

原创 java抽象类与接口的个人理解与运用

1.抽象类学习抽象类时应当先理解抽象方法的运用,抽象方法是一种特殊的方法,他有声明但没有具体的实现,具体的实现在继承的子类中实现。抽象方法的申明格式:public abstract void myFunction();有抽象方法的类是抽象类,当然抽象方法和抽象类都需要有abstract作为修饰,抽象类不能用来创建对象。我们可以笼统地定义抽象类为有抽象函数的特殊类。public abstract class abstractTest{//抽象类 public abstract void m

2020-12-01 16:39:18 86

原创 7-15 串的模式匹配(strstr函数的妙用)

串的模式匹配给定两个由英文字母组成的字符串 String 和 Pattern,要求找到 Pattern 在 String 中第一次出现的位置,并将此位置后的 String 的子串输出。如果找不到,则输出“Not Found”。本题旨在测试各种不同的匹配算法在各种数据情况下的表现。各组测试数据特点如下:数据0:小规模字符串,测试基本正确性;数据1:随机数据,String 长度为 1e5​​ ,Pattern 长度为 10;数据2:随机数据,String 长度为 1e​5​​ ,Pattern 长度为

2020-11-24 23:12:19 282

原创 java正则表达式

java正则表达式正则表达式定义了字符串的模式。正则表达式可以用来搜索、编辑或处理文本。正则表达式并不仅限于某一种语言,但是在每种语言中有细微的差别。以下是正则表达式的语法符号描述\将下一字符标记为特殊字符、文本、反向引用或八进制转义符。例如,“n"匹配字符"n”。"\n"匹配换行符。序列"\\“匹配”\","\(“匹配”("。^匹配输入字符串开始的位置。如果设置了 RegExp 对象的 Multiline 属性,^ 还会与"\n"或"\r"之后的位置匹配。$

2020-11-21 00:36:18 121

原创 java多态的个人理解及运用

**多态**定义: 多态是同一个行为具有多个不同表现形式或形态的能力。通俗一点讲多态是同一种操作在不同环境条件下多种不同的体现,比如在网页上你按F5是刷新,在vscode上你按F5可以编译运行程序。多态的优点:消除类型之间的耦合关系可替换性可扩充性接口性灵活性简化性...

2020-11-20 20:32:01 100 2

原创 Xenia and Bit Operations(线段树单点修改)

Xenia and Bit OperationsXenia the beginner programmer has a sequence a, consisting of 2n non-negative integers: a1, a2, …, a2n. Xenia is currently studying bit operations. To better understand how they work, Xenia decided to calculate some value v for a.

2020-10-29 00:12:15 232

原创 链式实现栈并用其解决十进制数转化为二进制数

#include<stdio.h>#include<stdlib.h>const int MAX_SIZE=1e5+10;typedef struct SNode{ struct SNode *next; int data;}Stack;Stack* creatStack(){ Stack *head; head=(Stack*)malloc(sizeof(struct SNode)); head->next=NULL; head->data=0

2020-10-24 18:22:21 1401

原创 二叉树的遍历方式(6-9 二叉树的遍历 (25分)为例)

本题要求给定二叉树的4种遍历。函数接口定义:void InorderTraversal( BinTree BT );void PreorderTraversal( BinTree BT );void PostorderTraversal( BinTree BT );void LevelorderTraversal( BinTree BT );其中BinTree结构定义如下:typedef struct TNode *Position;typedef Position BinTree;str

2020-10-11 22:27:17 123

原创 二叉树的高度求解(非递归方式与递归方式)以6-8 求二叉树高度 (20分)为例

非递归方式实现二叉树高度求解有点类似于二叉树的层序遍历,将二叉树存储的数据存入数组中,在计算时由上一层得到下一层的节点数量然后在遍历数组时读完相对应的数据量时高度累加#include <stdio.h>#include <stdlib.h>typedef char ElementType;typedef struct TNode *Position;typedef Position BinTree;struct TNode{ ElementType Data;

2020-10-11 00:04:38 119

原创 单链表的逆序输出 PTA6-1 单链表逆转 为例

#include <stdio.h>#include <stdlib.h>typedef int ElementType;typedef struct Node *PtrToNode;struct Node { ElementType Data; PtrToNode Next;};typedef PtrToNode List;List Read(); /* 细节在此不表 */void Print( List L ); /* 细节在此不表 */

2020-10-09 23:52:30 704

原创 双向链表的增删改查(个人使用)

以下代码仅供参考,阅读时请先看NOTE,避免浪费时间/** * @author: HCHO * @lastUpdateTime:2020/10/3 * @description: 双向链表的增删改查 *//*NOTE:所有代码仅供我个人学习使用,方法可能有误或者复杂化也有可能会有bug,读者请慎重操作创建了一个头节点只是为了操作方便在进行删除或增加的时候都应该考虑在最后一个节点操作时tail指针的改变所以引入双指针上述情况造成的原因是我本人在建立链表时记录了尾节点的地址(为了逆序遍历

2020-10-03 23:23:58 112

原创 C语言单链表实现增删改查操作(详细版本)

/** * @author: HCHO; * @lastUpDateTime: 2020/10/2 * 单链表的增删改查*//* 以下代码链表的头指针head都是为了方便操作而添加的空头指针; head的下标为0; 若在第i个节点后插入数据即往下标为i的节点后插入*/#include<stdio.h>#include<time.h>#include<stdlib.h>const int maxn = 1e5 + 10;typedef st

2020-10-03 12:22:31 780

原创 Eclipse将代码连接到github

一、打开Eclipse,在工具栏内找到Help,然后按Install New Software,这一步是下载上传的插件EGit,新版的Eclipse一般都自带不需要再下载。点击add在弹出来的页面里输入EGit和下载EGit的网站,这里网站可填http://download.eclipse.org/egit/updates,后面将下载下来的选起来然后一路next就好了,如果是新版的Eclipse你可以跳过以上步骤。二、配置参数在Eclipse上方的菜单栏里面找到windows,然后点Preferen

2020-09-17 22:17:20 202

原创 Billboard HDU - 2795(线段树)

Billboard HDU - 2795At the entrance to the university, there is a huge rectangular billboard of size h*w (h is its height and w is its width). The board is the place where all possible announcements are posted: nearest programming competitions, changes in

2020-08-31 23:53:22 171

原创 L2-012 关于堆的判断(小顶堆)

L2-012 关于堆的判断 (25分)将一系列给定数字顺序插入一个初始为空的小顶堆H[]。随后判断一系列相关命题是否为真。命题分下列几种:x is the root:x是根结点;x and y are siblings:x和y是兄弟结点;x is the parent of y:x是y的父结点;x is a child of y:x是y的一个子结点。输入格式:每组测试第1行包含2个正整数N(≤ 1000)和M(≤ 20),分别是插入元素的个数、以及需要判断的命题数。下一行给出区间[−10000

2020-08-24 22:55:39 712

原创 L2-008 最长对称子串(马拉车模板)

L2-008 最长对称子串 (25分)对给定的字符串,本题要求你输出最长对称子串的长度。例如,给定Is PAT&TAP symmetric?,最长对称子串为s PAT&TAP s,于是你应该输出11。输入格式:输入在一行中给出长度不超过1000的非空字符串。输出格式:在一行中输出最长对称子串的长度。输入样例:Is PAT&TAP symmetric?输出样例:11#include<list>#include<string.h>#incl

2020-08-19 15:54:07 471

原创 HDU - 6799Parentheses Matching(贪心+栈)

Parentheses MatchingGiven a string P consisting of only parentheses and asterisk characters (i.e. “(”, “)” and “"), you are asked to replace all the asterisk characters in order to get a balanced parenthesis string with the shortest possible length, where

2020-08-12 08:51:59 154

原创 HDU - 6768The Oculus(哈希)

The OculusLet’s define the Fibonacci sequence F1,F2,… as F1=1,F2=2,Fi=Fi−1+Fi−2 (i≥3).It’s well known that every positive integer x has its unique Fibonacci representation (b1,b2,…,bn) such that:· b1×F1+b2×F2+⋯+bn×Fn=x.· bn=1, and for each i (1≤i<n)

2020-08-11 18:31:36 172

原创 HZNUOJ2796A Very Easy Math Problem(思维+欧拉函数)

A Very Easy Math ProblemDescription有一天ZKL遇到一道数学题。给定三个正整数a,b,m,问有多少个整数x满足0≤x<m并且gcd(a+b,m)=gcd(b-a+x,m)。但是这对于号称“数学天才”的ZKL来说过于简单了,所以现在她把这道问题抛给了你。gcd(a,b)代表a和b的最大公约数。Input第一行一个整数T代表有T组询问。(1≤T≤10)接下来T行每行三个整数a,b,m(1≤a≤b≤1e12 , 1≤m≤1e12)。OutputT行,第i行代

2020-08-10 14:32:33 257

原创 HZNUOJ生成树(最小生成树+kruskal算法)

生成树Description复习了 10086 遍最小生成树之后,风老板认为最小生成树的东西太简单了,但是他想考验一下队友 ZKL ,于是提出了新的问题。对于一个无向图,给出一个 x ,风老板想让 ZKL 告诉他这个图是否存在一棵生成树,对于树上的每条边权 ai ,满足 (a1&a2&…&an)&x=x (’ & '符号代表按位与运算) , 然而这个问题对于 ZKL 来说太难了,于是 ZKL 向你求助。Input第一行三个正整数 n,m,x ,表示有 n 个

2020-08-09 20:35:35 502

原创 HZNUOJ2794神枪手JoneySun (Super hard version)(思维)

神枪手JoneySun (Super hard version)Description神枪手JoneySun又双叒叕被邪恶derB_M困住了。不同的是这次他是被邪恶的B_M吃了下去,困在自己的身体里。我们认为B_M的身体是一个n×m的矩形,矩形左下角的坐标为(0,0),左上角的坐标为(0,n),右下角坐标为(m,0),JoneySun被困在某个位置(但不在边缘上),幸运的是神枪手JoneySun被吞进来的时候还携带着他的枪,不幸的是他的枪只剩一发子弹了,由于是在B_M的身体中,所以子弹弹射到边界的时候

2020-08-08 10:55:58 205

原创 HZNUOJ2803神枪手JoneySun (Easy Version)(二维数组前缀和)

神枪手JoneySun (Easy Version)DescriptionEasy Version 和 a little bit hard Version 只有数据范围的区别JoneySun被邪恶的wifepie困在了一个由1×1的网格分割的监狱里,邪恶的wifepie为了看JoneySun的笑话,在监狱里的某处监视着JoneySun,幸运的是JoneySun手中有一把枪,不幸的是wifepie掌握了分身术。我们认为这个监狱是一个2n×2m的网格,JoneySun被困在最中间,除了JoneySun所

2020-08-07 23:12:04 238

原创 CodeForces - 687A NP-Hard Problem(二分图染色模板+链式前向星存图)

NP-Hard ProblemRecently, Pari and Arya did some research about NP-Hard problems and they found the minimum vertex cover problem very interesting.Suppose the graph G is given. Subset A of its vertices is called a vertex cover of this graph, if for each ed

2020-08-06 23:40:19 174

原创 hdu2063过山车(二分图匈牙利算法)

过山车Problem DescriptionRPG girls今天和大家一起去游乐场玩,终于可以坐上梦寐以求的过山车了。可是,过山车的每一排只有两个座位,而且还有条不成文的规矩,就是每个女生必须找个个男生做partner和她同坐。但是,每个女孩都有各自的想法,举个例子把,Rabbit只愿意和XHD或PQK做partner,Grass只愿意和linle或LL做partner,PrincessSnow愿意和水域浪子或伪酷儿做partner。考虑到经费问题,boss刘决定只让找到partner的人去坐过山车,

2020-08-06 23:08:14 133

原创 LightOJ1370 Bi-shoe and Phi-shoe(欧拉函数)

Bi-shoe and Phi-shoeBamboo Pole-vault is a massively popular sport in Xzhiland. And Master Phi-shoe is a very popular coach for his success. He needs some bamboos for his students, so he asked his assistant Bi-Shoe to go to the market and buy them. Plenty

2020-08-04 20:39:27 109

原创 hduA/B(除法的模)

Problem Description要求(A/B)%9973,但由于A很大,我们只给出n(n=A%9973)(我们给定的A必能被B整除,且gcd(B,9973) = 1)。Input数据的第一行是一个T,表示有T组数据。每组数据有两个数n(0 <= n < 9973)和B(1 <= B <= 10^9)。Output对应每组数据输出(A/B)%9973。Sample Input21000 5387 123456789Sample Output7922606

2020-08-04 20:09:08 286

原创 POJ2635The Embarrassed Cryptographer(大数除法+素数筛)

DescriptionThe young and very promising cryptographer Odd Even has implemented the security module of a large system with thousands of users, which is now in use in his company. The cryptographic keys are created from the product of two primes, and are be

2020-08-04 19:53:25 179

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除