ACM入门
菜小波
决心完成自由梦
展开
-
递推递归刷题
递推递归刷题:问题 B: 【递推】偶数3的个数时间限制: 1 Sec 内存限制: 64 MB题目描述“报告,我军已探出地雷阵中所有的地雷位置,并且还发现了一份使用说明书。”一个黑暗军团的小兵匆忙跑来,交给修罗王一张纸。只见这张纸上面写道:“我是一颗萌萌的地雷,拆除我很容易,看到我身上标着的整数N了吗?你只要输入这个N位数中有多少个数中有偶数个数字3就可以把我拆除哦,加油!你行的。”输入...原创 2020-01-22 17:30:16 · 600 阅读 · 0 评论 -
BigInteger和BigDecimal
在用C或者C++处理大数时感觉非常麻烦,但是在Java中有两个类BigInteger和BigDecimal分别表示大整数类和大浮点数类,至于两个类的对象能表示最大范围不清楚,理论上能够表示无线大的数,只要计算机内存足够大。这两个类都在java.math.*包中,因此每次必须在开头处引用该包。Ⅰ基本函数:1.valueOf(parament); 将参数转换为制定的类型比如 int a=3...原创 2020-01-22 11:56:40 · 155 阅读 · 0 评论 -
Hanoi塔类题全解
经典详解:如下图所示,从左到右有A、B、C三根柱子,其中A柱子上面有从小叠到大的n个圆盘,现要求将A柱子上的圆盘移到C柱子上去,期间只有一个原则:一次只能移到一个盘子且大盘子不能在小盘子上面,求移动的步骤和移动的次数移动次数为:2^n - 1实现算法可以简单分为三个步骤: (1) 把n-1个盘子由A 移到 B; (2) 把第n个盘子由 A移到 C; ...原创 2020-01-22 11:48:57 · 939 阅读 · 0 评论 -
递归算法从入门到完全掌握
递归算法To Iterate is Human, to Recurse, Divine.引用别人的话…:递归:你打开面前这扇门,看到屋里面还有一扇门。你走过去,发现手中的钥匙还可以打开它,你推开门,发现里面还有一扇门,你继续打开它。若干次之后,你打开面前的门后,发现只有一间屋子,没有门了。然后,你开始原路返回,每走回一间屋子,你数一次,走到入口的时候,你可以回答出你到底用这你把钥匙打开了几扇...原创 2020-01-22 00:55:00 · 323 阅读 · 0 评论 -
C++中高精度模板全解析
高精度用字符串或字符数组输入,用数组存储与运算,用数组输出结果高精度加法#include<iostream>#include<cstring>using namespace std;char s1[505],s2[505];int a[505],b[505],c[505];int main(){ int m,n,v,t; std::ios...原创 2020-01-21 18:39:58 · 759 阅读 · 0 评论 -
打印n个数中任意m个数组合
消除k的二进制数的最后一个1:k = k & (k-1);计算x的二进制数的最后一个1:lowbit(x) = x & -x;#include <iostream>using namespace std;void print_set(int n, int k){ for(int i=0; i<(1<<n); i++){ int num = 0, kk = i; //num统计i中1的个数,kk处理i wh原创 2020-07-10 15:00:54 · 380 阅读 · 0 评论 -
用递归求全排列
#include <iostream>using namespace std;/***递归打印全排列*/#define Swap(a,b){int temp = a; a=b; b=temp;}int data[] = {1,2,3,4,5,6,7,8,9,10,32,15,18,33};int num = 0; //统计全排列的个数int Perm(int begin, int end){ int i; if(begin == end) {原创 2020-07-10 14:19:57 · 231 阅读 · 0 评论 -
打印n个数中任意m个数的组合
打印n个元素的集合的子集#include <iostream>using namespace std;void print_subset(int n){ for(int i = 0; i<(1<<n); i++) { //i:0~2^n,每个i的二进制数对应一个子集,一次打印一个子集 for(int j=0; j<n...原创 2020-04-19 16:56:48 · 395 阅读 · 0 评论 -
树的入门
原创 2020-04-18 15:25:05 · 139 阅读 · 1 评论 -
学霸猫
学霸猫题目:细节:代码:题目:在我认识它的时候,它就已经叫学霸猫了,虽然我不知道它名字的由来,但在石大这种地方被冠以学霸之名。它经常会光顾正在上课的教室,并跟同学们一起耐心听讲,学校的教学楼、机房里到处都留下它的倩影,相信它将来会成为一个Doctor Cat。有心的同学记录下了它出现的课堂名称和出现时间。聪明的学霸猫是非常擅长学习的,即使在打盹的时候,也是在学习。它在某个课堂停留的时间越长,学...原创 2020-04-03 23:56:55 · 950 阅读 · 0 评论 -
Ignatius and the Princess II
题目:Ignatius and the Princess IITime Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 14856 Accepted Submission(s): 8530Problem DescriptionNow ...原创 2020-03-18 17:29:21 · 119 阅读 · 0 评论 -
next_permutation()函数(prev_permulation、is_permutation)
@TOC总论next_permutation、prev_permutation以及is_permutation均为全排列相关的函数,调用时需要加入头文件#include < algorithm >引入next_permutation()STL提供求下一个排列组合的函数next_permutation()。next_permutation()函数是按照字典序产生排列的,并且...原创 2020-03-18 16:53:03 · 242 阅读 · 0 评论 -
sort函数
简介:sort函数的头文件是#includesort函数默认的排序方式是升序排序,即从小到大。时间复杂度仅为O( n*log2(n) )。可自定义compare 函数,自定义排序方式#include<algorithm>using namespace std;int cmp(int x,int y){ return x>y;//降序排列}int mai...原创 2020-03-18 15:29:03 · 904 阅读 · 0 评论 -
Shoping(map)
ACM之map关于map:hash_map默认hash 和比较函数hash_map 的比较函数hash_map(size_type n)map与hash_map关于map:map的特性是,所有元素都会根据元素的减值自动被排序。 map的所有元素都是pair,同时拥有实值(value)和键值(key)。pair的第一个元素会被视为键值,第二个元素会被视为实值。 map不允许两个元素拥有相同的...原创 2020-03-18 14:26:06 · 227 阅读 · 0 评论 -
产生冠军(集合set)
集合set关于集合set的学习:集合定义关于set我有话说:用数组初始化集合:访问:遍历:题目:我的代码:解一:解二关于集合set的学习:集合定义之所以称为集合,就是因为set与数学中的集合一样,存在互异性,也就是每一个元素只允许出现一次。set的特性是:所有元素都会根据元素的键值自动排序,set的元素不像map那样可以同时拥有实值(value)和键值(key),set元素的键值就是实值,...原创 2020-03-18 00:35:24 · 422 阅读 · 0 评论 -
士兵队列训练问题(链表)
士兵队列训练问题题目:思路:我的代码:Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)题目:Total Submission(s): 20237 Accepted Submission(s): 8517Problem Description某部队进行新兵队列训练,将...原创 2020-03-17 23:36:58 · 432 阅读 · 0 评论 -
看病要排队(优先队列)
优先队列priority_queue知识点:引入:特点与用法:题目解析:我的代码:知识点:引入:优先队列是一种特殊的队列,相较于队列它的特殊也是功能最强大之处在于能自动排序。我们知道了队列是先进先出,那么优先队列则不一样了,进的顺序不能决定出的顺序,优先队列出的顺序是按照自己设置的优先等级来出队列的,如果自己不设置优先级的话,默认优先级为越大优先级越高。头文件还是:#include优先...原创 2020-03-17 18:09:37 · 572 阅读 · 0 评论 -
ACboy needs your help again!(queue入门)
ACboy needs your help again!题目:分析:代码:题目:ACboy needs your help again!Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 17302 Accepted Submis...原创 2020-03-17 16:56:04 · 343 阅读 · 2 评论 -
简单计算器(栈的入门)
简单计算器题目:思路:解答:题目:简单计算器Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 34884 Accepted Submission(s): 12621Problem Description读入一个只包含 +, ...原创 2020-03-17 16:02:16 · 475 阅读 · 0 评论 -
Text Reverse(stack入门)
Text Reverse题目:题目:Text ReverseTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 52966 Accepted Submission(s): 20255Problem DescriptionIgn...原创 2020-03-17 15:09:58 · 135 阅读 · 0 评论 -
网络流学习
网络流学习定义引入:性质探讨:定义引入:网络流问题,一般情况下我们会把各种网络问题抽象成网络流问题,网络流是满足以下性质的网络:每一条边拥有一个最大的容量c,即该条边可以容纳的最大流量,f是流过该边的实际流量,且总有f<=c。对于图中每个顶点(源点和汇点除外)都有流出的流量等于流入的流量。图中只有一个源点一个汇点,且对于源点来说其流入量为0,对于汇点来说流出量为0,源点的流出量等于汇点的...原创 2020-03-17 14:15:26 · 247 阅读 · 0 评论 -
圆桌问题vector
圆桌问题题目:题目:圆桌问题 Time Limit: 3000/1000 MS (Java/Others) Memory Limit:65535/32768 K (Java/Others) Total Submission(s): 7789 AcceptedSubmission(s): 2814Problem Description圆桌上围坐着2n个人。其中n个人是好人,...原创 2020-03-17 13:48:16 · 1091 阅读 · 2 评论 -
高精度阶乘(包括阶乘的加减)
高精度阶乘(包括阶乘的加减)高精度求阶乘求n的阶乘阶乘优化:关于高精度,如果不甚了解,可以先看看我的另一篇博客高精度的加减乘除全解大概懂点路子之后,我们一起来看看下面的应用高精度求阶乘求n的阶乘这一块比较简单,在看过之前的博客之后,这里的些许代码注释应该足以明白代码实现,我就不赘述了。可能新手不能理解while循环里的那几句(理解的可以跳过这一段,可以思考一下如何优化解法),我稍微解...原创 2020-03-15 11:49:06 · 1274 阅读 · 1 评论 -
数据结构与算法之迭代递归
凡治众如治寡,分数是也。数组求和:迭代int SumI(int A[], int n){ int sum = 0; //O(1) for(int i=0; i<n; i++) //O(n) sum += A[i]; //O(1) return sum; //O(1)}减而治之:将大问题划分为两个子问题:一个平凡问题和一个规模缩减并且形式与原问题形式相同的问题。...原创 2020-03-13 15:39:22 · 282 阅读 · 0 评论 -
数据结构与算法学习之算法入门笔记
关于计算:对象:规律、技巧。目标:高效、低耗。Computer science ------ Computing scienceCPU 目前大概是1s 9次方的运算。而1天大概为 10的五次方秒;一生用一世纪来估算,大概3* 10^4 days 即 3* 10 ^9秒;三生三世 大概是300年 估算10 ^10秒;所以在三生三世中的一天 相当于 一天中的一秒。现在估计宇...原创 2020-03-13 14:04:49 · 171 阅读 · 0 评论 -
C++中字符串转化为字符数组
C++中字符串转化为字符数组1、如果要将string转换为char*,可以使用string提供的函数c_str() ,或是函数data(),data除了返回字符串内容外,不附加结束符’\0’,而c_str()返回一个以‘\0’结尾的字符数组。2、const char c_str();c_str()函数返回一个指向正规C字符串的指针,内容与本string串相同.这是为了与c语言兼容,在c语言中没...原创 2020-03-05 15:27:54 · 21363 阅读 · 1 评论 -
ACM时间复杂度之问题规模和可用算法
ACM时间复杂度之问题规模和可用算法/**给n个整数,从大到小输出前m大的数*//*#include <bits/stdc++.h>using namespace std;int a[1000001];#define swap(a,b){int temp=a;a=b;b=temp;}int n,m;void bubble_sort(){//冒泡排序 ...原创 2020-02-04 00:52:06 · 629 阅读 · 0 评论 -
sscanf()函数
算法学习之输入…sscanf()#include <iostream>#include <stdio.h>#include <stdlib.h>#include <string.h>using namespace std;//sscanf()函数//sscanf的作用://从一个字符串中读进于指定格式相符的数据。//...原创 2020-02-03 15:26:50 · 166 阅读 · 0 评论 -
Factors of Factorial
问题 H: Factors of Factorial时间限制: 1 Sec 内存限制: 128 MB[提交] [状态]题目描述You are given an integer N. Find the number of the positive divisors of N!, modulo 109+7.Constraints1≤N≤103输入The input is given ...原创 2020-01-30 12:51:00 · 198 阅读 · 0 评论 -
费解的开关
问题 F: 费解的开关时间限制: 1 Sec 内存限制: 128 MB[提交] [状态]题目描述你玩过“拉灯”游戏吗?25盏灯排成一个5x5的方形。每一个灯都有一个开关,游戏者可以改变它的状态。每一步,游戏者可以改变某一个灯的状态。游戏者改变一个灯的状态会产生连锁反应:和这个灯上下左右相邻的灯也要相应地改变其状态。我们用数字“1”表示一盏开着的灯,用数字“0”表示关着的灯。下面这种状态...原创 2020-01-29 18:33:09 · 245 阅读 · 0 评论 -
最短Hamilton路径
问题 C: 最短Hamilton路径时间限制: 2 Sec 内存限制: 128 MB[提交] [状态]题目描述给定一张 n(n≤20) 个点的带权无向图,点从 0~n-1 标号,求起点 0 到终点 n-1 的最短Hamilton路径。 Hamilton路径的定义是从 0 到 n-1 不重不漏地经过每个点恰好一次。输入第一行一个整数n。接下来n行每行n个整数,其中第i行第j个整数表示...原创 2020-01-29 17:19:14 · 126 阅读 · 0 评论 -
64位整数乘法
问题 B:64位整数乘法时间限制: 1 Sec 内存限制: 128 MB[提交] [状态]题目描述求 a 乘 b 对 p 取模的值,其中 1≤a,b,p≤10^18。输入第一行a,第二行b,第三行p。输出一个整数,表示a*b mod p的值。样例输入 Copy239样例输出 Copy6#include <iostream>using namespa...原创 2020-01-29 17:17:39 · 217 阅读 · 0 评论 -
【快速幂】a^b
问题 A:【快速幂】a^b时间限制: 1 Sec 内存限制: 128 MB[提交] [状态]题目描述求 a 的 b 次方对 p 取模的值,其中 1≤a,b,p≤109输入三个用空格隔开的整数a,b和p。输出一个整数,表示ab mod p的值。样例输入 Copy2 3 9样例输出 Copy8#include <iostream>using namesp...原创 2020-01-29 16:58:40 · 316 阅读 · 0 评论 -
递归实现排列型枚举
问题 K: 递归实现排列型枚举时间限制: 1 Sec 内存限制: 128 MB[提交] [状态]题目描述把 1~n 这 n(n<10) 个整数排成一行后随机打乱顺序,输出所有可能的次序。输入一个整数n。输出按照从小到大的顺序输出所有方案,每行1个。 首先,同一行相邻两个数用一个空格隔开。其次,对于两个不同的行,对应下标的数一一比较,字典序较小的排在前面。样例输入 Copy...原创 2020-01-29 16:18:07 · 112 阅读 · 0 评论 -
递归实现组合型枚举
问题 I: 递归实现组合型枚举时间限制: 1 Sec 内存限制: 128 MB[提交] [状态]题目描述从 1~n 这 n 个整数中随机选出 m 个,输出所有可能的选择方案。n>0, 0<=m<=n, n+(n-m)<=25。输入一个整数n。输出按照从小到大的顺序输出所有方案,每行1个。首先,同一行内的数升序排列,相邻两个数用一个空格隔开。其次,对于...原创 2020-01-29 15:43:45 · 157 阅读 · 0 评论 -
递归实现指数型枚举
递归实现指数型枚举从1~n这n个整数中随机选取任意多个,输出所有可能的选择方案1<n<=15#include <iostream>using namespace std;int n;void dfs(int u,int state){ if(u==n) { for(int i=0;i<n;i++) { if(state>>i...原创 2020-01-29 15:27:55 · 110 阅读 · 0 评论 -
部分和问题
部分和问题给定整数a1、a2、…、an,判断是否可以从中选出若干数,使它们的和恰好为K。1<=n<=20,-1e8<=ai<=1e8,-1e8<=k<=1e8#include <iostream>using namespace std;/**部分和问题*给定整数a1、a2、...、an,*判断是否可以从中选出若干数,使它们的和恰好为...原创 2020-01-28 17:41:50 · 112 阅读 · 0 评论 -
Lake Counting
Lake CountingTime Limit: 1000MSMemory Limit: 65536KTotal Submissions: 56220Accepted: 27384DescriptionDue to recent rains, water has pooled in various places in Farmer John’s field, which is repr...原创 2020-01-28 17:40:35 · 88 阅读 · 0 评论 -
Red and Black
Red and BlackTime Limit: 1000MSMemory Limit: 30000KTotal Submissions: 52936Accepted: 28072DescriptionThere is a rectangular room, covered with square tiles. Each tile is colored either red or bl...原创 2020-01-28 17:39:29 · 132 阅读 · 0 评论 -
守望者的逃离
问题 C: 守望者的逃离时间限制: 1 Sec 内存限制: 128 MB题目描述恶魔猎手尤迪安野心勃勃,他背叛了暗夜精灵,率领深藏在海底的娜迦族企图叛变。守望者在与尤迪安的交锋中遭遇了围杀,被困在一个荒芜的大岛上。为了杀死守望者,尤迪安开始对这个荒岛施咒,这座岛很快就会沉下去。到那时,岛上的所有人都会遇难。守望者的跑步速度为17m/s,以这样的速度是无法逃离荒岛的。庆幸的是守望者拥有闪烁法...原创 2020-01-21 20:55:17 · 245 阅读 · 0 评论