
程序设计
文章平均质量分 68
wyc-
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
快速排序
快速排序基本思想:1. 先取出一个数作为基准数。2. 分区过程,将比这个数大的全放到它的右边,小于或等于它的全放左边。3. 再对左右重复第二步,直到到各个区间只有一个数。#include<iostream>using namespace std;template<class T>void quick_sort(T s[],int start, int...原创 2020-02-28 11:43:49 · 214 阅读 · 0 评论 -
使用数位dp解决计数问题
使用数位dp解决计数问题数位dp什么是数位dp数位dp分析参考:https://blog.youkuaiyun.com/jk211766/article/details/81474632数位dp什么是数位dp数位dp是一种计数用的dp,一般就是要统计一个区间[le,ri]内满足一些条件数的个数。所谓数位dp,字面意思就是在数位上进行dp咯。数位还算是比较好听的名字,数位的含义:一个数有个位、十位、百位...原创 2019-10-23 14:50:42 · 857 阅读 · 0 评论 -
记忆化搜索与动态优化与背包问题
背包问题动态规划(DP)—— 算法设计方法之一。问题:有几个重量和价值分别为Wi和Vi的物品。从这些物品中挑选出总重量不超过W的物品,求所有挑选方案中价值总和最大的值。 限制条件 1&lt;=n&lt;=100 1&lt;=Wi,Vi&lt;=100 1&lt;=W&lt;=10000输入样例: n = 4 (w ,v) = { (2,3), (1,2),(3,4)原创 2019-09-22 22:40:54 · 1176 阅读 · 0 评论 -
最短路径问题
单源最短路径问题单源最短路径是固定一个起点,求它到其他所以点的最短路径的问题。终点也固定的点叫做两点之间最短路径问题。因为两点之间的最短路径问题是单源最短路径问题的复杂度相同所以也归类为单元最短路径问题。 用d[i]表示从起点s出发到顶点i的最短路径。 d[i]=mind[j]+(从j到i的边的权值)|e=(j,i)属于E;d[i]=mind[j]+(从j到i的边的权值)|e=(j,i)属...原创 2018-07-26 19:58:52 · 1265 阅读 · 0 评论 -
图的概念
什么是图图是右顶点和边组成。顶点表示对象,边表示两个对象的连接关系。 一般的表示方法:顶点集合是V、边的集合是E,图记做G=(V , E), 连接两点u和v的边记做e=(u,v)。图的种类图一般分为两种:无向图有向图无向图相邻:两个顶点之间有边。 路径:相邻顶点序列称为路径。 圈:起点和终点重合的路径称为圈。 连通图:任意两点之间都有路径连接的图叫做连通图。 ...原创 2018-07-22 16:13:27 · 870 阅读 · 0 评论 -
程序设计--三角形
有n根棍子,棍子i的长度为ai。想要从中取出三根组成周长尽可能长的三角形。请输入最大的周长,若无法组成三角形则输出0。限制条件:3<=n<=100 ; 1<=ai<=10^6输入示例:n=5a={2,3,4,5,10}输出:12思路:利用三角形性质:任意两条边之和大于第三边。 三重循环枚举出所有组合-->判断是否符合条件--...原创 2018-06-22 17:01:57 · 934 阅读 · 0 评论 -
Ants(POJ No.1852)
n只蚂蚁以每秒1 cm的速度在长为L cm的杆子上爬行。当蚂蚁爬到杆子的端点上就会掉落。由于杆子太细,两只蚂蚁相遇时,他们不能交错通过,自能各自反响爬回去。对于每只蚂蚁,我们知道它距离杆子左端的距离xi, 但不知道它当前的朝向。请计算所有蚂蚁落下杆子的最短时间和最长时间。限制条件:1<=L <=10^6 ; 1<=n<= 10^6 ; 0<=xi<= L...原创 2018-06-22 20:06:36 · 370 阅读 · 0 评论 -
抽签问题
一、普通抽签问题将写有数字的n个纸片放入口袋中,抽取四次纸片,每次记下纸片上的数字后将其放回。如果这四次的数字和是m,就是你赢,否则就是对方赢。你挑战了好几回,一次都没有赢过,于是怒而撕破口袋,取出所有的纸片,检查自己是否真的有赢的可能性。请你编写一个程序,判断当纸片上写的数字是K1,K2,.......,kn时,是否存在抽取4次和为m的方案。如果存在输出Yes,否则输出No。限制条件:...原创 2018-06-23 10:41:55 · 1372 阅读 · 0 评论 -
最小生成树
最小生成树生成树的定义:在一个图中寻到这样一种子图:去除子图中的一些边,剩下的节点和边可以构成一棵树,那么这课树就是生成树。最小生成树:如果边上有权值,那么是的权值最小的生成树就叫做最小生成树(MST)。常用的最小生成树算法为Kruskal算法和Prim算法。最小生成树示例图:Prim算法Prim算法和Dijkstra算法十分相似,都是从某个顶点出发不断添加边的算法。...原创 2018-08-01 16:29:18 · 372 阅读 · 0 评论 -
次最短路径Roadblocks(POJNo.3255)
问题:某街区共有R条道路、N个路口。道路可以双向通行。问1号路口到N号路口的次短路的长度是多少?次短路指的是比最短路长度长的次短路径。同一条边可以经过多次。限制条件1⩽N⩽50001⩽N⩽50001 \leqslant N \leqslant 50001⩽R⩽1000001⩽R⩽1000001 \leqslant R \leqslant 100000输入示例:N=4R=...原创 2018-08-01 20:21:17 · 806 阅读 · 0 评论 -
数学问题的解题窍门——辗转相除法
辗转相除法求最大公约数问题:线上格点的个数给定平面上两个格点(格点是指纵横坐标都为整数的点)P1=(x1,y2),P1=(x2,y2)P_1=(x_1,y_2),P_1=(x_2,y_2)P1=(x1,y2),P1=(x2,y2) ,线段P1P2P_1P_2P1P2 上,除了P1,P2P_1,P_2P1,P2还有多少个格点??限制条件:−109⩽x1,x2,y1,y2...原创 2018-09-29 21:19:52 · 938 阅读 · 0 评论 -
小米oj 找到第 N 个数字 II
文章目录题目输入输出输入样例输出样例分析全部代码题目假如有一组字符串符合如下规律:S1=1S2=12S3=123S4=1234…S9=123456789S10=12345678910S11=1234567891011⋯S18=123456789101112131415161718⋯S _1 =1 \newlineS _2=12 \newlineS _3=123 \newlineS _...原创 2019-09-07 14:10:55 · 488 阅读 · 2 评论 -
贪心算法字典序
使用字典序使用贪心算法将两个字符串在不改变顺序的前提下合并。合并成最小串或者合并成最大串。假设有串S1,S2S_1,S_2S1,S2,合并成 TTT合并后字典序最小:如果S1[first]S_1[first]S1[first]>S2[first]S_2[first]S2[first],则将S1[first]S_1[first]S1[first]...原创 2019-09-11 11:34:47 · 293 阅读 · 0 评论 -
动态规划之二
动态规划问题2最长升子序问题问题:有一个长度为n的数列a0,a1,⋯ ,an−1a_0,a_1,\cdots,a_{n-1}a0,a1,⋯,an−1.请求出这个序列中最长的上升子序列的长度. 上升子序列是指对于任意的i<ji<ji<j都满足ai<aja_i < a_jai<aj的子序列.限制条件1⩽n⩽10000⩽a1⩽10000001 \l...原创 2019-09-24 22:52:28 · 157 阅读 · 0 评论 -
食物链(POJ 1182)运用并查集的方法解题
什么是并查集并查集是用来管理元素分组情况的数据结构。并查集可以高效的进行如下操作。不过需要注意并查集虽然可以进行合并操作,但是无法进行分割操作。...原创 2018-07-19 14:47:31 · 373 阅读 · 0 评论 -
Fence Repair 栅栏分割
Rence Repair题目: 农夫约翰为了修理栅栏,要将一块很长的木板分割成N块。准备切成的木板的长度为L1、L2、……、Ln. 未切割木板的长度恰好为切割木板的长度和。每次切断木板时,需要的开销为这块木板的长度。例如,长度为21的木板切割成5、8、8的三块木板。长为21的木板切割成13、8时,开销为21.再将长度为13的木板切割成长度5、8时,开销为13.于是合计开销为34。于是按题目要...原创 2018-07-13 11:13:15 · 3755 阅读 · 1 评论 -
贪心算法-Aaruman's Army
直线上有N个点。点X的位置是Xi。从这N个点中选中若干个点,原创 2018-07-13 09:09:48 · 176 阅读 · 0 评论 -
动态优化的再次优化,将dp数组从二维改为一维
此文上接: 1、记忆化搜索与动态优化与背包问题 https://blog.youkuaiyun.com/qq_28120673/article/details/81037700 2、使用递推关系的动态规划dp解决问题(最长公共子序列和完全背包问题) https://blog.youkuaiyun.com/qq_28120673/article/details/81043671通过上面的讨论...原创 2018-07-16 14:14:55 · 2177 阅读 · 0 评论 -
优先队列和堆
优先队列和堆1、优先队列能够完成一下操作的队列叫优先队列: 1. 插入一个数值 2. 取出最小的数值(获得值并删除)能够使用二叉高效解决上述问题的,是一种叫做堆(实际上堆有不同的数据结构,这里叫做二叉堆的数据结构)的数据结构。2、堆的结构堆的结构为二叉树: 堆的主要二叉树特性为: 1、所有的儿子节点的值一定不小于父亲节点值。 2、树的节点是...原创 2018-07-16 16:02:38 · 235 阅读 · 0 评论 -
Expedition (POJ2431)运用优先级队列解题
问题:Expedition(POJ2431)你需要驾驶一辆卡车行驶L单位的距离。最开始时,卡车上有p单位的汽油。卡车每开一单位的距离需要消耗一单位的汽油。如果在途中车上的汽油耗尽,卡车就无法继续前行,因而无法到达终点。在途中一共有n个加油站。第i个加油站在距离起点Ai单位距离的地方,最多可以给卡车加Bi单位的汽油。假设卡车的燃料箱的容量是无限大的。那么请问卡车是否能够到达终点?如果可以需要加多...原创 2018-07-17 10:02:33 · 898 阅读 · 0 评论 -
Fence Repair (PKU 3253)
Rence Repair题目: 农夫约翰为了修理栅栏,要将一块很长的木板分割成N块。准备切成的木板的长度为L1、L2、……、Ln. 未切割木板的长度恰好为切割木板的长度和。每次切断木板时,需要的开销为这块木板的长度。例如,长度为21的木板切割成5、8、8的三块木板。长为21的木板切割成13、8时,开销为21.再将长度为13的木板切割成长度5、8时,开销为13.于是合计开销为34。于是按题目要...原创 2018-07-18 10:45:56 · 326 阅读 · 0 评论 -
最基础的“穷竭搜索”
递归函数递归函数:在一个函数中再次原创 2018-07-12 14:44:15 · 376 阅读 · 0 评论 -
c++中的继承
c++能够从已有的类派生出新的类,而派生类继承了原有类的特征,包括方法。 1、简单基类从一个类派生出另一个类时,原始类称为基类,继承类称为派生类。为说明继承,首先需要一个基类。公有派生:classTableTennisPlayer{……}; classRatedPlayer : public TableTennisPlayer {……}; 在公有派生中,基类的公有成员称为派生类的一部分,基类的私有...原创 2018-07-05 20:54:02 · 208 阅读 · 0 评论 -
深度优先搜索解决Lake Counting (POJ No.2386)
深度优先搜索解决 Lake Counting (POJ No.2386)问题: 有一个大小为N*M的园子,雨后集起了水。八联通的积水被认为是连在一起的。请求出园子里中共有多少水洼?(八联通是指下图中相对W的*的部分) * * * ...原创 2019-10-17 19:38:22 · 610 阅读 · 1 评论 -
最基础的穷竭搜索(2)
特殊状态的枚举虽然生成可行空间多数采用深度优先搜索,但在装态空间比较特殊时其实可以简短的实现。比如,c++标准库中提供了next_permutation函数,它可以把n个元素共n!中不同的排列组合生成出来。又或者,通过使用位运算符,可以枚举出从n个元素中取出k个的所有情况,或某个集合的所有子集。#include<iostream>#include<algorithm...原创 2018-07-12 17:32:06 · 237 阅读 · 0 评论 -
二叉搜索树
二叉搜索树的结构二叉树的性质: 性质一:在二叉树的i层上至多有2 i-1个节点(i>=1)至少有1个 性质二:深度为k的二叉树至多有2k-1个节点,至少为k个 性质三:对任何一棵二叉树T,如果终端结点树为n,度为2的结点为n2,度为0的结点为n0 则n0=n2+n1 性质四:具有n个节点的完全二叉树的深度为[log2n]+1向下取整 性质五:如果有一颗有n个节点的完全二叉树的节...原创 2018-07-18 20:50:56 · 130 阅读 · 0 评论 -
贪心算法分析
1、硬币问题题目: 有1元、5元、10元、100元、500元的硬币各C1、C5、C10、C50、C100、C500枚。现在要用这些硬币来值付A元,最少需要多少枚硬币?假设本题至少存在一种值付方案。限制条件: 0<=C1,C5,C10,C50,C100,C500<=10^9 0<=A<=10^9输入样例: C1=3,C5=2,C10=1,C50=3,C10...原创 2018-07-12 20:53:42 · 515 阅读 · 0 评论 -
使用递推关系的动态规划dp解决问题(最长公共子序列和完全背包问题)
最长公共子序列问题问题: 给定两个字符串S1S2……S1S1S2……S1 S_1S_2……S_1 和t1t2……tnt1t2……tnt_1t_2……t_n 。求出这两个字符串最长公共秩序了的长度。字符串S1S2……SnS1S2……SnS_1S_2……S_n 的秩序了可以表示为 Si1Si2……Sim(i1&amp;lt;i2&amp;lt;……im)Si1Si2……Sim(i1&amp;lt;i2&amp;lt;……im...原创 2018-07-16 11:06:08 · 490 阅读 · 2 评论