02 2020 档案

摘要:https://codeforces.com/contest/1313/problem/C2 题意:给出一组数,使这组数满足任意ai不存在j<i<k,a[j] > a[i] < a[k],求满足该条件的这组数和的最大值? 解法:单调递增栈,扩展出以每个数为最小值的左右区间,同时dp可以算出1-i左区 阅读全文
posted @ 2020-02-28 19:02 无名菜鸟1 阅读(246) 评论(0) 推荐(0)
摘要:http://oj.ecustacm.cn/problem.php?id=1474 题意:长为n的走廊,有k台机器人在走廊上(可位置重叠),清扫走廊:每一个方格区域都要至少扫一遍, 并最终回到各自的起点,问从第一台机器人启动到最后一台机器人结束最少需要多少时间。 解法:对时间进行二分,找到最少时间。 阅读全文
posted @ 2020-02-22 14:29 无名菜鸟1 阅读(260) 评论(0) 推荐(0)
摘要:https://zoj.pintia.cn/problem-sets/91827364500/problems/91827367819 题意:给出n个城市,n-1条边,无环图,m次询问使u、v、w间联通的最短距离。 解法:lca求两两点间最短距离除以二。 //#include<bits/stdc++ 阅读全文
posted @ 2020-02-20 17:58 无名菜鸟1 阅读(573) 评论(0) 推荐(0)
摘要:http://poj.org/problem?id=1330 题意:给出一颗树,给出父子关系,求两点的lca。 解法:dfs序+ST表: 原理: 欧拉序(前序遍历得到的序列,叫dfs序,但数字可以重复出现,一进一出,叫欧拉序),会发现根结点总在中间,而根结点是该段序列深度最小的点因此两个点的LCA, 阅读全文
posted @ 2020-02-20 16:48 无名菜鸟1 阅读(313) 评论(0) 推荐(0)
摘要:https://codeforces.com/gym/101808/problem/K 题意:给出n个点n条边的无向连通图,m次询问u、v间的最短路径。 解法:n条边减去一条即为树。所以找出成环的边为a , b , l ; u 、 v两点间有三种路径取最短即可: 1、dis(u , v) 2、dis 阅读全文
posted @ 2020-02-19 02:46 无名菜鸟1 阅读(193) 评论(0) 推荐(0)
摘要:http://poj.org/problem?id=1330 题意:给出一颗n个节点的树,问u、v的lca。 解法:倍增: 1、两数组fa[i][j]表示i节点的长为2j的祖先,de[u]记录节点深度。 2、dfs遍历预处理de[u] , 有fa[u][i] = fa[fa[u][i-1]][i-1 阅读全文
posted @ 2020-02-19 00:53 无名菜鸟1 阅读(314) 评论(0) 推荐(0)
摘要:http://acm.hdu.edu.cn/showproblem.php?pid=2586 题意:给出一颗n个节点,n-1边且有距离(带权),m次询问,问两点间最短距离。 解法:记录每一个节点到根节点(默认为1)距离,u、v两点距离为dis[u]+dis[v]-2*dis[fa]. //#incl 阅读全文
posted @ 2020-02-17 21:49 无名菜鸟1 阅读(181) 评论(0) 推荐(0)
摘要:http://poj.org/problem?id=1330 题意:给出一颗n个节点的树,n-1条边表示u是v的父节点。询问a与b的最近公共祖先 解法:tarjian: 1、找出根节点(无父节点)从根点开始dfs遍历图,直到遍历该节点已经没有可访问的点为止 2、回溯,将v与u合并(注意u与v的父子关 阅读全文
posted @ 2020-02-17 20:12 无名菜鸟1 阅读(441) 评论(0) 推荐(0)
摘要:http://poj.org/problem?id=2823 题意:给出n个数,窗口大小为k,窗口从1滑到n-k,问所以窗口内的最大最小值; #include <iostream> using namespace std; int a[1001000] , q[1001000] ; int h , 阅读全文
posted @ 2020-02-17 15:36 无名菜鸟1 阅读(179) 评论(0) 推荐(0)
摘要:https://nanti.jisuanke.com/t/42391 题意:给出两个排列矩阵,问最大相同子矩阵的元素数量。 解法:标记位置,预处理向下扩展和向右扩展。 //#include<bits/stdc++.h> #include <cstdio> #include <cstring> #in 阅读全文
posted @ 2020-02-16 17:22 无名菜鸟1 阅读(218) 评论(0) 推荐(0)
摘要:http://poj.org/problem?id=3494 题意:给出一个01矩阵,问最大的全为1的子矩阵。 解法:将预处理后,将每一列(行)看成一维单调栈。 //#include<bits/stdc++.h> #include<iostream> #include<stdio.h> #inclu 阅读全文
posted @ 2020-02-16 16:50 无名菜鸟1 阅读(355) 评论(0) 推荐(0)
摘要:http://poj.org/problem?id=2796 题意:给出一个序列,求出一个子序列,使得这个序列中的最小值乘以这个序列的和的值最大。 解法:单调递增栈:每一个元素进栈前将元素剔除的过程是该元素在向左扩展,每一个元素在站内被某一元素剔除的过程为该元素的右扩展。 //#include<bi 阅读全文
posted @ 2020-02-12 19:06 无名菜鸟1 阅读(580) 评论(0) 推荐(0)
摘要:http://acm.hdu.edu.cn/showproblem.php?pid=1506 题意:给出连续的一组宽度为1,高为a[i]的长方形 , 问整个图所能构成的面积最大的长方形。 解法:单调递增栈记录以每一个值为最小值的两边扩展的最大值。比较以每一个值为最小值组成长方形面积的最大值。 //# 阅读全文
posted @ 2020-02-12 18:05 无名菜鸟1 阅读(159) 评论(0) 推荐(0)
摘要:https://blog.csdn.net/wcxyky/article/details/97617893?utm_source=app 1.给定一组数,针对每个数,寻找它和它左边第一个比它小的数之间有多少个数。 2.给定一序列,寻找某一子序列,使得子序列中的最小值乘以子序列的长度最大。 3.给定一 阅读全文
posted @ 2020-02-12 17:46 无名菜鸟1 阅读(202) 评论(0) 推荐(0)
摘要:https://www.cnblogs.com/Harley-Quinn/p/7513052.html 题意:给一组数n,求区间异或和为0且任意区间不交的数量 解法:贪心两区间都为0选右边界小的区间,会使得答案更优 #include <iostream> #include <vector> #inc 阅读全文
posted @ 2020-02-12 01:02 无名菜鸟1 阅读(393) 评论(0) 推荐(0)
摘要:https://ac.nowcoder.com/acm/contest/3005/D 题意:给出一组数n,问有多少区间异或和为0.解法:如果[l,r]是合法的子段,说明前缀和中xorsum[r]^xorsum[l-1] = 0, xorsum[l-1] = xorsum[r]。求出异或前缀和,然后使 阅读全文
posted @ 2020-02-12 00:56 无名菜鸟1 阅读(888) 评论(0) 推荐(0)
摘要:https://ac.nowcoder.com/acm/contest/3005/C 题意:求长度为k的连续子段乘积。 解法1逆元:前缀乘积(不含0),记录前缀0的个数,并求不含0的长度为k的连续子段乘积中取最大的。 注意0没有逆元,所以在考虑递推方法时0要特殊处理。 #include <bits/ 阅读全文
posted @ 2020-02-12 00:12 无名菜鸟1 阅读(260) 评论(0) 推荐(0)
摘要:https://ac.nowcoder.com/acm/contest/3782/A 题意:在一个n个点(编号为1-n),n条边的环中,每条边的长度等于它所连接的两个端点上的数字的和。 现已知将全图连通的n条边的长度,求各点上的数字。 解法:第一次跑环将x1求解出,第二次跑环将各点值求解。 #inc 阅读全文
posted @ 2020-02-11 19:33 无名菜鸟1 阅读(200) 评论(0) 推荐(0)
摘要:https://ac.nowcoder.com/acm/contest/3004/I 题意:输出汉诺塔移动过程中每一种移动的次数和移动总数。 如下A->B:XXA->C:XXB->A:XXB->C:XXC->A:XXC->B:XXSUM:XX 解法:记忆化搜索,当前状态的可以由上一状态得到。 #in 阅读全文
posted @ 2020-02-11 01:45 无名菜鸟1 阅读(562) 评论(0) 推荐(0)
摘要:时间复杂度O(nlogn) 找一个基数,使得这个基数的左边都比它小,右边都比它大。 双指针实现,从左边找找到第一个比基数大下标为i, 从右边找到第一个比基数小的数下标为j,i、j交换。 i == j 时将基数与a[i]交换,分治继续对(l , i-1) 与(i+1 , r)区间进行排序。 //#in 阅读全文
posted @ 2020-02-09 05:28 无名菜鸟1 阅读(159) 评论(0) 推荐(0)
摘要:时间复杂度:O(N2) 进行n-1次挑选,每一次找一个最小的与第一个数交换。 #include<bits/stdc++.h> #define me(x , y) memset(x , y , sizeof(x)) #define SC scanf #define rep(i , j , n) for 阅读全文
posted @ 2020-02-09 05:22 无名菜鸟1 阅读(189) 评论(0) 推荐(0)
摘要:时间复杂度O(N2) 进行n-1次每一次将一个最小的数(或最大的数)归位(最后一个数排好序),两两比较进行交换。 #include<bits/stdc++.h>#define me(x , y) memset(x , y , sizeof(x))#define SC scanf#define rep 阅读全文
posted @ 2020-02-09 05:15 无名菜鸟1 阅读(128) 评论(0) 推荐(0)
摘要:https://www.cnblogs.com/bqwzx/p/11029264.html 复杂度为O(n+m)。 特点:消耗空间大最少需要max(数据范围的最大值)个桶去装,但时间时间复杂度是线性的O(n)。 #include<bits/stdc++.h> #define me(x , y) me 阅读全文
posted @ 2020-02-09 05:06 无名菜鸟1 阅读(146) 评论(0) 推荐(0)
摘要:https://ac.nowcoder.com/acm/contest/3003/I 题意:给n个地点,每个地点有一个值a,边值花费等于lowerbit(ai异或aj),要使n个地点联通,问最小花费。 解法:要使lowerbit最小考虑最小进制满足存在vi = 1 和 vj = 0 交叉连边 , 注 阅读全文
posted @ 2020-02-07 01:43 无名菜鸟1 阅读(375) 评论(0) 推荐(0)
摘要:题意:在n*m的网格中,找至少一边平行x或y的面积为2的三角形个数。 解法:分情况考虑 1、两边平行x和y 1*2 或 2 * 1 矩形 有四个。 2、一边平行x或y 长度为1 或 2. //#include <bits/stdc++.h> #include <cstdio> #include <c 阅读全文
posted @ 2020-02-05 21:15 无名菜鸟1 阅读(241) 评论(0) 推荐(0)
摘要:题意::"nico" 计 分,"niconi" 计 分,"niconiconi" 计 分。给一字符串问最大价值为多少。 解法:dp【i】前 i 个字符最大价值。 可得转移方程: (i >= 3 && sub(i-3 , i) == "nico")dp[i] = max(dp[i] , dp[i-3] 阅读全文
posted @ 2020-02-05 20:33 无名菜鸟1 阅读(433) 评论(0) 推荐(0)
摘要:https://ac.nowcoder.com/acm/contest/3002/H 题意:给出长度为n的01字符串,可以进行k次操作:将一个字符0变1,1变0.问最长相同子串为多长。 解法:贪心,双指针模拟l , r 操作过程。 //#include <bits/stdc++.h> #includ 阅读全文
posted @ 2020-02-05 19:24 无名菜鸟1 阅读(355) 评论(0) 推荐(0)
摘要:https://www.luogu.com.cn/problem/P3803 题意:给出两个多项式,求两个多项式的卷积。 1解法:FFT递归版,因为递归每次传数组导致慢。 //#include <bits/stdc++.h> #include <cstdio> #include <cstring> 阅读全文
posted @ 2020-02-02 19:38 无名菜鸟1 阅读(265) 评论(0) 推荐(0)
摘要:http://oj.ecustacm.cn/problem.php?id=1253 题意:一副扑克牌52张(除去大小王),求从中拿13张牌的组合数(只考虑点数)。 1、解法:应用容斥原理: 该多重集合S = {4*1 , 4*2 , 4*3 , 4*4....... 4*10 , 4*11(J), 阅读全文
posted @ 2020-02-01 16:35 无名菜鸟1 阅读(376) 评论(0) 推荐(0)