![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法
文章平均质量分 63
菇凉小伙
努力加油奋斗
展开
-
DES对称加密算法介绍
DES全称为Data Encryption Standard,即数据加密标准,是一种使用密钥加密的块算法,1977年被美国联邦政府的国家标准局确定为联邦资料处理标准(FIPS),并授权在非密级政府通信中使用,随后该算法在国际上广泛流传开来。需要注意的是,在某些文献中,作为算法的DES称为数据加密算法(Data Encryption Algorithm,DEA),已与作为标准的DES区分开来。D...原创 2020-03-13 18:36:39 · 809 阅读 · 0 评论 -
最短管道距离--这样做最简单-。-
题目描述:在一张2D地图上有N座城市,坐标依次是(X1, Y1), (X2, Y2), ... (XN, YN)。 现在H国要修建一条平行于X轴的天然气主管道。这条管道非常长,可以认为是一条平行于X轴的直线。 小Ho想知道如何修建这条管道,可以使N座城市到管道的垂直距离之和最小。请你求出这个最小的距离之和。Input:第一行包含一个整数N。 以下N行每行包含两个整数X...原创 2020-02-29 18:44:37 · 1106 阅读 · 0 评论 -
Partitioning by Palindromes—最小组成回文串(区间dp)
题目链接:Partitioning by Palindromes UVA - 11584 题意:输入一个有小写字母组成的字符串,你的任务是将它划分成尽量少的回文串思路:dp[i]代表到第i位的最小值,枚举它的前几位求出最小值,为了方便枚举整个长度我们 从str[1]开始输入代码如下:#include<iostream>#include<stdio.h>#...原创 2018-11-07 11:32:32 · 287 阅读 · 0 评论 -
畅通工程(HDU-1232) (并查集)
题目链接:HDU - 1232题目描述:某省调查城镇交通状况,得到现有城镇道路统计表,表中列出了每条道路直接连通的城镇。省政府“畅通工程”的目标是使全省任何两个城镇间都可以实现交通(但不一定有直接的道路相连,只要互相间接通过道路可达即可)。问最少还需要建设多少条道路? input测试输入包含若干测试用例。每个测试用例的第1行给出两个正整数,分别是城镇数目N ( < 1000 ...原创 2018-11-05 13:15:41 · 165 阅读 · 0 评论 -
Hello World!(UVA - 11636)
题目链接:Hello World! UVA - 11636 解题思路:打表二分查询hello world最小复制次数。代码如下:#include<iostream>#include<stdio.h>#include<string.h>#include<algorithm>using namespace std;typedef l...原创 2018-11-05 15:34:29 · 201 阅读 · 0 评论 -
字符串的匹配 KMP算法分析
图片来源于 土豆洋芋山药蛋 https://blog.csdn.net/qq_33414271/article/details/837894781.什么是KMP算法?在主串Str中查找模式串Pattern的方法中,有一种方式叫KMP算法KMP算法是在模式串字符与主串字符匹配失配时,利用已经匹配的模式串字符子集的最大块对称性,让模式串尽量后移的算法。2. 暴力匹配算法假设现...原创 2018-11-08 17:18:48 · 426 阅读 · 0 评论 -
最长上升子序列 LIS算法实现
最长上升子序列LIS算法实现LIS(Longest Increasing Subsequence)最长上升(不下降)子序列有两种算法复杂度为O(n*logn)和O(n^2)。在上述算法中,若使用朴素的顺序查找在D1..Dlen查找,由于共有O(n)个元素需要计算,每次计算时的复杂度是O(n),则整个算法的时间复杂度为O(n^2),与原来算法相比没有任何进步。但是由于D的特点(2),在D中查...转载 2018-11-08 17:38:13 · 248 阅读 · 0 评论 -
Spreading the Wealth( UVA - 11300)
题目链接: Spreading the Wealth UVA - 11300 ProblemA Communist regime is trying to redistribute wealth in a village. They have have decided to sit everyone around a circular table. First, everyone h...原创 2018-11-12 16:08:40 · 250 阅读 · 0 评论 -
Building designing UVA - 11039
题目链接:Building designing UVA - 11039 解题思路:n个绝对值不同的非0整数,求正负交叉绝对值递增能排出的最长序列长度。代码实现:原创 2018-11-14 11:31:05 · 297 阅读 · 0 评论 -
Ancient Cipher 古代密码
题目链接:Ancient Cipher UVA - 1339 题意:给出两个长度相等的大写字母序列,问能否从一个序列映射到另一个序列(序列长度 <= 100)代码实现:#include<iostream>#include<stdio.h>#include<string.h>#include<math.h>#inclu...原创 2018-11-14 12:15:34 · 602 阅读 · 0 评论 -
恢复IP地址 C++语言(数据结构)
掌握基本递归算法设计题目描述:编写程序恢复IP地址,给定一个仅包含数字的字符串,恢复它的所有可能的有效IP地址,例如,给定字符串为“25525511135”,输出“255.255.111.35“和”255.255.11.135“(顺序可以任意)。解题思路:代码实现:...原创 2018-11-19 13:09:15 · 1710 阅读 · 2 评论 -
Add All (全部相加)——UVA10954
题目链接:Add All UVA - 10954 题目描述:题解:有n(n<=5000)个数的集合S,每次可以从S中删除两个数,然后把他们的和放回集合,直到剩下一个数,每次操作的开销等于删除的两个数之和,求最小总开销,所有的数均小于10^5.这不就是Huffman编码的建立过程吗?因为n比较小,还可以采用一种更容易的写法——优先队列。代码实现:扩展:看完之...原创 2018-11-19 16:15:23 · 264 阅读 · 0 评论 -
Molar mass 分子量( UVA - 1586 )
题目链接:Molar mass UVA - 1586 题目描述:题解分析:给出物质的分子式(不带括号),求分子量。本题分子式只包括四种原子,分别为C,H,O,N,原子量分别为12.01,1.008,16.00,14.01,。例如C5H5OH的分子量为6*12.01+6*1.008+1*16.00=94.108.一次扫描字符串,注意原子后面不带数目的情况,扫描过程中,维护...原创 2018-11-24 20:49:20 · 308 阅读 · 0 评论 -
All in All 子序列(UVA 10340)
题目链接:All in All UVA - 10340输入两个字符串s和t,判断是否可以从t中删除0个或多个字符(其他字符顺序不变)得到字符串s,例如abcde可以得到bce,但无法得到dc.分析:可以使两个变量i和j对两个字符串同时进行遍历,对于每个i,如果t[j]!=s[i],那么一直对j进行递增操作,如果j越界,说明t[j......]中不存在等于s[i]的字符,查找失败。如...原创 2018-11-27 21:22:28 · 344 阅读 · 0 评论 -
Repeating Decimals 循环小数(UVA - 202)
题目链接:Repeating Decimals UVA - 202题目描述: 输入整数a和b(0<=a<=3000,1<=b<=3000),输出a/b的循环小数表示以及其循环节长度,例如a=5,b=43,小数表示为0.(116279069767441860465),循环节长度为21. 本题实际上模拟长除法的计算过程,其中每一次除法时都有...原创 2018-12-03 16:46:24 · 278 阅读 · 0 评论 -
Prince and Princess—最长上升子序列(dp+二分查找)
题目链接:Prince and Princess UVA - 10635 题目大意:给出n, m, k,求两个长度分别为m + 1 和 k + 1且由1~n * n组成的序列的最长公共子序列长的。解题思路:按一般的o(n^2)的算法超时了,所以要LCS装换成LIS的算法o(nlogn)。算法仅仅是将其中的一个序列重新标号1~m,然后按最长公共子序列的方法去做。代码如下:...原创 2018-11-07 10:54:36 · 199 阅读 · 0 评论 -
求最长上升子序列——LIS的O(nlogn)算法(二分)
LIS的O(nlogn)算法(二分)传送门:点我O(n^2)解法:(n为4w,TLE)memset(dp,1,sizeof(dp));int ans=-1;for(i=2; i<=n; i++){ for(j=1; j<i; j++) { if(s[i]>s[j]) dp[i]=max(dp[j]+1,dp...转载 2018-11-07 10:27:49 · 1017 阅读 · 1 评论 -
线性表的具体操作
题目描述 :假设有两个集合A和B,分别用两个线性表LA和LB表示,即线性表中的数据元素为集合中的元素,利用线性表的基本运算设计一个算法求一个新的集合C=AUB,即将两个集合的并集放在线性表LC中。题解:先初始化线性表LC,即创建一个空的线性表LC,将LA的所有元素复制到LC中,然后扫描线性表LB,将LB中不属于LA的元素插入到LC中,LA,LB,和LC均为SQList类型变量,假设Sq...原创 2018-10-08 13:31:16 · 594 阅读 · 2 评论 -
单链表 简单题(单链表基本操作)
题目描述:有一个带头结点的单链表L=(a1,b1,a2,b2,......an,bn),设计一个算法将其拆分成两个带头结点的单链表L1和L2,其中L1=(a1,a2,a3...an),L2=(b1,b2,b3....bn),要求L1使用L的头结点。解题思路:利用原单链表L中的所有节点通过改变指针域重组成两个单链表L1和L2,由于L1中节点的相对顺序与L中的相同,所以采用尾插法建立单链表...原创 2018-10-08 16:15:25 · 1298 阅读 · 0 评论 -
单链表基本操作(删除链表中最大元素)
题目描述:设计一个算法,删除一个单链表L中元素值最大的节点(假设这样的节点唯一)解题思路:在单链表中删除一个节点先要找到它的前驱节点,用指针p扫描整个单链表,pre指向节点p的前驱节点,在扫描时用maxp指向data域值最大的节点,maxpre指向maxp所指节点的前驱节点,当链表扫描完毕后,通过maxpre所指节点删除其后的节点。题解基础:利用单链表基本操作实现C++代码...原创 2018-10-08 16:55:14 · 8685 阅读 · 6 评论 -
单链表 基本操作(元素递增排序)
题目描述:有一个带头节点的单链表L(至少有一个数据节点),设计一个算法使其元素递增有序排列。解题思路:由于单链表L中有一个以上的数据节点,首先构造一个只含有头结点和首节点的有序单链表(只含有一个数据节点的单链表一定是有序的),然后扫描单链表L余下的节点(由P指向),在有序单链表中通过比较找插入节点P的前驱节点(由pre指向它),在pre节点之后插入P节点,知道P==NULL为止(这里实...原创 2018-10-08 17:30:17 · 8196 阅读 · 5 评论 -
栈的应用之求解迷宫问题(栈操作)
问题描述:给定一个M*N的迷宫图,求一条从指定入口和出口的迷宫路径。假设迷宫图如图所示:M=N=6的迷宫图数据组织:为了表示迷宫,设置一个数组mg,其中每个元素表示一个方块的状态,为0表示方块是通道,为1表示方块是障碍物(不可走),为了算法方便,一般在迷宫的外围加一条围墙,例如上图的迷宫表示为(由于迷宫四周加了一道围墙,故mg数组的行数的列数均加上2)迷宫栈的声明:ty...原创 2018-10-31 10:02:12 · 1639 阅读 · 0 评论 -
栈的基础知识(图集)
栈的基本知识: 这些是关于栈操作的基本知识,整理时用图片的方式来做了这个博客,可能浏览时给大家带来不便,望大家见谅,谢谢理解!祝学习愉快!...原创 2018-10-31 10:54:38 · 478 阅读 · 2 评论 -
How many Tables(并差集应用)
题目描述:Today is Ignatius' birthday. He invites a lot of friends. Now it's dinner time. Ignatius wants to know how many tables he needs at least. You have to notice that not all the friends know each o...原创 2018-10-31 10:59:49 · 182 阅读 · 0 评论 -
B - 棋盘问题( POJ - 1321)(搜索问题)
题目描述:在一个给定形状的棋盘(形状可能是不规则的)上面摆放棋子,棋子没有区别。要求摆放时任意的两个棋子不能放在棋盘中的同一行或者同一列,请编程求解对于给定形状和大小的棋盘,摆放k个棋子的所有可行的摆放方案C。Input输入含有多组测试数据。 每组数据的第一行是两个正整数,n k,用一个空格隔开,表示了将在一个n*n的矩阵内描述棋盘,以及摆放棋子的数目。 n <= 8 , k ...原创 2018-10-31 11:09:43 · 304 阅读 · 0 评论 -
And Then There Was One (约瑟夫环)(动态规划)
UVA - 1394 原题目链接题目描述:Let’s play a stone removing game. Initially, n stones are arranged on a circle and numbered 1, . . . , n clockwise (Figure 1). You are also given two numbers k and m. From...原创 2018-10-31 20:16:14 · 446 阅读 · 0 评论 -
Dragon of Loowater (排序贪心)
UVA - 11292 题目链接!题目描述:Once upon a time, in the Kingdom of Loowater, a minor nuisance turned into a major problem.The shores of Rellau Creek in central Loowater had always been a prime breeding g...原创 2018-11-01 15:44:40 · 198 阅读 · 1 评论 -
Commando War(排序贪心)
Commando War UVA - 11729 (题目链接)题目描述:解题思路:该题利用贪心算法将任务时间由长到短贪心即可得到最短时间!代码如下:#include<iostream>#include<string.h>#include<stdio.h>#include<stdlib.h>#include<...原创 2018-11-01 16:37:47 · 283 阅读 · 0 评论 -
GCD LCM (简单数学题)
GCD LCM (题目链接) UVA - 11388 题目描述:The GCD of two positive integers is the largest integer that divides both the integers without any remainder. The LCM of two positive integers is the smallest po...原创 2018-11-03 14:00:43 · 759 阅读 · 0 评论 -
判断对称串(栈应用)
题目描述:利用顺序栈判断一个字符串是否为对称串。所谓对称串是从左向右读和从右向左读的序列相同。解题思路:n个元素连续进栈,产生的连续出栈序列和输入序列正好相反,对于字符串str从头到尾将其所有元素连续进栈,如果所有元素连续出栈产生的序列和str从头到尾的字符依次相同,表示str是一个对称串,返回真,否则,表示str不是对称串,返回假。代码如下:#include<iostr...原创 2018-11-02 16:32:41 · 3334 阅读 · 0 评论 -
括号匹配 (栈和队列)
题目描述:假设一个算术表达式中可以包含三种括号:圆括号“(”和“)”,方括号“[”和“]”和花括号“{”和“ ”,且这三种括号可按任意的次序嵌套使用(如:…[…{… …[…]…]…[…]…(…)…)。编写判别给定表达式中所含括号是否正确配对出现的算法。输出结果YES 或者 NO。输入5+{[2X5]+2}输出YES样例输入8-[{2+7]}样例输出NO解...原创 2018-11-02 14:06:20 · 855 阅读 · 0 评论 -
简单题
题目描述如题,已知一个数列有n个数,m次操作,你需要进行下面两种操作:1. 將某个位置的数平均分给一个区间,不能平均分的留下2. 求出某个位置的值输入第一行两个正整数n、m(1<=n,m<=500,000); n表示数字个数,m表示操作的个数第二行n个整数,a1,a2,a3,...,an代表数列的初始值 (ai<=10^9)接下来m行,每行2或4个整数,表示一...原创 2018-09-04 17:36:35 · 175 阅读 · 0 评论