自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 红与黑

题面 有一间长方形的房子,地上铺了红色、黑色两种颜色的正方形瓷砖。你站在其中一块黑色的瓷砖上,只能向相邻的黑色瓷砖移动。请写一个程序,计算你总共能够到达多少块黑色的瓷砖。 包括多组数据。每组数据的第一行是两个整数W和H,分别表示x方向和y方向瓷砖的数量。W和H都不超过20。在接下来的H行中,每行包括W个字符。每个字符表示一块瓷砖的颜色,规则如下: 1)‘.’:黑色的瓷砖; 2)‘#’:白色的瓷砖; 3)‘@’:黑色的瓷砖,并且你站在这块瓷砖上。该字符在每组数据中唯一出现一次。 当在一行中读入的是两个零时,

2020-06-22 19:49:44 188

原创 序列合并

题面 有两个长度都为N的序列A和B,在A和B中各取一个数相加可以得到N平方个和,求这N平方个和中最小的N个。 开始直接想到了枚举,把所有的情况枚举出来再比较输出… 但是看到N的范围: 1 <= N <= 100000 如果这样枚举就是N的十次方了…但是又不想找正解…于是试着找找有没有什么奇奇怪怪的暴力优化… 结果貌似还真的有,只需要简单想一想,如果A[i] + b[j]都大了而不能输出,那a[i] + b[j + 1]不就也不行吗?(因为b[j]<b[j+1]) 于是就好了,如果枚

2020-06-16 20:05:17 769

原创 算法10-10,10-11:堆排序

原题链接 堆排序,顾名思义是靠堆进行排序的一种排序方法。具体实现也不难。 因为堆的特性,堆顶元素肯定是其最值,所以直接将其取出,然后想插入数据一样,将堆的最后一个数取出放到堆顶,整理堆使其重新变成一个符号条件的堆,如此重复即可。 此题为模板题,没啥可说的,代码如下: #include <bits/stdc++.h> using namespace std; int n , a[100001]; void px(int x) { int i = 1 , j = i * 2; while (j

2020-06-16 19:47:14 367

原创 Root of AVL Tree

题面 样例输入1: 5 88 70 61 96 120 样例输出1: 70 样例输入2: 7 88 70 61 96 120 90 65 样例输出2: 88 题意:将输入调整为平衡二叉树(AVL),输出根结点元素 解题思路:判断插入结点对现有结点的平衡因子的影响,进而进行LL,LR,RL,RR旋转 假设三个结点连接关系为A->B->C,C为新插入结点并使得A的平衡因子==2 若C在A的左孩子的左子树上,则对A与B进行LL旋转 若C在A的左孩子的右子树上,则对A,B,C进行LR旋转,可分解

2020-06-15 19:56:18 31152

原创 【模板】堆

洛谷P3378题面 堆模板…没什么好讲的… 如题,初始小根堆为空,我们需要支持以下3种操作: 操作1: 1 x 表示将x插入到堆中 操作2: 2 输出该小根堆内的最小数 操作3: 3 删除该小根堆内的最小数 操作一即是插入元素 操作二三其实就是取出元素的分解,将查找+取出分为了查找操作和删除操作… 直接上代码吧…真没啥说的了【水】 代码: #include <bits/stdc++.h> using namespace std; int d[1000001]; int high = 0; v

2020-06-13 17:12:02 119

原创 通信系统

Codeup有题面的说 某市计划建设一个通信系统。按照规划,这个系统包含若干端点,这些端点由通信线缆链接。消息可以在任何一个端点产生,并且只能通过线缆传送。每个端点接收消息后会将消息传送到与其相连的端点,除了那个消息发送过来的端点。如果某个端点是产生消息的端点,那么消息将被传送到与其相连的每一个端点。 为了提高传送效率和节约资源,要求当消息在某个端点生成后,其余各个端点均能接收到消息,并且每个端点均不会重复收到消息。 现给你通信系统的描述,你能判断此系统是否符合以上要求吗? 让我们康康题面先 题目大意:

2020-06-13 15:50:08 293

原创 [JLOI2009]二叉树问题

洛谷题面 如下图所示的一棵二叉树的深度、宽度及结点间距离分别为: 深度:4 宽度:4(同一层最多结点个数) 结点间距离: ⑧→⑥为8 (3×2+2=8) ⑥→⑦为3 (1×2+1=3) 注:结点间距离的定义:由结点向根方向(上行方向)时的边数×2, 与由根向叶结点方向(下行方向)时的边数之和。 题目大意: 给定一棵二叉树,求其的深度和结点最多的一层的结点数。 输入u、v,求这两个结点之间的距离(距离的计算方法如上)。 深度和宽度都很好求,只需要在读入数据的同时进行处理即可,唯一的一点应该是求距离。 一

2020-06-12 09:45:18 201

原创 Path of Equal Weight

