自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(146)
  • 收藏
  • 关注

原创 进阶题集

享受 coding...

2020-11-29 22:29:57 58

原创 刷题集——POJ 2179 Fliptile(枚举+模拟)

FliptileTime Limit: 2000MS Memory Limit: 65536KTotal Submissions: 28860 Accepted: 10139DescriptionFarmer John knows that an intellectually satisfied cow is a happy cow who will give more milk. He has arranged a brainy activity for cows in which they

2020-12-03 20:02:28 41

原创 刷题集——POJ 2251 Dungeon Master(三维——求最少步数)

Dungeon MasterDungeon MasterTime Limit: 1000MS Memory Limit: 65536KTotal Submissions: 76082 Accepted: 27287DescriptionYou are trapped in a 3D dungeon and need to find the quickest way out! The dungeon is composed of unit cubes which may or may not b

2020-12-01 22:42:45 36

原创 天梯题集——肿瘤诊断(三维bfs)

肿瘤诊断看到题目第一眼,就害怕了。上网一查,原来只是个三维 bfs 。这是一道错过就会后悔的题…菜是原罪…bfs模板题实现代码#include<bits/stdc++.h>using namespace std;int m, n, l, t, cnt;int zl[70][130][1300];bool judge[70][130][1300]={false};int A[6] = {0, 0, 0, 0, 1, -1};int B[6] = {0, 0, 1

2020-11-28 10:01:10 31

原创 天梯题集——社交集群(构造并查集)

社交集群第一眼这道题好像是并查集又好像不是,其实只需我们构造兴趣并查集,问题都将迎刃而解…解题思路①、并查集对兴趣进行并查集,一边压缩路径,一边读取数据,可以有效地避免路径被覆盖。(我就是忘记避免覆盖了…)int get_(int x){ if(u[x]==x) return x; return u[x]=get_(u[x]);}void un(int x,int y) //连接路径 { int xx=get_(x); int yy=get_(y); if(xx!=yy)

2020-11-27 21:07:40 35

原创 天梯题集——冰岛人(隐藏条件:考虑嫡系)

前文愿天下有情人都是失散多年的兄妹 与 冰岛人 解题思路几乎是同理的,不过这里需要考虑多一个是否嫡系的关系。(卡了我好久、又来一个隐藏条件,长知识、长知识…)。用递归实现很容易出现超时,循环果然比递归效率高。循环与递归效率的比较冰岛人解题难点①、记录数据——映射+结构体struct node{ string fa; int sex;};map <string, node> num;第一次把映射和结构体结合起来,查询方便了许多。②、判断 m1 与 m2 是否

2020-11-27 16:49:42 72

原创 天梯题集——多项式A除以B(多项式除法,递归与循环的效率比较)

多项式A除以B多项式除法这里就不展开介绍多项式除法,只需将多项式看成一个整体就类似于整数除法。(x3-1) / (x-1) = x2+x+1多项式除法的演示图解题思路:模拟 A / B 多项式除法方案一:递归#include<bits/stdc++.h>using namespace std;double Q[1000010], R[1000010];double a[1000010], b[1000010];int q[1000010], index_b=0;

2020-11-26 19:52:40 37

原创 天梯题集——愿天下有情人都是失散多年的兄妹(隐藏条件)

愿天下有情人都是失散多年的兄妹解题思路利用结构体读入每个 ID 下数据隐藏条件:标记父母的性别 (卡死个人)假设判断 a,b 是否可通婚同性输出 “Never Mind”不同性 bfs标记 a 的五代内的祖先 check检查 b 五代内的祖先 b 五代内的祖先被标记过 输出“No” b 五代内的祖先全部未被标记过 输出“Yes”#include<bits/stdc++.h>using namespace std;bool judge[100010];int

2020-11-26 13:10:54 45

原创 天梯题集——列车调度(模拟、二分)

