
基础算法
Axelrod Wayne
这个作者很懒,什么都没留下…
展开
-
哈希表
模拟散列表维护一个集合,支持如下几种操作:“I x”,插入一个数x;“Q x”,询问数x是否在集合中出现过;现在要进行N次操作,对于每个询问操作输出对应的结果。输入格式第一行包含整数N,表示操作数量。接下来N行,每行包含一个操作指令,操作指令为”I x”,”Q x”中的一种。输出格式对于每个询问指令“Q x”,输出一个询问结果,如果x在集合中出现过,则输出“Yes”,否则输出“N...原创 2020-02-29 14:45:37 · 197 阅读 · 0 评论 -
手写堆
堆排序输入一个长度为n的整数数列,从小到大输出前m小的数。输入格式第一行包含整数n和m。第二行包含n个整数,表示整数数列。输出格式共一行,包含m个整数,表示整数数列中前m小的数。数据范围1≤m≤n≤105,1≤数列中元素≤109输入样例:5 34 5 1 3 2输出样例:1 2 3思路:将小根堆(完全二叉树)存储在一维数组中,假设一节点的下标是 x ,则其父节点...原创 2020-02-29 14:45:25 · 221 阅读 · 0 评论 -
并查集问题
合并集合一共有n个数,编号是1~n,最开始每个数各自在一个集合中。现在要进行m个操作,操作共有两种:“M a b”,将编号为a和b的两个数所在的集合合并,如果两个数已经在同一个集合中,则忽略这个操作;“Q a b”,询问编号为a和b的两个数是否在同一个集合中;输入格式第一行输入整数n和m。接下来m行,每行包含一个操作指令,指令为“M a b”或“Q a b”中的一种。输出格式对于...原创 2020-02-29 14:45:11 · 225 阅读 · 0 评论 -
快速幂问题
快速幂给定n组ai,bi,pi,对于每组数据,求出abii mod pi的值。输入格式第一行包含整数n。接下来n行,每行包含三个整数ai,bi,pi。输出格式对于每组数据,输出一个结果,表示abii mod pi的值。每个结果占一行。数据范围1≤n≤100000,1≤ai,bi,pi≤2∗109输入样例:23 2 54 3 9输出样例:41#include<...原创 2020-01-28 21:27:15 · 273 阅读 · 0 评论 -
约束问题集合
1、试除法求约数给定n个正整数ai,对于每个整数ai,请你按照从小到大的顺序输出它的所有约数。输入格式第一行包含整数n。接下来n行,每行包含一个整数ai。输出格式输出共n行,其中第 i 行输出第 i 个整数ai的所有约数。数据范围1≤n≤100,2≤ai≤2∗109输入样例:268输出样例:1 2 3 61 2 4 8#include<iostream>...原创 2020-01-28 15:18:37 · 466 阅读 · 0 评论 -
质数问题
1、试除法判定质数给定n个正整数ai,判定每个数是否是质数。输入格式第一行包含整数n。接下来n行,每行包含一个正整数ai。输出格式共n行,其中第 i 行输出第 i 个正整数ai是否为质数,是则输出“Yes”,否则输出“No”。数据范围1≤n≤100,1≤ai≤2∗109输入样例:226输出样例:YesNo代码:#include<iostream>...原创 2020-01-26 18:00:26 · 810 阅读 · 0 评论 -
耍杂技的牛(贪心)
耍杂技的牛农民约翰的N头奶牛(编号为1…N)计划逃跑并加入马戏团,为此它们决定练习表演杂技。奶牛们不是非常有创意,只提出了一个杂技表演:叠罗汉,表演时,奶牛们站在彼此的身上,形成一个高高的垂直堆叠。奶牛们正在试图找到自己在这个堆叠中应该所处的位置顺序。这N头奶牛中的每一头都有着自己的重量Wi以及自己的强壮程度Si。一头牛支撑不住的可能性取决于它头上所有牛的总重量(不包括它自己)减去它的...原创 2020-02-06 21:23:22 · 412 阅读 · 0 评论 -
区间贪心
最大不相交区间数量给定N个闭区间[ai,bi],请你在数轴上选择若干区间,使得选中的区间之间互不相交(包括端点)。输出可选取区间的最大数量。输入格式第一行包含整数N,表示区间数。接下来N行,每行包含两个整数ai,bi,表示一个区间的两个端点。输出格式输出一个整数,表示可选取区间的最大数量。数据范围1≤N≤105,−109≤ai≤bi≤109输入样例:3-1 12 43...原创 2020-01-30 09:51:28 · 169 阅读 · 0 评论 -
装水问题(二分法)
装水问题有一个侧面看去是半圆的储水装置,该圆的半径为R,要求往里面装入高度为h的水,使其在侧面看区的面积S1与半圆面积S2的比例恰好为r。现给定R和r,求高度h。#include<iostream>#include<cmath>using namespace std;const double PI = acos(-1.0); // PIconst double...原创 2020-01-30 10:49:04 · 398 阅读 · 0 评论 -
二分法拓展
利用二分法实现Sqrt()#include<iostream>using namespace std;const double eps = 1e-6;double f(double x){ return x*x;}double Calsqrt(double x){ double l=1,r=x,mid; while(r-l>eps) ...原创 2020-01-30 10:27:54 · 211 阅读 · 0 评论 -
走迷宫(BFS)
走迷宫给定一个n*m的二维整数数组,用来表示一个迷宫,数组中只包含0或1,其中0表示可以走的路,1表示不可通过的墙壁。最初,有一个人位于左上角(1, 1)处,已知该人每次可以向上、下、左、右任意一个方向移动一个位置。请问,该人从左上角移动至右下角(n, m)处,至少需要移动多少次。数据保证(1, 1)处和(n, m)处的数字为0,且一定至少存在一条通路。输入格式第一行包含两个整数n和m...原创 2020-01-20 22:00:08 · 3627 阅读 · 3 评论 -
n-皇后问题 (DFS)
n-皇后问题是指将 n 个皇后放在 n∗n 的国际象棋棋盘上,使得皇后不能相互攻击到,即任意两个皇后都不能处于同一行、同一列或同一斜线上。现在给定整数n,请你输出所有的满足条件的棋子摆法。输入格式共一行,包含整数n。输出格式每个解决方案占n行,每行输出一个长度为n的字符串,用来表示完整的棋盘状态。其中”.”表示某一个位置的方格状态为空,”Q”表示某一个位置的方格上摆着皇后。每个方案...原创 2020-01-20 15:42:38 · 530 阅读 · 0 评论 -
排列数字(DFS)
排列数字给定一个整数n,将数字1~n排成一排,将会有很多种排列方法。现在,请你按照字典序将所有的排列方法输出。输入格式共一行,包含一个整数n。输出格式按字典序输出所有排列方案,每个方案占一行。数据范围1≤n≤7输入样例:3输出样例:1 2 31 3 22 1 32 3 13 1 23 2 1代码:#include<iostream>usi...原创 2020-01-20 15:37:11 · 782 阅读 · 0 评论 -
约瑟夫问题
(圆圈中最后剩下的数字)约瑟夫问题0, 1, …, n-1这n个数字(n>0)排成一个圆圈,从数字0开始每次从这个圆圈里删除第m个数字。求出这个圆圈里剩下的最后一个数字。方法一 (暴力模拟)#include <list>class Solution {public: int lastRemaining(int n, int m){ list&...原创 2020-02-11 22:15:04 · 241 阅读 · 0 评论 -
大数运算(高精度运算)
高精度运算1、高精度加法给定两个正整数,计算它们的和。输入格式共两行,每行包含一个整数。输出格式共一行,包含所求的和。数据范围1≤整数长度≤100000输入样例:1223输出样例:35#include<iostream>#include<algorithm>#include<vector>using namespace std;...原创 2020-02-01 16:54:45 · 741 阅读 · 0 评论 -
分数存储及四则运算处理
对于一个分数来说,最简的形式就是假分数,无论分子大或者小都保留其原数。因此采用结构体的形式struct Fraction{ int up,down; //分子、分母}在此规定,down为正数。且若该数为0,则规定其分子为0,分母为1。分数化简代码如下:Fraction reduction(Fraction result){ if(result.down<0) ...原创 2020-01-31 10:18:07 · 335 阅读 · 0 评论 -
区间和问题
区间和假定有一个无限长的数轴,数轴上每个坐标上的数都是0。现在,我们首先进行 n 次操作,每次操作将某一位置x上的数加c。近下来,进行 m 次询问,每个询问包含两个整数l和r,你需要求出在区间[l, r]之间的所有数的和。输入格式第一行包含两个整数n和m。接下来 n 行,每行包含两个整数x和c。再接下里 m 行,每行包含两个整数l和r。输出格式共m行,每行输出一个询问中所求的区间...原创 2020-02-29 14:42:38 · 951 阅读 · 0 评论