- 博客(29)
- 资源 (2)
- 收藏
- 关注
原创 Deque 容器(单调栈 下一个较大元素位置)
deque容器是C++标准模版库(STL,Standard Template Library)中的部分内容。deque容器类与vector类似,支持随机访问和快速插入删除,它在容器中某一位置上的操作所花费的是线性时间。与vector不同的是,deque还支持从开始端插入数据:push_front()。构造函数: deque<Elem> c 创建一个空的deque
2018-07-31 21:52:18 350
原创 Robots at Warehouse (机器人换位置,简单图论题)
原题:Gym-100971J 题意:n*m地图,每次只能走上下左右四个方向中的一个,走一格,#不能走,有A,B两个机器人,在同一时间不能落在一个格子里,且不能对换位置,问是否可以交换位置解析:首先,需要A和B连通然后,你可能走到一个可以走三个方向的格子,你就可以让一个机器人躲进去,从而交换位置如果没有这种情况,还有一种可行的办法是AB间存在一个环代码:strin...
2018-07-31 17:07:25 397
原创 Treasure Island(简单图论题)
原题:Gym-100971A 题意:n*m图,‘.’代表陆地,‘#’代表海,‘?’未知,问你是否有确定的一片大陆(没有其他点)解析:开始的时候没看到条件(一定有一个‘.’)多写了一大堆判断条件既然一定有一个点,那么我们就先找到这个点,把?看成陆地走一遍,然后,这遍假设没走到一个‘.’,那么就是不可能了,对于‘?’,如果没走过的就是#了,走过的判一下去掉这个点后是不是对陆地有影...
2018-07-31 13:28:06 848
原创 Floods (想法题)
原题:Gym-101808E 题意:有一个用n个点表示的山峰,问下雨的时候最多可以积多少的水解析:首先,我们应该可以想到,找出最高点,往次最高点延申 这里有两种做法我们对于次最高点求出其往最高点平移是碰到的那个点,然后把从那个点开始到次最高点的所有点组合成一个多边形,用叉积求一下这个多边形的面积,就是水的面积了struct point{ F x,y...
2018-07-31 12:10:18 322
原创 滑窗求最大值 (单调栈)
原题 : Problem A. Ascending Rating题意:给n个数的数组,求a和b的和 a:每个m长度的子数列的最大值^子数列第一个位置下标 b:每个m长度的子数列的上升数^子数列第一个位置下标 上升数:从第一个开始,遇到大于前一个上升数的所有数(5 2 1 4 6)->(5 6)解析:在比赛的时候,我想到了单调栈,但是我是从前往后进栈,这样做的坏处还是很明...
2018-07-30 20:04:41 1004
原创 Forgotten Spell (想法题,三个相同字符串的修改)
原题:Gym - 101755M题意:有三个原本相同的字符串,每个字符串最多被改一个字母,求原来的字符串解析:3个相同不相同的情况只有三种:都相同,两个相同(记作x),都不同(记作y)而都相同就可以不用管了,我们记录一下有多少个位置都不同(记录位置),或者两个相同(记录位置,哪个不同)两个相同:改一个或者两个 三个不同:改两个x=1,y=0 或 x=0,y=1 或...
2018-07-26 20:22:49 648
原创 Queries on a String (字符串子顺序)
原题:Gym - 101755L题意:有个案例字符串和空字符串,有q个对第二个字符串的操作,push一个字母或是pop一个,问操作之后的字符串是不是案例字符串的子顺序串解析:开始的时候我对每个字母x找到下一次x出现的位置,结果T了,改进了一下对每一个位置找出所有26个字母下次出现位置代码:D read(){ D ans=0; char last=' ',ch=ge...
2018-07-26 18:17:38 629 1
原创 Greedy Pirate (最近公共祖先 LCA)
原题:Gym - 101810M题意:n结点的一棵树,每条边都有两个方向的价值c1,c2,且每条边你只能走最多两次,每次询问给出起点和终点,求你能得到的最大价值解析:已知在一棵树上两个点之间的路径唯一,那么我们可以发现,一定存在一种走法,把这条路径以外的边的两个价值都拿到,而这条路只能拿一次(且方向确定)那么,我们在开始的时候记录下所有边的价值和,减去这条路径反方向的价值,就是...
2018-07-23 10:08:00 367
原创 Video Reviews (强大的二分)
原题:Video Reviews题意:有n个人(带顺序),对i,如果前面有ai个人加入,那么i会加入 你可以强迫任何一个人加入,问想要加入人数达到m的最小强迫次数为多少解析:假设你一定要强迫一个人,那么最优方案为强迫第一个不加入的人,因为从加入的人开始后面的人加入的可能性变大,越前面加入,开始的越早但是在不知道强迫多少人的情况下,你处理起来会很复杂,因为你在遇到一个不加入的人...
2018-07-22 20:30:35 464
原创 Safe Path (图论 多个M外延)
原题:Gym - 101755H题意:S出发到F的距离,其中有多个M,每个M可以走k步,如果有个点是M走的到的,那么你不能走这个点解析:对每个M往外延k步,延到的地方变成M,但是因为数据比较大,不能一个一个延,要把所有M一次性加到queue里面一次性延合理性证明:因为是bfs所以点i延v步时,如果延到了其他点的路径,那么对于这个交触点来说,一定是前面的点还能走的远(bfs:i之...
2018-07-22 19:42:37 553
原创 Underpalindromity(奇偶 树状数组)
原题:Gym - 101755G题意:给n长int数组,对于每个长为k的子串,cost==使之为回文所需添加的1的个数 求Σcost解析:假设数组:1 2 3 4 5 6 7 8 9 10 k==5时,第一个子串 1~5,2~4,最后一个6~10,7~9设l[i]表示和i有关系的第一个数,r为最后一个 那么1~k内的数,l[i]=k-x+1,大于k的数,l[i]=x-k...
2018-07-22 18:31:49 362
原创 矩阵模板
#include<stdio.h>#include<string.h>#define D long long#define N 109#define MOD ((int)1e9+7)struct matrix{ int size; D mat[N][N]; matrix(int s){ size=s;memset(mat,...
2018-07-20 12:36:36 777
原创 大数模板
#include <bits/stdc++.h>#pragma comment(linker, "/STACK:1024000000,1024000000")#define mem(a,b) memset((a),(b),sizeof(a))#define MP make_pair#define pb push_back#define fi first#define se ...
2018-07-20 12:35:09 193
原创 dijkstra 链式前向星 pill版 模板
#include<stdio.h>#include<string.h>#include<algorithm>#include<queue>using namespace std;const int mod = (int) 1e9+7;int n,m,dist[200005],head[200005],vis[200005],now;...
2018-07-20 12:29:31 264
原创 最小生成树模板
#include<iostream>#include<cstring>#include<cstdio>#include<algorithm>using namespace std;struct node{ int x,y,w; bool operator<(const node & a)const{ ...
2018-07-20 12:26:25 243
原创 并查集模板
#include<stdio.h>#include<iostream>using namespace std;#define D long longD read(){ D ans=0; char last=' ',ch=getchar();while(ch<'0' || ch>'9')last=ch,ch=getchar();while(ch>...
2018-07-20 12:25:16 374
原创 几何模板
#include&amp;amp;amp;amp;amp;lt;iostream&amp;amp;amp;amp;amp;gt;#include&amp;amp;amp;amp;amp;lt;cstdio&amp;amp;amp;amp;amp;gt;#include&amp;amp;amp;amp;amp;lt;cmath&amp;amp;amp;amp;amp;gt;#include&a
2018-07-20 12:23:35 426
原创 数学模板
#include&amp;amp;amp;amp;amp;amp;amp;lt;iostream&amp;amp;amp;amp;amp;amp;amp;gt;#include&amp;amp;amp;amp;amp;amp;amp;lt;cstdio&amp;amp;amp;amp;amp;amp;amp;gt;#include&amp;amp;amp;amp;amp;amp;amp;lt;cmath&am
2018-07-20 12:19:13 216
原创 Tree Restoration(猜测一棵树的合法性)
原题:Gym - 101755F题意:有n个结点,给出这个结点下面子树的所有结点,问有没有这样的树,如果有,输出所有边解析:把给出的条件先记录下来,然后靠这些条件把树建起来,然后bfs这棵树,把bfs的条件和给出的条件对比即可这样就不用自己去想有哪些bug了代码://从下往上建图(相邻结点),从上往下bfs(只要是上下),检测前后(总关系)是否矛盾////...
2018-07-19 21:27:30 435
原创 Weird Requirements (多个数的GCD和LCM的处理)
原题:Gym - 101808G题意:n个数的数组,给出gcd和lcm,要求改变一些数使得gcd=x,lcm=y解析:任何数都由一些质数的几次幂的乘积组成 及 ai=(p1^ci1)(p2^ci2)(p3^ci3)…..(pj^cij) (p 都为质数)求gcd其实就是求次数的最小值 gcd(a1,a2,a3,…) =(p1^min1)(p2^min2)…(pj^m...
2018-07-19 10:47:29 2426
原创 RMQ ST求O(1)区间最值
ST算法用dp[i][j]来表示以i为起点2^j的长度范围内的最值 初始化时,dp[i][0]就是数本身,而递推,显然,dp[i][j]可以用dp[i][j-1]和dp[i+(1&amp;amp;amp;lt;&amp;amp;amp;lt;(j-1))][j-1]来得出 而在查询的时候,因为一个dp表示2^n的范围,所以不管什么区间都可以用至多两个dp来得出 比如1~7就可以用dp[1][2](1~4)和 dp[4][2](4~7)...
2018-07-18 20:36:37 356
原创 Group (莫队算法)
原题:Group题意:一个数组,给多个区间,每个位置有个不会重复的编号,编号连续的数可以组队,k个数的队价值为k*k,每个询问给一个区间,求区间的最大价值需要多少个组解析:2*2+1*1肯定是3*3大,所以相当于问在排序后有多少片连续的数对于这种分析数出现不出现,出现几次的问题,且多个询问可以离线的情况,可以用莫队来做首先,离线处理后,进行这个算法最重要的询问排序对...
2018-07-18 18:56:14 719
原创 Balanced Lineup(分块)
原题:POJ - 3264题意:给一个数组,每次询问一个区间的最大值和最小值解析:一般来说是用线段树来做这类问题的,不过在数据比较小的时候可以用分块做对于长度为n的数组,我们可以分成多个连续的块,对每个块预处理相应的最小值和最大值。比如一个块长度k为5,求2~17时我们就只需要遍历2~5,16~17,中间的就用预处理出的数据就行而且,k取sqrt(n)的时候,块外的遍历...
2018-07-18 18:23:10 303
原创 分数调查(带权并查集)
原题:HihoCoder - 1515 题意:有n学生,告诉你m条消息,每天消息为a比b高s分 q此询问,问两个学生的分数差,不能得出则-1解析:在并查集的基础上,我们用一个数组v来记录点于其现在的根结点的差,v[2]==10表示二比二的根高10在findfa和unit函数进行的同时更新v就行findfa时,同递归的方法,用其父结点的v推出其vunit时,连接两个点的...
2018-07-18 17:04:38 342
原创 Careful Thief (区间和最大)
原题:Gym - 101810A题意:有条1——1e9的坐标轴,给出n给区间l,r,v表示l到r范围内的点价值为v 你可以得到连续的一段区间的价值,区间最长为k,求可以得到的最大值解析:相当于在长度固定的情况下移动区间,有以下结论选取区间的端点一定是某个给出的区间的端点,因为如果两端都在某个区间的中间话,往左或往右一定可以做到单调不减所以,我们可以扫一遍所有区间的端点...
2018-07-18 13:19:32 849
原创 Minimum Sum of Array (因数倍数 数据处理)
原题:Minimum Sum of Array 题意: 有n个数,可以把大的数变成小的只要小的数也存在并且大数是小数的倍数问任意改变后sum的最小值解析:对于这一堆数,首先先排序,然后的处理办法有很多一:从前往后扫,对扫到的每一个数再往后扫,时间当然是不够的啦二:既然是倍数,我们可以针对每个数,排掉它的倍数,比如2的时候我们就排掉4,6 这样为什么可以节省时间呢...
2018-07-17 21:43:27 436
原创 Ildar Yalalov ( 博弈 判断输赢 )
原题:Gym - 101808I 题意:有n堆石子,数量给出,每次操作可以将所有石子去掉1个,或者从一堆中去掉一个,问就当前情况而言是必输或赢解析:既然可以所有拿掉一个,那么可以看成柱形图,所有柱子减一相当于去掉最下面一层可以把所有情况,分为以下几大类:(所以堆的最小数就是可以去掉的层数,上面的是拿掉所有层后剩下的数)n的奇偶把所有可以去掉的层去掉后,上面的奇偶剩下层...
2018-07-17 11:44:26 542
原创 多个数求和的可能结果数量(bitset)
原题:牛客练习赛22 C题意:给出n给数的范围,求Σ xi^2的可能结果数量解析:bitset &lt;n&gt; ans 用bitset表示可能性,ans[2]=1表示可能为2假设第3个加进来的数是2,前面两个得出的可能数是2 4 5,就变成了4,6,7即:0 0101100 – 0 00001011 然后把第3个区间的其他数在2 4 5的基础上左移,再“|”就...
2018-07-15 16:56:58 976
mnist手写数字数字集
2019-12-11
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人