难题
小吴同学GOGOGO
一只怀揣梦想的阿柴;五角场某高校同学、某大厂打工人;兴趣方向:OLAP基础架构、大数据存储和计算引擎;「计算机小屋」
展开
-
最大子矩阵(DP)
本题其实可以抽象成一个动态规划的题目,我们要求的这个子矩阵不是正方形的,其实我们可以将矩阵进行压缩,想象成一维的,这样,我们在求解的时候,实际上就是求解最大连续子序列和,所以,我们可以枚举这个最大子矩阵的上界和下界,然后通过压缩,从上界的值一直到下界的值累加在一起,然后形成一个一维数组,最后求解这个一维数组的最大连续子序列和即可。复杂度(n^3),可以承受,代码如下://@author:hai...原创 2020-05-04 18:21:25 · 428 阅读 · 0 评论 -
L2-016 愿天下有情人都是失散多年的兄妹 (25分)-DFS
呵呵。大家都知道五服以内不得通婚,即两个人最近的共同祖先如果在五代以内(即本人、父母、祖父母、曾祖父母、高祖父母)则不可通婚。本题就请你帮助一对有情人判断一下,他们究竟是否可以成婚?输入格式:输入第一行给出一个正整数N(2 ≤ N ≤104 ),随后N行,每行按以下格式给出一个人的信息:本人ID 性别 父亲ID 母亲ID其中ID是5位数字,每人不同;性别M代表男性、F代表女性。如...原创 2020-04-30 16:54:01 · 874 阅读 · 0 评论 -
离散化优化树状数组--解决数据过大问题
首先,引入一个问题:题目描述:对序列中的每个数,求出序列装哪个他左边比他小的数的个数比如:2 5 1 3 4比如5的左边比他小的就只有2,也就是只有1个比他小 ;那么,本题可以利用树状数组来解决,只需要当当前数字出现的时候,更新树状数组即可,代码如下:/*题目描述:对序列中的每个数,求出序列装哪个他左边比他小的数的个数比如:2 5 1 3 4比如5的左边比他小的就只有2,也就是只有...原创 2020-04-28 19:38:28 · 347 阅读 · 0 评论 -
树状数组的简单介绍和C++实现
有关树状数组,大家可以参考网上介绍,这里,我简单介绍一下树状数组的实现:树状数组作用:可以用于区间查询和单点更新:比如,查询数组中从下标为2到4的值的和,那么就可以用到区间查询,这里的区间查询函数可以计算从1-n的值,根据个人的需要,就可以利用区间查询来计算出自己需要的值;那么单点更新就是说:可以在某一位加上或者减去某一个数字,同时更新树状数组的值即可。以上的功能实现都取决于这个树状数组C的...原创 2020-04-27 11:30:23 · 203 阅读 · 0 评论 -
计蒜客A1004-非递归树的中序遍历(数组模拟二叉树)
本题,先用getline获取一行数据,然后对每一组数据进行处理,用两个数组分别保存某个节点的左孩子以及右孩子,那么保存的是ascii码值,这样在中序遍历的时候,可以采用递归的方式,代码如下://@author:hairu,wu#include<iostream>using namespace std;const int max_n=1e4;int lchild[max_n...原创 2020-04-21 18:49:22 · 207 阅读 · 0 评论 -
最长连续不重复子串
此问题就是寻找一个序列当中最长不重复的子串长度,我们利用双指针,维护一个子序列,保持其中数字不重复,我们将右指针每次向右边移动,就将标记+1,所以,如果右指针遇到重复数字,那么此处的标记就是2.所以,此时需要将做指针右移,将这个重复元素消去,也就是减1,那么这个while循环判断的条件就是右指针的值是否大于1,这个判断循环结束的时候,能够保持这个子串内部的数字都是不重复的#include&l...原创 2020-04-13 17:47:54 · 1092 阅读 · 1 评论 -
归并排序-计蒜客-1566-最少的交换
现在给你一个由 nn 个互不相同的整数组成的序列,现在要求你任意交换相邻的两个数字,使序列成为升序序列,请问最少的交换次数是多少?输入格式输入包含多组测试数据。每组输入第一行是一个正整数 nn(n<500000n<500000),表示序列的长度,当 n=0n=0 时。接下来的 nn 行,每行一个整数 a_iai (0 \le a_i \le 9999999990≤ai...原创 2020-04-10 13:46:18 · 433 阅读 · 0 评论 -
单调队列和单调栈例题
1:单调队列/*给出一个长度为n的序列和区间长度k,从左向右对每一个长度为k的区间询问最大值和最小值。思路:对于最小值,考虑维护一个递增的双端队列,每次入队时将队尾比当前入队元素的全部删除,每次取队首并且判断是否在当前区间内即可*/ //@author:hairu,wu//@from:ahut#include<iostream>#include<queue...原创 2020-04-09 18:38:09 · 179 阅读 · 0 评论 -
单调队列(利用C++容器deque实现)原理解析
1:关于deque*deque是C++中的一个容器,其底层原理是双端队列(学过数据结构的应该知道,就是对比于普通的队列而言,可以在双端队列的两端进行插入和删除操作,所以用它来操作数据比较方便,但是注意:其底层存储结构并不是连续的存储单元,所以不能用指针加偏移地址去操作)。* 其头文件为#include< queue >2:关于单调队列单调队列其实是一种思想,也就是维护一个...原创 2020-04-09 16:14:39 · 1413 阅读 · 0 评论 -
计蒜客-1290-对局匹配
本题就是枚举这三个人即可,并且同时设置标记数组vis,如果这个人之前没有被访问过,并且符合条件,就加入到结果集中,ans++;那么这里可以把vis同时加到结构体中进行标记即可’//@author:hairu,wu//@from:ahut#include<iostream>#include<cmath>#include<algorithm> usi...原创 2020-04-09 14:40:18 · 173 阅读 · 0 评论 -
计蒜客-1884-奶牛晒衣服(priority_queue)
熊大妈决定给每个牛宝宝都穿上可爱的婴儿装。于是,为牛宝宝洗晒衣服就成了很不爽的事情。熊大妈请你帮助完成这个重任,洗完衣服后,你就要弄干衣服。衣服在自然条件下用 11 的时间可以晒干 AA 点湿度,抠门的熊大妈买了 11 台烘衣机 。使用烘衣机可以让你用 11 的时间使 11 件衣服除了自然晒干 AA 点湿度外,还可以烘干 BB 点湿度,但在 11 的时间内只能对 11 件衣服使用。NN 件衣服...原创 2020-04-06 22:13:12 · 353 阅读 · 0 评论 -
摆花问题-(DP)
本题是比较绕的,,留个笔记,后来复习#include<iostream>using namespace std;int main(){ int dp[200][200],a[200]; int n,m; //本题也就是经典的摆花问题,n种摆成m盆 cin >>n>>m; for(int i=1;i<=n;i++){ cin >...原创 2020-04-03 19:56:37 · 918 阅读 · 0 评论 -
错排公式及其应用
什么是错排公式?首先我们考虑一个问题,如果书架上有n本书,现在希望把每本书都放在不是原来的位置上,那么有几种放置的方法?上面的问题就是错排问题。现在,我么来解决:首先,我们取一本位置在m位置上的书,现在m位置空出来了,现在要放在其他n-1个位置上,假设我们放在了位置k上,那么我们就把k位置上的书拿出来了,现在k位置空出来了,所以现在原本在k位置上的书要放在哪里呢,有两种选择,一种是放在原来...原创 2020-04-01 23:45:02 · 264 阅读 · 0 评论 -
计蒜客-2141-传球游戏(DP)
上体育课的时候,小蛮的老师经常带着同学们一起做游戏。这次,老师带着同学们一起做传球游戏。游戏规则是这样的:nn 个同学站成一个圆圈,其中的一个同学手里拿着一个球,当老师吹哨子时开始传球,每个同学可以把球传给自己左右的两个同学中的一个(左右任意),当老师再次吹哨子时,传球停止,此时,拿着球没传出去的那个同学就是败者,要给大家表演一个节目。聪明的小蛮提出一个有趣的问题:有多少种不同的传球方法可以使...原创 2020-04-01 17:05:52 · 272 阅读 · 0 评论 -
计蒜客-1870-队列安排(STL的list)
一个学校里老师要将班上 NN 个同学排成一列,同学被编号为 1\sim N1∼N,他采取如下的方法:先将 11 号同学安排进队列,这时队列中只有他一个人;2-N2−N 号同学依次入列,编号为 ii 的同学入列方式为:老师指定编号为 ii 的同学站在编号为 1\sim (i -1)1∼(i−1) 中某位同学(即之前已经入列的同学)的左边或右边;从队列中去掉 MM 个同学,其他同学位置顺序不变。...原创 2020-04-01 12:29:53 · 435 阅读 · 0 评论 -
计蒜客-1269-顺序三元组
给定一个长度为 NN 的数组 A=[A_1, A_2, … A_N]A=[A1 ,A2 ,…AN ],已知其中每个元素 A_iAi 的值都只可能是 1, 21,2 或者 33。请求出有多少下标三元组 (i, j, k)(i,j,k) 满足 1 \le i < j < k \le N1≤i<j<k≤N 且 A_i < A_j < ...原创 2020-03-30 16:32:06 · 777 阅读 · 0 评论 -
计蒜客-2098-乌龟棋-四维dp
小明过生日的时候,爸爸送给他一副乌龟棋当作礼物。乌龟棋的棋盘是一行 NN 个格子,每个格子上一个分数(非负整数)。棋盘第 11 格是唯一的起点,第 NN 格是终点,游戏要求玩家控制一个乌龟棋子从起点出发走到终点。乌龟棋中 MM 张爬行卡片,分成 44 种不同的类型(MM 张卡片中不一定包含所有 44 种类型的卡片见样例),每种类型的卡片上分别标有 11、22、33、44 四个数字之一,表示使用...原创 2020-03-30 14:23:59 · 362 阅读 · 0 评论 -
计蒜客-1263-神奇的口袋-dp-求指导
有一个神奇的口袋,总的容积是 400400,用这个口袋可以变出一些物品,这些物品的总体积必须是 400400。小蒜现在有n个想要得到的物品,每个物品的体积分别是 a_1a1 ,a_2……a_na2 ……an 。小蒜可以从这些物品中选择一些,如果选出的物体的总体积是 400400,那么利用这个神奇的口袋,小蒜就可以得到这些物品。现在的问题是,小蒜有多少种不同的选择物品的方式...原创 2020-03-28 21:33:31 · 291 阅读 · 0 评论