列车调度题意这道题题意容易混淆,认为一条轨道只能停留一辆火车,其实不然。题目中每条轨道都可排列无数辆递减的火车。关键点:①、按入口顺序排列火车②、排列的每条轨道火车序号必须单调递减,否则增加新轨道按样例来说(圆形编号为轨道编号,数字编号为火车编号)有了以上的认识,问题就简单了。解题思路①、维护轨道数组维护一个轨道数组,代表每条轨道的末端火车序号,将火车按输入顺序一个个添加在轨道数组中。②、维护规则若当前要添加的火车序号大于每条轨道的末端火车序号,那么就开辟一条新的轨道放置当

2020-11-26 10:19:23 35

原创 天梯题集——关于堆的判断(小顶堆模板题、模拟构造过程)

堆是一种常用的树形结构,是一种特殊的完全二叉树,当且仅当满足所有节点的值总是不大于或不小于其父节点的值的完全二叉树被称之为堆。堆的这一特性称之为堆序性。因此,在一个堆中,根节点是最大(或最小)节点。如果根节点最小,称之为小顶堆(或小根堆),如果根节点最大,称之为大顶堆(或大根堆)。注意:堆的左右孩子没有大小的顺序。关于堆的判断这道题目完全可以看成一道堆的模板题,只要构建出小顶堆其他都好说。解题思路①、构建小顶堆小顶堆是构成原理:(1)插入第一个节点(2)插入第二个节点(不符合小顶.

2020-11-25 17:16:46 74

原创 天梯题集——家庭房产(并查集)

家庭房产解题步骤①、并查集将每个家庭都看成一个集合,再统计每个家庭的人数、房产套数、总面积。②、计算有效数据对于每个家庭来说人均房产套数:房产套数/家庭人数人均房产面积:总面积/家庭人数③、排名利用 sort() 函数得出排名。实现代码#include<bits/stdc++.h>using namespace std;int u[10010], C[10010], S[10010];bool judge[10010]={false};struct node

2020-11-23 20:01:14 37

原创 天梯题集——复数四则运算(fabs)

复数四则运算#include<bits/stdc++.h>using namespace std;double a1, b1, a2, b2;void print(char ch, double ans1, double ans2){ printf("(%.1lf", a1); if(b1>=0) printf("+"); printf("%.1lfi) %c (%.1lf", b1, ch, a2); if(b2>=0) printf("+");

2020-11-21 16:17:21 37

原创 基础算法题——求自定类型元素序列的中位数(插入排序、希尔排序)

排序算法总是学了又忘,基础太不牢靠了哎求自定类型元素序列的中位数预告:插入排序、冒泡排序、快排都会超时。希尔排序通过全部样例。解决方案:插入排序参考博客——插入排序引入插入排序参考博客的思想:插入排序的工作方式非常像人们排序一手扑克牌一样。开始时,我们的左手为空并且桌子上的牌面朝下。我们每次从桌子上拿走一张牌并将它插入左手中正确的位置。为了找到一张牌的正确位置,我们从右到左将它与已在手中牌进行比较,如果有大于手中的牌则插入该牌的后面。接着摸桌子上的牌,继续重复上述步骤,如下图所示:(

2020-11-21 15:34:19 34

原创 天梯题集——紧急救援(Dijkstra+倒序打印分析)

Dijkstra算法:用于求单源到其他点的最短路径。紧急救援该题与 Dijkstra模板题 的不同之处在于该题需要记录更多信息,主要思路从局部最优到整体最优,类似dp的思想。#include<bits/stdc++.h>#define maxv 510#define INF 0x3f3f3f3f#define ll long long using namespace std;int mp[maxv][maxv]; // 地图int w[maxv]; /.

2020-11-19 18:29:11 34

原创 天梯题集——秀恩爱分得快(实现与讨论)

前言本文分为两个部分:实现、讨论。其中讨论部分表现出对计算机原理的思考…秀恩爱分得快该题并不是很难,只要会运用数组就能够实现,但如何用更简单的方式实现是值得我们深思的问题…实现下面是我借鉴 其他博主 改善的代码#include<bits/stdc++.h>using namespace std;double gx[1010][1010];bool sex[1010]; //bool类型更快于int类型,位数更少 int read(){ int num=0, f

2020-11-18 11:16:35 55

原创 天梯练习——数列求和-加强版(数学思维)

数列求和两种方法:大数相加、位运算。大数相加这个相对比较暴力,单纯的枚举相加,在 N 取较大的时候会超时,复杂度估计要 O(n2)以上。//暴力法 #include<bits/stdc++.h>using namespace std;int s[100010], now[100010];int n, h;void add(int tmp){ int d=0; int c = max(h, tmp); for(int i=0; i<=c; i++){ s[i

2020-11-15 10:17:42 36

原创 基础算法题 —— 说反话-加强版(字符串截取)

说反话-加强版给定一句英语,要求你编写程序,将句中所有单词的顺序颠倒输出。输入格式:测试输入包含一个测试用例,在一行内给出总长度不超过500 000的字符串。字符串由若干单词和若干空格组成,其中单词是由英文字母(大小写有区分)组成的字符串,单词之间用若干个空格分开。输出格式:每个测试用例的输出占一行,输出倒序后的句子,并且保证单词间只有1个空格。输入样例:Hello World Here I Come输出样例:Come I Here World Hello复习基础 c++ 中 ge

2020-11-12 09:34:19 34

原创 基础算法题——猴子选大王(约瑟夫环)

猴子选大王一群猴子要选新猴王。新猴王的选择方法是:让N只候选猴子围成一圈,从某位置起顺序编号为1~N号。从第1号开始报数,每轮从1报到3,凡报到3的猴子即退出圈子,接着又从紧邻的下一只猴子开始同样的报数。如此不断循环,最后剩下的一只猴子就选为猴王。请问是原来第几号猴子当选猴王?如果要追求效率,就要打破常规,实施一点数学策略。算法分析约瑟夫问题_百度百科为了讨论方便,先把问题稍微改变一下,并不影响原意:问题描述: n 个猴子(编号0~(n-1)),从 0 开始报数,报到 (m-1) 的退出,剩

2020-11-11 20:11:43 74

原创 基础知识——BCD码

十六进制转二进制:  将每一位十六进制转化为4位二进制位即可。BCD码:  将十进制的每一位转化为4位二进制位即可。      转换方法都是将每一位转为4位二进制位,但是区别是一个对应的是十六进制,一个对应的是十进制。比如给出二进制数0101 0101  如果对应十六进制,则是0x55  如果对应BCD码,则是55  (注意这里是十进制的55,上面是十六进制的55)BCD解密#include<bits/stdc++.h>using namespace std;in.

2020-11-10 22:30:25 62

原创 天梯习题——阶乘计算升级版(乘法原理、大数相乘)

阶乘计算升级版

2020-11-10 13:26:02 35

原创 基础算法题——求单链表结点的阶乘和(0的阶乘(0!) 是1、1的阶乘(1!) 是1)

求单链表结点的阶乘和0的阶乘(0!) 是1、1的阶乘(1!) 是10的阶乘(0!) 是1、1的阶乘(1!) 是10的阶乘(0!) 是1、1的阶乘(1!) 是1int FactorialSum( List L ){ int dp[15], ans=0; dp[0]=1, dp[1]=1; for(int i=2; i<=12; i++){ dp[i] = dp[i-1]*i; } while(L!=NULL){

2020-11-09 20:36:39 12

原创 基础算法题——Radio Transmission(KMP-next 妙用)

Radio Transmission解题思路在KMP算法中 next[l] 记录的就是字符串最长的相同的前缀与后缀,也就是说在题目字符串中有一段字符串是重复出现的,那么减去重复出现的字符串以后,剩下的就是这个字符串最小的循环节。比较字符串的 next 数组下标012345678910s1cabcabcabcanext-10001234567s2bcdabcdabcdnext

2020-11-09 19:43:23 13

原创 基础算法题——最短路计数(bfs遍历)

最短路计数题目描述给出一个N个顶点M条边的无向无权图,顶点编号为 1-N 。问从顶点1开始,到其他每个点的最短路有几条。输入格式第一行包含2个正整数 N, M,为图的顶点数与边数。接下来M行,每行2个正整数 x, y,表示有一条顶点x连向顶点y的边,请注意可能有自环与重边。输出格式共 N 行,每行一个非负整数,第ii行输出从顶点 1 到顶点 i 有多少条不同的最短路,由于答案有可能会很大,你只需要输出 ans mod 100003 后的结果即可。如果无法到达顶点 i 则输出0。输入输出样例

2020-11-09 14:04:34 32

原创 基础算法题——#109. 并查集(字符串与并查集、快读)

#109. 并查集又是一道并查集基础基础题~#include<bits/stdc++.h>#define ll long longusing namespace std;const int mod=998244353;int u[4000010], n, m;ll ans=0;void read(int &n){ char c='+'; n=0; //读去无意义的字符 while(c<'0'||c>'9') c=getc

2020-11-09 10:52:22 14

原创 基础算法题——单源最短路(Dijkstra-迪杰斯特拉)

Dijkstra-迪杰斯特拉处理单源最短路径问题常用的算法推荐:Dijkstra详解单源最短路如何实现Dijkstra?重复在最优的条件下,通过枚举寻找下一个最优的条件(排除已经是最优的城市),最多重复 n-1 次(城市数量 n)#include<bits/stdc++.h>using namespace std;int len[2600][2600];int dis[2600], n;bool bj[2600] = {false};const int Max = 1e

2020-11-09 01:25:58 19

原创 基础算法题——树状数组 1 :单点修改,区间查询

树状数组复习基础!!#include<bits/stdc++.h>#define ll long longusing namespace std;ll c[1000010], n, q;ll lowbit(ll x){ return x&(-x);}void updata(ll x, ll v){ for(ll k=x; k<=n; k+=lowbit(k)) c[k] += v;}ll getSum(ll x){ ll sum=0; f

2020-11-08 14:25:28 14

原创 基础算法题——家庭作业(并查集的标记法、贪心)

家庭作业题目描述输入格式第一行一个整数n ,表示作业的数量;接下来 n行,每行包括两个整数,第一个整数表示作业的完成期限,第二个数表示该作业的学分。输出格式输出一个整数表示可以获得的最大学分。保证答案不超过 C/C++ 的 int 范围输入输出样例输入 #171 61 73 23 12 42 56 1输出 #115说明/提示思路一(有漏洞)以第一关键字学分、第二关键字时间对 n 个作业进行排序。从头开始遍历 n 个元素,用 now 记录当前时间,如果 now

2020-11-08 10:38:04 25

原创 万万没想到 之 二分法 (Best Cow Fences、讲得就很透彻,就很舒服)

Best Cow Fences题意:给定一个正整数数列A , 求一个平均数最大,长度不小于 L 的字段。(想不到这种题目也可以用二分来解答,菜是原罪哎)方法一:枚举暴力法#include<bits/stdc++.h>using namespace std;int sum[100010];int main(){ int n, l; memset(sum, 0, sizeof(sum)); scanf("%d%d", &n, &l); for(int i=1;

2020-11-07 23:33:44 27

原创 算法记录——快速判定多个数(1~1e18)是否为质数(Miller_rabin)

质数判定题目描述判定输入的数是不是质数。输入格式若干行,一行一个数 。行数不超过 105。输出格式对于输入的每一行,如果 是质数输出一行 Y,否则输出一行 N。样例样例输入1269666623333样例输出NYNNY数据范围与提示1 <= x <= 1 * 1018欢迎hack(如果你不是管理员,可以在题目讨论区发帖)。Miller_rabin 详解链接Miller_rabin算法优势可以单独判断一个大数是否素数。缺点他是一个不保证正确的

2020-11-07 11:22:02 55

原创 基础算法题——炎炎消防队(取巧、三分)

炎炎夏日题目描述夏天的重庆格外地炎热,很容易起火。消防士们都全副武装,一旦发生险情就立马赶往救火。森罗是消防队中的一员,他在灭火的过程中突发奇想,如果能用退火的原理求解函数求最小值,那不就可以很容易计算了吗?翌日,森罗来到即将高考的弟弟家辅导功课,其中一道题目是这样的函数F(x) = F(x) = 7 * x7 + 6 * x6 + 2 * x3 + 8 * x2 - y * x​给定任意一个实数y,让你求出函数的最小值。森罗回想起昨天的突发奇想,很快就给出了这个题目的解。那么,你知道他是怎么解决

2020-11-06 13:21:48 32

原创 基础算法题——遍历问题

二叉树依旧不熟,哎,难受。。。遍历问题题目描述我们都很熟悉二叉树的前序、中序、后序遍历,在数据结构中常提出这样的问题:已知一棵二叉树的前序和中序遍历,求它的后序遍历,相应的,已知一棵二叉树的后序遍历和中序遍历序列你也能求出它的前序遍历。然而给定一棵二叉树的前序和后序遍历,你却不能确定其中序遍历序列,考虑如下图中的几棵二叉树:所有这些二叉树都有着相同的前序遍历和后序遍历,但中序遍历却不相同。输入格式输A数据共两行,第一行表示该二叉树的前序遍历结果s1,第二行表示该二叉树的后序遍历结果s2。输出格

2020-11-05 23:31:38 25

原创 基础算法题——天梯赛座位分配(化繁为简)

天梯赛座位分配天梯赛每年有大量参赛队员,要保证同一所学校的所有队员都不能相邻,分配座位就成为一件比较麻烦的事情。为此我们制定如下策略:假设某赛场有 N 所学校参赛,第 i 所学校有 M[i] 支队伍,每队 10 位参赛选手。令每校选手排成一列纵队,第 i+1 队的选手排在第 i 队选手之后。从第 1 所学校开始,各校的第 1 位队员顺次入座,然后是各校的第 2 位队员…… 以此类推。如果最后只剩下 1 所学校的队伍还没有分配座位,则需要安排他们的队员隔位就坐。本题就要求你编写程序,自动为各校生成队员的座位

2020-11-04 13:01:32 28

原创 基础算法题——younik吃大餐(多重背包)

younik吃大餐题目描述Younik的检查结果出来了,核酸检测为阴性,她非常高兴,立刻决定去饭店大吃一顿。到了饭店,Younik看到琳琅满目的菜单,开始犯了选择困难症。这时作为顶级吃货的你恰好坐到了Younik的旁桌,你决定发扬一下雷锋精神,帮助Younik决定吃哪些菜。假设每一道菜都有相应的快乐值,Younik每吃一道菜就会获得相应的快乐值,这里有N道菜,每道菜可以吃多次,但是同一道菜每重复吃一次,得到的快乐值会比原来的快乐值少 2^(k-1) 点(k为重复吃的次数,第一次重复,得到的快乐值会比这

2020-11-03 15:55:54 8

原创 基础算法题——计算分数(细节)

计算分数题目描述Csh 被老妈关在家里做分数计算题,但显然他不愿意坐这么多复杂的计算。况且在家门口还有 Xxq 在等着他去一起看电影。为了尽快地能去陪 Xxq 看电影,他把剩下的计算题交给了你,你能帮他解决问题吗?输入格式输入一行,为一个分数计算式。计算式中只包含数字、+、-、/。其中 / 为分数线,分数线左边为分子,右边为分母。输入数据保证不会出现繁分数。如果输入计算式的第一项为正,不会有前缀 + 号;若为负,会有前缀 - 号。所有整数均以分数形式出现。输出格式输出一行,为最后的计算结果(用

2020-11-03 10:22:39 13

原创 基础算法题——P2926 [USACO08DEC]Patting Heads S(思维转变、剪枝)

Patting Heads S今天是贝茜的生日,为了庆祝自己的生日,贝茜邀你来玩一个游戏。贝茜让 N(1≤N≤10 5) 头奶牛坐成一个圈。除了 1 号与 N 号奶牛外,i 号奶牛与 i-1 号和 i+1 号奶牛相邻。N 号奶牛与 1 号奶牛相邻。农夫约翰用很多纸条装满了一个桶,每一张包含了一个不一定是独一无二的 1 到 106的数字。接着每一头奶牛 ii 从柄中取出一张纸条 A_iAi​ 。每头奶牛轮流走上一圈,同时拍打所有手上数字能整除在自己纸条上的数字的牛的头,然后做回到原来的位置。牛们

2020-11-03 09:39:04 10

原创 基础算法题——呼兰河传(除法不可直接求余)

呼兰河传题目描述沿着河边看一看清冷的夏夜,耳机里是AR的《呼兰河传》。AR的呼兰河并非一条河,而是一个故乡小城的生活日记。静谧的童年,孩子看世界的眼光,花开鸟飞间的自由,塑造了一方那个时代中少有的美好。现在,你需要回答以下问题,才可倾听这首《呼兰河传》带来的温柔,试试吧。给你n个数,选择一些数,使得LCM最大,输出LCM的最大值并对1e9+9取模。LCM:最小公倍数输入描述:第一行输入一个n,代表数字的个数。第二行输入n个数a[i],代表每个数的值。1<=n<=1e6,1<=

2020-11-02 15:27:41 9

原创 基础算法题——异或(复杂度的小差异)

异或题目描述给定一个长度为 n 初始全为 0 的数列 ai,下标从 1 开始。定义操作模 k 异或 v 为对所有满足 ki≡0(mod k) 的下标 i,将异或上整数v(即令 ai = ai⊕v)。给出q次操作,每次操作之后输出序列的异或和,并且在操作结束之后输出整个序列。序列的异或和为 a 1⊕a 2⊕…⊕an输入描述:第一行两个整数n,q。接下来q行,每行两个整数 ki, vi。1 ≤ n, q ≤ 2×1051 ≤ ki, vi ≤ 109输出描述:输出共q+1行,其中前q行每

2020-11-01 15:53:30 76

原创 基础算法题——进制转换(类比思想)

进制转换题目描述我们可以用这样的方式来表示一个十进制数: 将每个阿拉伯数字乘以一个以该数字所处位置为指数,以 10 为底数的幂之和的形式。例如 123 可表示为 1×102+2×101+3×100 这样的形式。与之相似的,对二进制数来说,也可表示成每个二进制数码乘以一个以该数字所处位置为指数,以 2 为底数的幂之和的形式。一般说来,任何一个正整数 R 或一个负整数 -R 都可以被选来作为一个数制系统的基数。如果是以 R 或 -R 为基数,则需要用到的数码为 0,1,…R-1。例如当 R=7 时,所

2020-11-01 11:42:00 34

原创 基础算法题——找筷子(位的异或)

找筷子题目描述经过一段时间的紧张筹备,电脑小组的“RP 餐厅”终于开业了,这天,经理 LXC 接到了一个定餐大单,可把大家乐坏了!员工们齐心协力按要求准备好了套餐正准备派送时,突然碰到一个棘手的问题:筷子!CX 小朋友找出了餐厅中所有的筷子,但遗憾的是这些筷子长短不一,而我们都知道筷子需要长度一样的才能组成一双,更麻烦的是 CX 找出来的这些筷子数量为奇数,但是巧合的是,这些筷子中只有一只筷子是落单的,其余都成双,善良的你,可以帮 CX 找出这只落单的筷子的长度吗?输入格式第一行是一个整数,表示筷

2020-11-01 10:46:52 25

原创 基础算法题——估值一亿的AI核心代码(细节拉满)

估值一亿的AI核心代码以上图片来自新浪微博。本题要求你实现一个稍微更值钱一点的 AI 英文问答程序,规则是:1、无论用户说什么,首先把对方说的话在一行中原样打印出来;2、消除原文中多余空格:把相邻单词间的多个空格换成 1 个空格,把行首尾的空格全部删掉,把标点符号前面的空格删掉;3、把原文中所有大写英文字母变成小写,除了 I;4、把原文中所有独立的 can you、could you 对应地换成 I can、I could—— 这里“独立”是指被空格或标点符号分隔开的单词;5、把原文中所有独立

2020-10-31 10:10:15 20

空空如也

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人 TA的粉丝

提示
确定要删除当前文章?
取消 删除