![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
algorithm
Meloor
javaweb学习中......
展开
-
计算所有点对的距离之和(牛牛的Link Power I)
涉及知识前缀和、贡献思维题目来源:牛客网解题思路方法一可以理解为计算每个点(1)与其他所有点(1)之间的连线的距离。 0 2 4 6 8a:101010101a[i]表示i到起始位置的距离g[i]表示从该点与前面所有点的连线距离之和g[0] = 0g[2] = a[2]-a[0]g[4] = a[4]-a[0]+a[4]-a[2] = 2*a[4] - sum[2]...原创 2020-02-08 22:00:22 · 971 阅读 · 0 评论 -
高精度加法、乘法、快速幂(大数类)
#include<bits/stdc++.h>const int maxn = 1e2;using namespace std;class BigInt{ public: int len; int a[maxn];//个位在最前面,数字下标从1开始,a[0]表示符号 public: BigInt(int l=1,int a1=0); friend ostre...原创 2020-02-06 19:38:00 · 195 阅读 · 0 评论 -
贪心——数列极差
题目描述125.极差 (15分)C时间限制:3000 毫秒 | C内存限制:3000 K题目内容:在黑板上写了N个正整数组成的一个数列,进行如下操作:每次擦去其中的两个数a和b,然后在数列中加入一个数a*b+1,如此下去直至黑板上剩下一个数,在所有按这种操作方式最后得到的数中,最大的为max,最小的为min,则该数列的极差定义为M=max-min.请你编程,对于给定的数列...原创 2019-05-18 20:24:09 · 605 阅读 · 0 评论 -
区间异或和——DongDong破密码
链接:https://ac.nowcoder.com/acm/contest/904/A来源:牛客网题目描述DongDong是一个喜欢密码学的女孩子,她养的萨摩耶叼着一张带着加密信息的纸条交给了她,如果她不能破解这张密码,萨摩耶是不会高兴的。给定n,m,给出长度为n的01串,每次向后移动一位,移动m-1次,最后求出这n+m-1位每一位的异或值(0^0=0,1^1=0,0^1=1)成为...原创 2019-06-07 21:20:17 · 1802 阅读 · 0 评论 -
高精度乘法 + 大数比较
高精度乘法#include<cstring>#define MAX 105using namespace std;int x[MAX+10],y[MAX+10],z[MAX*2+10];//积的位数最多是因数位数的两倍char s[MAXN];//结果void hMulti(char *a,char *b,char *s){ memset(z,0,sizeof(z...原创 2019-07-18 16:41:10 · 184 阅读 · 0 评论 -
二分搜索
实现起来比较简单,满足条件就直接上代码bool judge(int mid){//判断函数 return true;}int BinarySearch(int l,int r){ while(l<=r){ int mid=(l+r)>>1;//比特操作 if(judge(mid)){//满足条件 ...原创 2019-07-18 16:45:53 · 95 阅读 · 0 评论 -
RMQ区间最值
题目内容:从一个n位数字的整数中删除m位数字,要求余下的数字在不改变顺序的情况下,表示的值最小。请神灯帮你。输入描述整数n m, 可能有多个测试用例。 n<=1000输出描述余下的整数数。如果整数前面是0,不用输出.输入样例178543 4 1000001 1 100001 2 12345 2 54321 2输出样例13 1 0 123 321解题思路...原创 2019-07-18 16:49:33 · 96 阅读 · 0 评论 -
计算程序运行时间
#include<iostream>#include<ctime>using namespace std; int main(){ clock_t start,finish; start=clock(); cout << "HW .... " << endl; finish=clock...原创 2019-07-18 16:53:06 · 456 阅读 · 0 评论 -
int转换为char数组、string
#include<cstdlib>//swap string to_string(int n){ int m=n; int i=0,j=0; char s[max]; char ss[max]; while(m>0) { s[i++]= m%10 + '0'; m/=10; } s[i]='\0'; i=i-1; while(i>=...原创 2019-07-18 16:55:29 · 1019 阅读 · 0 评论 -
笛卡尔树
笛卡尔树定义性质构造满足二叉搜索树的性质满足堆的性质最大堆最小堆用栈实现code参考:link定义笛卡尔树是一种二叉搜索树的数据结构。树的每个节点有两个值,分别为key 和 value。Key类似于二叉搜索树,每个节点的左子树key值都要小于其本身,右子树的key值都比它大value类似堆,根节点的value是最小(或者最大)的,每个节点的value都比它的子树要小(或者大)。性质1...原创 2019-07-19 18:02:58 · 422 阅读 · 0 评论 -
打印组合数的所有情况
打印组合数的所有情况从n个数中选m个数时间复杂度 O(n!/m!)代码#include<iostream>#include<vector>#include<cstring>using namespace std;typedef long long ll;const int N = 14;int array[N];int selected[N...原创 2019-07-22 23:37:31 · 974 阅读 · 0 评论 -
合并排序
合并排序代码代码#include<stdio.h>#include<stdlib.h>void merge(int a[],int b[],int s1,int m,int s2){ int i=s1,j=m+1,k=s1; while(i<=m&&j<=s2){ if(a[i]<=a[j]) b[k++]=a[i++...原创 2019-09-12 19:21:53 · 212 阅读 · 0 评论 -
滑雪 dfs+dp
题目描述109.滑雪 (10分)C时间限制:1 毫秒 | C内存限制:3000 Kb题目内容:Michael喜欢滑雪百这并不奇怪, 因为滑雪的确很刺激。可是为了获得速度,滑的区域必须向下倾斜,而且当你滑到坡底,你不得不再次走上坡或者等待升降机来载你。Michael想知道载一个区域中最长底滑坡。区域由一个二维数组给出。数组的每个数字代表点的高度。下面是一个例子...原创 2019-04-27 21:34:18 · 337 阅读 · 2 评论 -
最大子段和
题目105.最大子段和 (15分)C时间限制:1 毫秒 | C内存限制:3000 Kb题目内容:给定长度为n的整数序列,a[1...n], 求[1,n]某个子区间[i , j]使得a[i]+…+a[j]和最大.或者求出最大的这个和.例如(-2,11,-4,13,-5,2)的最大子段和为20,所求子区间为[2,4].输入描述第一行为一个整数n,表示数组有n个数据,第二行依次输...原创 2019-04-04 18:10:20 · 222 阅读 · 0 评论 -
用欧拉序遍历树
问题描述:在树形道路上从任意一个地点出发访问所有的地点 思路:走到端点后需要往回走,因此可以使用欧拉序.但是欧拉序最终会回到起点,需要在访问完所有地点后提前终止行程.由于起点可能在树的中间(非端点),而用vector来存储树在生成欧拉序时起点必须为端点,故改用二维数组. author:Meloordate:2019/2/2 样例: 4 33 1 13 2 13 4 2...原创 2019-02-03 00:08:45 · 954 阅读 · 0 评论 -
用后缀表达式求解算术表达式
118.算术表达式求值 C时间限制:3000 毫秒 | C内存限制:3000 Kb题目内容: 输入一个由数字、+,-,*,/ 组成的算术表达式,求其值。输入描述一个表达式,其中每个运算数为正整数输出描述计算结果,保留2位小数输入样例1+12*3-4/2输出样例35.00解题思路:1转换为后缀表达式 2利用后缀表达式求值 这里栈就派上用场了,从左到右一个个遍历表达式...原创 2019-02-03 00:21:38 · 1634 阅读 · 0 评论 -
分数类(重载了四则运算、比较运算、输出)
当前版本重载了四则运算兼容了与整数的四则运算重载了比较运算符>,>=,<,<=,==重载了输出运算符/*********************************************************************/class Rational{public: Rational(ll num,ll denomi)...原创 2019-02-09 00:20:05 · 442 阅读 · 0 评论 -
球冠体积的推导
球冠的体积利用微积分的知识可以把球冠的面积推导出 来,即对截面的面积积分。从左至右截面半径越来越小,直到为0,截面半径满足r^2=R^2-(R-h)^2图片原文地址http://blog.sina.com.cn/s/blog_adf1214401012cdw.html相关题目链接 牛客练习赛41 E题:球的体积并https://ac.nowcoder.com/acm/contest...转载 2019-03-02 21:25:43 · 18947 阅读 · 0 评论 -
有环的情况生成并查集
题目链接:牛客练习赛41Chttps://ac.nowcoder.com/acm/contest/373/C并查集最基本的查找和合并就不多讲了,直接看函数吧。合并过程中如果出现环,如5->6->7->5,那么在找最终老大时会出现死循环,边输入每个节点的老大信息边合并可以有效的处理这种情况,具体解析看代码注释。#include<iostream>#inc...原创 2019-03-03 17:44:51 · 385 阅读 · 0 评论 -
DFS实现 全排列
先举个例子,得到123的全排列:我们可以先让1分别和2,3交换(得到213,321),这样就确定了第一位的三种情况(123,213,321)。然后再对每种情况的剩下部分继续进行全排列。如123,从第二位开始,让2分别和后面的交换(得到132),这样就确定了第一位是1时第二位的两种情况(123,132)。第一位为2,3同理,这样共得到3*2=6种情况。代码实现void print(in...原创 2019-03-10 21:39:28 · 1584 阅读 · 0 评论 -
快速排序的原理
快速排序,其原理和合并排序一样,基于分治法,分割的时间是O(n),分割的次数是O(logn),所以其时间复杂度为O(nlogn)。这里介绍两种方法实现方法一首先选择一个基准数,这里以最右边的数为例。然后从最左边开始找,只要小于基准数就把它交换到前面,这样共比较了n次,假设这里交换到前面的数有i个,那么第i+1的位置就是基准数的位置。然后以基准数为分界线把需要排序的数组分为左右两部分...原创 2019-03-07 17:13:14 · 333 阅读 · 0 评论 -
数组排序 计算最少交换次数
题目来源:第七届蓝桥杯省赛c/c++b组 第九题交换瓶子有N个瓶子,编号 1 ~ N,放在架子上。比如有5个瓶子:2 1 3 5 4要求每次拿起2个瓶子,交换它们的位置。经过若干次后,使得瓶子的序号为:1 2 3 4 5对于这么简单的情况,显然,至少需要交换2次就可以复位。如果瓶子更多呢?你可以通过编程来解决。输入格式为两行:第一行: 一个正整数N(N<...原创 2019-03-19 21:05:22 · 14614 阅读 · 7 评论 -
求组合的所有情况 去重
题目来源:第七届蓝桥杯省赛c/c++ b组 第五题抽签X星球要派出一个5人组成的观察团前往W星。其中:A国最多可以派出4人。B国最多可以派出2人。C国最多可以派出2人。....那么最终派往W星的观察团会有多少种国别的不同组合呢?下面的程序解决了这个问题。数组a[] 中既是每个国家可以派出的最多的名额。程序执行结果为:DEFFFCEFFFCDFFFCDEFF...原创 2019-03-21 09:57:30 · 570 阅读 · 0 评论 -
组合数 DFS实现
题目来源:第七届蓝桥杯省赛c/c++ b组 第七题剪邮票如【图1.jpg】(3*4), 有12张连在一起的12生肖的邮票。现在你要从中剪下5张来,要求必须是连着的。(仅仅连接一个角不算相连)比如,【图2.jpg】,【图3.jpg】中,粉红色所示部分就是合格的剪取。请你计算,一共有多少种不同的剪取方法。请填写表示方案数目的整数。注意:你提交的应该是一个整数,不要填写任何多余...原创 2019-03-22 20:16:51 · 446 阅读 · 0 评论 -
分数排序去重
题目来源:第七届蓝桥杯省赛c++ b组 第十题最大比例X星球的某个大奖赛设了M级奖励。每个级别的奖金是一个正整数。并且,相邻的两个级别间的比例是个固定值。也就是说:所有级别的奖金数构成了一个等比数列。比如:16,24,36,54其等比值为:3/2现在,我们随机调查了一些获奖者的奖金数。请你据此推算可能的最大的等比值。输入格式:第一行为数字 N (0<N<1...原创 2019-03-22 21:10:49 · 270 阅读 · 0 评论 -
最长不降子序列
题目108.最长不降子序列 (15分)C时间限制:1 毫秒 | C内存限制:3000 Kb题目内容:所谓子序列,就是在原序列里删掉若干个元素后剩下的序列,以字符串"abcdefg"为例子,去掉bde得到子序列"acfg"现在的问题是,给你一个数字序列,你要求出它最长的单调不降子序列。输入描述多组测试数据,每组测试数据第一行是n(1<=n<=10000),表示n个数据...原创 2019-04-04 17:43:53 · 367 阅读 · 0 评论 -
做慈善
题目描述1502.做慈善 (20分) C时间限制:3000 毫秒 | C内存限制:3000 Kb题目内容:捐款站有个点名机,每个时刻会报一个数,下一刻的报数相对于上一刻可能是加1, 或者减1,或者保持不变。点名机从0开始报数,限制在[0,100]之间。N位富商带着钱去捐款,如果某人到达捐款站时,捐款站的点名机刚好报出他的身份号码,则他会捐出他带的财富,否则他不捐款。请你安排一个点名...原创 2018-11-20 22:00:30 · 349 阅读 · 0 评论