题目如此 题目大意:给出树的结构和权值,找从根结点到叶子结点的路径上的权值相加之和等于给定目标数的路径,并且从大到小输出路径。 对于接收到的孩子结点的数据,每次完全接收完就对孩子结点按照权值进行排序(序号变,根据权值变),这样保证深度优先遍历的时候直接输出就能输出从大到小的顺序。 记录路径采取这样的方式:首先建立一个path数组,传入一个nodeNum记录对当前路径来说这是第几个结点(这样直接在path[nodeNum]里面存储当前结点的孩子结点的序号,这样可以保证在先判断return的时候,path是从0

2020-06-11 20:04:05 221

原创 Mice and Rice

题面 p为老鼠的数量,g为每组最多g个老鼠。先给出p个老鼠的重量,再给出老鼠的初始顺序(第i名的老鼠是第j号,j从0开始)。每g个老鼠分为一组,对于每组老鼠,选出最重的那个,晋级下一轮比赛,然后依次再以p个老鼠一组分类,然后选出重量最大的。。。直到只剩下一只老鼠,排名为1.输出为老鼠的排名,这个排名是按照原输入老鼠的顺序输出的。 先将所有的老鼠按照排名后的顺序依次放入队列中,对于队列中的每一个老鼠,按照分组后选择最大重量的比赛规则,将每次分组获得第一的老鼠放入队列尾部。此处有一点,如果当前剩下的老鼠可以

2020-06-10 20:04:13 117

原创 求m区间内的最小值

一个含有n项的数列(n<=2000000),求出每一项前的m个数到它这个区间内的最小值。若前面的数不足m项则从第1个数开始,若前面没有数则输出0。 某谷的题面 看完题应该先想到的是模拟,一个个比较然后再输出,但当我们看完了数据范围: m≤n≤2000000 ohhhhhhh不超时算我输好吧。 所以还是思考思考正解: 先来看看样例数据: 7 8 1 4 3 2 每次取某位置之前连续两个数中的最小值。 第 1 个位置之前没有值所以是 0,现在有了一个数 7;第 2 个位置之前只有一个数 7,故最小.

2020-06-10 11:42:39 1487

原创 一元三次方程求解

洛谷题面 即对一个一元三次方程求解,要求输出全部的三个解并且精确到小数点后两位。 并约定该方程存在三个不同实根(根的范围在-100至100之间),且根与根之差的绝对值 ≥1。要求由小到大依次在同一行输出这三个实根(根与根之间留有空格),并精确到小数点后2位。 都说的这么清楚了,连范围都告诉我们了… 枚举呗 从-100开始枚举,到100时结束,如果满足等式就记录下来… 因为要精确到小数点后两位嘛,所以我们就枚举三位,每次加上0.001 反正数据也不大,也不会超时 简单代码: #include <b

2020-06-10 10:05:09 608

原创 埃及分数 Egyptian Fractions (HARD version)

某谷的题面 蒟蒻认为此题难度挺大,(dalao除外 )不过要用搜索大家应该还是看得出来的。(dfs) 任何一个真分数a/b(且a小于b)一定能表示成埃及分数之和,因此一定能搜索到解。 但是不剪枝的话是会T掉的哦~~ 按a/b可拆分成的单位分数的个数进行循环搜索。 1)先将a/b分子分母消去因子,化为最简形式。 2)如果a=1则直接输出b。 3)否则从拆分成2个项开始尝试。如果2个单位分数无法拼凑成a/b,则试3个……依此类推。那么我们搜索得到的第一个解一定会满足加数个数最少这个要求。 4)如果当加数个数等于

2020-06-09 16:27:57 471

原创 C++日记(雾)

2020.6.8 上午:复习知识点 下午:找题练(但是一道也没做到100分的说) 晚自习:写总结 详情 2020.6.9 上午:做题(计算(calc)) 下午:写题解 详情点击这里

2020-06-09 16:17:15 110

原创 计算(calc)

小明在你的帮助下,破密了Ferrari设的密码门,正要往前走,突然又出现了一个密码门,门上有一个算式,其中只有“(”,“)”,“0-9”,“+”,“-”,“*”,“/”,“^”,求出的值就是密码。小明数学学得不好,还需你帮他的忙。(“/”用整数除法) 原题题面 简单的说,就是输入一个算式,让你计算它。不过这个算式要考虑运算的先后顺序,也就是此题的难点了。 如样例: 【输入样例】 1+(3+2)(7^2+69)/(2) 【输出样例】 258 计算机是没有办法分清计算的先后顺序的,所以我们需要想办法让计.

2020-06-09 16:06:16 1416

原创 「EZEC」 Round2 六六欢乐赛(赛时)

神奇的比赛,虽说老师让我们不要在意成绩,但一次比赛多少有点紧张(或是说激动?),然后上来看完第一题就懵逼了----第一题都不会做???? 于是自信心受到打击,前一个小时都在乱水,啥也没弄出来。 「EZEC-2」异或 后来回过头看了看一题,想了想数据,决定碰一碰运气----默认最大输出时a中只有异或最大的两个数(因为样例是满足的)。 然后就开始枚举范围内所有的异或值,最后找到最大的,因为同数异或为0,所以只要让a中两个数(之前枚举出来异或最大的两个数)相互异或的次数尽可能多,所以毫无疑问要尽可能平均的放置

2020-06-09 08:35:19 163

空空如也

空空如也

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

TA关注的人

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