思维
y_din
Being dazzling.You are qualified.
展开
-
【线段树+双向链表】2021牛客寒假算法基础集训营3 E-买礼物
题面https://ac.nowcoder.com/acm/contest/9983/E题意两种操作把位置x上的数变成0查询【l,r】区间上有没有相同的两个数思路题意转化:可以把问题转化成对于【l,r】这个区间中是否存在一个数,使得跟该数前面最近跟它相同的数位置在【l,r】这个区间中首先我们可以预处理出每个数前面跟它相等的最近的数的位置,然后用线段树存储我们预处理的数组,我们只需要判断跟他相同的最大的位置是否在【l,r】这段区间里,就知道是否存在了那对于第一个操作,我们要如何进行更新原创 2021-02-08 15:16:42 · 147 阅读 · 0 评论 -
【思维+线段树】牛客牛客练习赛66 E骚区间
题面https://ac.nowcoder.com/acm/contest/6112/E题意求在一个序列中有几个【L,R】满足a[l]是这个序列的次小值,a[r]是这个区间的次大值思路因为左右两边的性质相关相反,所以我们考虑把一个端点固定下来以后,找另一端的约束区间首先我们把左端点固定下来,用左端点是次小值的这个性质,把右端点的约束区间确定下来,比如说:如图这个区间,对于第二个数4而言,以4为左端点满足条件的区间只有【2,3】和【2,4】,以左端点为4的约束区间为【3,4】所以这个地原创 2021-01-19 19:07:31 · 139 阅读 · 0 评论 -
【线段树】L - GTY‘s gay friends
题面http://acm.hdu.edu.cn/showproblem.php?pid=5172题意给你n个数,m次查询,每次询问一个区间【l,r】,问这个区间【l,r】是否满足【l,r】之间的数是【1,r-l+1】的一个排列思路1:题意转化+线段树对于一个区间,我们可以把它【1,r-l+1】的排列转化成满足以下两个条件:【l,r】的区间和为len*(len+1)/2,其中len=r-l+1对于【l,r】中的每个数,他的前一次出现必须在l这个位置之前对于第一个问题来说,我们可以直接用前缀和原创 2020-12-11 16:01:01 · 186 阅读 · 0 评论 -
【暴力 约束】D - K-th K AtCoder - agc008_d
题面https://vjudge.net/problem/AtCoder-agc008_d题意给一个长度为N的序列X,X[i]表示的是i出现第i次在x[i]这个位置上,问是否能构造出这个序列思路首先x[i]这个位置上放的就是i这个数,然后就是约束前面i-1个位置来放i这个数,有一个显然的结论就是贪心地来选肯定是前面的位置先安排掉,因为对于后面的数来说,可以选择的位置更多,同样,在第一轮从前往后排的时候已经占掉前一半的数了,那么后一半的位置就倒着按照第一次的贪心思路来把后面的位置填充完代码#in原创 2020-12-07 16:16:03 · 204 阅读 · 0 评论 -
【哈希+并查集】J - Connectivity AtCoder - arc065_b
题面添加链接描述题意有n个城市,他们之间有k条道路和l条铁路,问每个城市各有多少个城市与它既用道路可以相连又用铁路可以相连(铁路和道路之间互不相连),一个城市和它自己有道路和铁路同时相连思路题意可以转化为对于一个城市而言,在道路中有一个集合,在铁路间也有一个集合,它可以都到达的城市就是这两个集合的交集,但是直接查询的话复杂度是n2log(n)n^2log(n)n2log(n),这个地方我们可以用哈希处理,将所有第一个集合和第二个集合相同的投影到同一个map中,在映射回来可以处理代码#inclu原创 2020-12-07 14:20:01 · 201 阅读 · 0 评论 -
【思维+双指针】I - Distance 2018ICPC焦作
题面https://vjudge.net/problem/Gym-102028I题意每一次选一个点,答案+=其他已经选的所有点到该点的距离之和,求最大能得到答案思路显然答案是要左边取一个右边取一个会最大,然后我们又发现先取那边没有关系,所以就变成了一个简单的双指针的题,主要难度在代码实现上代码#include<bits/stdc++.h>using namespace std;typedef long long ll;const double pi=acos(-1);con原创 2020-11-28 21:41:23 · 126 阅读 · 0 评论 -
【二分+思维】排位赛1-D Meetings
题面:思路:这里有两个结论:两头牛相遇,速度交换,由于速度只有1和-1两个状态,所以原创 2020-07-11 21:23:10 · 160 阅读 · 0 评论 -
【思维】C港口(差分数组) 第十五届中北大学算法与程序设计竞赛
题目链接:https://ac.nowcoder.com/acm/problem/205919题目描述:港口有n堆货物,他们的重量分别为w1,w2,…wn,每堆货物的重量不一定相同。吊车师傅每次操作可以使任意第i堆到第j堆的货物都增加一个重量或者减少一个重量。请问吊车师傅最少需要执行几次操作可以使n堆货物重量都相同。这个题是从差分数组的角度思考的。从差分数组的角度来看,每次对于区间[l,r]进行加操作就是对于差分数组cf[l]++,对cf[r+1]–;那么反过来思考,如果对原数组进行了区间[l,r原创 2020-06-30 20:05:42 · 1177 阅读 · 0 评论 -
【思维】糖糖别胡说,我真的不是签到题目
题目链接:https://ac.nowcoder.com/acm/problem/14583问题描述:从前,有n只萌萌的糖糖,他们分成了两组一起玩游戏。他们会排成一排,第i只糖糖会随机得到一个能力值bi。从第i秒的时候,第i只糖糖就可以消灭掉所有排在他前面的和他不是同一组的且能力值小于他的糖糖。为了使游戏更加有趣,糖糖的爸爸,娇姐,会发功m次,第i次发功的时间为ci,则在第ci秒结束后,b1,b2,…,bci都会增加1.现在,娇姐想知道在第n秒后,会有多少只糖糖存活下来。输入:第一行只有一个整数原创 2020-06-28 11:26:37 · 210 阅读 · 0 评论