随笔分类 - STL
摘要:题意:有$n$个人,$m$个餐馆,每个人都有自己想去的餐馆,按喜好顺序排列,同时餐馆也对这些想要来的顾客做了优先级排列,问你最后那些人能预定到餐馆。 题解:这题咋一眼看是一个稳定婚姻匹配的裸题,但数据范围似乎不太行,我们先将所有人放到队列里,然后按顺序给他们安排餐馆(放入优先队列中,根据餐馆希望的优
阅读全文
摘要:题意:有$n$个待完成的任务,每个任务都有编号,有一队列,如果队列没满,就将任务入队,否则,查询队列中是否有和当前任务编号相同的任务,如果有,将其提到队位,贡献+1,否则,排出队头。现在问你队列的容量最少为多少能满足贡献不小于$k$. 题解:很明显,$k$具有单调性,我们可以二分答案。现在来看che
阅读全文
摘要:题意:有一长度为$n$的$01$序列,每次可以将序列元素右移$d$个单位,然后原序列和新序列每个元素取&,问你最少操作多少次使得序列所有元素都为$0$,或者不存在. 题解:对于大小为$1$的位置,它一定只能被某个是$0$的位置移动过来变成$0$,所以我们考虑$0$的位置,移动后的新位置为$(i+d)
阅读全文
摘要:题意:有一张$n$个点,$m$条边的无向图,每条边都有边权,$q$个询问,每次问一个$q_i$,将所有边权减去$p_i$后不小于$0$的边为有效边,问有多少对点能相互到达。 题解:一张图,两个点连通,不难想到最小生成树,进而想到保留边权最大的边最优,即转化成了最大生成树,那么我们就可以将询问离线存下
阅读全文
摘要:题意:一共有$n$个人,每个人都要送礼物给别人,每个人都要收到礼物,但每个人都有自己相送的人,序列$a$表示第$i$个人想送礼物给$a[i]$,输出长度为$n$的序列,表示$i$送礼物给$b[i]$. 题解:先用set将能给礼物的先给了,即将没收到礼物的$a[i]$先给了,给过就erase掉,并且记
阅读全文
摘要:题意:你要连续$T$天去景点游玩(上午或者下午),有$n$个室内景点和$m$个室外景点,每个景点都有自己的值,对于同一个景点,每次重复参观,权值都要*\(0.6\).如果在下午参观室外景点那么景点的权值*\(0.8\).你至少有$k$天在下午游玩,问你能得到的最大权值是多少. 题解:对于*$0.6$
阅读全文
摘要:题意:有$n$个数,首先任选一个正整数$x$,然后在数组中找到两个和为$x$的数,然后去掉这两个数,$x$更新为两个数中较大的那个.问你最后时候能把所有数都去掉,如果能,输出最初的$x$和每次去除的两个数. 题解:首先现将数组排序,我们每次肯定都是要用数组中当前最大的数和其他数进行组合,这很容易证明
阅读全文
摘要:题意:酒吧里有两个服务员,每个人每次都只能服务一名客人,服务员2按照客人进酒吧的顺序服务,服务员3按照客人的钱来服务,询问$q$,$1$表示有客人进入酒吧,带着$m$块钱,$2$表示询问服务员2当前应该服务的客人编号,$3$表示服务员3当前应该服务的客人编号. 题解:搞两个set,第一个set存pa
阅读全文
摘要:题意:给你两个长度为$n$的数组$a$和$b$,元素值在$[0,n-1]$,可以对$b$数组的元素任意排序,求新数组$c$,满足$c_i=(a_i+b_i)\ mod\ n$,并且使得其字典序最小. 题解:这种取模求最小的题,我们一眼就能看出最优情况一定是$b_i=n-a_i$,可以先用set存一下
阅读全文
摘要:题意:有一长度为$n$的字符串,要求得到$k$不同的它的子序列(可以是空串),每个子序列有$|n|-|t|$的贡献,求合法情况下的最小贡献. 题解:直接撸个爆搜找出所有子序列然后放到set里面搞一下就好了. 代码: int n,k; string str; set<string> s; queue<
阅读全文
摘要:题意:你有$n$个礼物,礼物有自己的种类,你想将它们按种类打包送人,但是打包的礼物数量必须不同(数量,与种类无关),同时,有些礼物你想自己留着,$0$表示你不想送人,问你在送出的礼物数量最大的同时,尽可能的使自己喜欢的留下来,输出能送出的最大礼物数,以及这些礼物中自己不喜欢的数目. 题解:首先,我们
阅读全文
摘要:题意:有$n$个队员站成一排,有两个教练分别选人,每次选当前剩余人中的能力值最大的那个以及他两边相邻的$k$个人,问最后每个人所在队伍情况. 题解:优先队列模拟,以及双向链表,先用结构体存入每个人的状态,然后全部push到优先队列中,每次将已经分好队的人弹出,然后找当前能力值最大的人分组,至于两边的
阅读全文
摘要:题意:每次有$3$中操作,对两个点连条边,删去某条边,或者问当前大小不为$1$的树的数量.连重边或者删去一条不存在的边,这样的白痴操作可以无视qwq. 题解:水题,用map存一下pair然后分论讨论即可. 代码: int n; ll u,v; map<PLL,bool> mp; map<ll,ll>
阅读全文
摘要:题意:给你一张图,"."表示能走,"#表示不能走,步行可以向四周四个方向移动一个单位,使用魔法可以移动到周围$5$X$5$的空地,问能否从起点都早终点,并求最少使用多少次魔法. 题解:明显是用BFS,但是我们要能步行就步行,尽量少使用魔法,所以我们可以用deque来存状态,将步行的状态放在前面,魔法
阅读全文
摘要:题意:给你一个字符串,可以交换两个字符的位置,问操作后能否在字符串中找到子串$"happiness"$,如果不能,输出交换的两个位置. 题解:这题其实用string中的find函数很是方便啊,假如字符串中不含子串,我们判断一下交换$1$和$2$位置的字符后是否含有子串,如果有就直接交换$1$和$3$
阅读全文
摘要:题意:有一个长度$n$的序列,如果$a_<a_{i+1}$,那么可以选择删除$a_$或者$a_{i+1}$,再继续操作,问是否能够将序列删到只剩一个元素. 题解:感觉这种序列变化的题目能用stack写,所以用数组模拟stack写了一发. 首先,假如栈为空或者$a_<a_$,那么就让$a_$入栈.
阅读全文
摘要:题意:给你$m$个长度为$n$的二进制数,求最少选多少个使它们$|$运算后所有位置均为$1$,如果不满足条件,则输出$-1$. 题解:这题$n$的范围很大,所以我们先用$string$读,然后再转化为$bitset$,之后再直接dfs爆搜,对于满足条件的维护一个最小值即可. 代码: #include
阅读全文
摘要:题意:有$n$堆物品,每次可以将两堆捆成一堆,新堆长度等于两个之和,每次消耗两个堆长度之和的长度,求最小消耗使所有物品捆成一堆. 题解:贪心的话,每次选两个长度最小的来捆,这样的消耗一定是最小的,但是我们需要一个容器来存这些数,这时候很明显要用到优先队列(小根堆),我们将所有元素入队,每次取前两个捆
阅读全文
摘要:题意:有一个长度为$n$元素均为$0$的序列,进行$n$次操作构造出一个新序列$a$:每次选择最长的连续为$0$的区间$[l,r]$,使得第$i$次操作时,\(a[\frac{l+r}{2}]=i\)(下取整),求$a$. 题解:刚开始我打算用归并分治的思想来写,但是发现左区间递归不到,然后就gg了
阅读全文
摘要:题意: 一个人在雪地上滑雪,每次可以向上下左右四个方向移动一个单位,如果这条路径没有被访问过,则需要5秒的时间,如果被访问过,则需要1秒(注意:判断的是两点之间的距离,不是单纯的点).给你他的行动轨迹,求消耗的时间. 题解:我们用两个pair来维护边,用map来对边进行标记,每次更新map记得双向更
阅读全文

浙公网安备 33010602011771号