CF1045G AI robots题解】的更多相关文章

CF1045G AI robots 题目大意就不说了 这道题可以用CDQ分治做 但是,如何选择CDQ分治的维度一直是CDQ分治的难点所在 这道题我们有三种选择 1.让智商高的数智商低的 2.让看的近的数看的远的 3.让靠右的数靠左的 但是,1和3都不好满足让这两个机器人分别都能看到的要求(因为不保证所以的机器人的视野范围相同) 所以我们以其视野范围当做第一维(从大到小排序) 之后我们发现对于左边\(i\) 右边满足其智商限制的一定是一个区间,之后这个区间我们可以用双指针维护 之后将这个区间里的数…
题意 火星上有$N$个机器人排成一行,第$i$个机器人的位置为$x_{i}$,视野为$r_{i}$,智商为$q_{i}$.我们认为第$i$个机器人可以看到的位置是$[x_{i}-r_{i},x_{i}+r_{i}]$.如果一对机器人相互可以看到,且它们的智商$q_{i}$的差距不大于$K$,那么它们会开始聊天. 为了防止它们吵起来,请计算有多少对机器人可能会聊天. 题解 先膜一下大佬->这里 我们先按视野降序排序,这样一个一个考虑,如果后面的能看到前面,那前面的也肯定能看到后面 这样,就是对于每…
Description 火星上有$n$个机器人排成一行,第$i$个机器人的位置为$x_i$,视野为$r_i​$,智商为$q_i​$.我们认为第$i$个机器人可以看到的位置是$[x_i−r_i,x_i+r_i]$.如果一对机器人相互可以看到,且它们的智商$q_i$的差距不大于$k$,那么它们会开始聊天. 为了防止它们吵起来,请计算有多少对机器人可能会聊天. Input 第一行读入$n,k$. 后面$n$行每行$x_i,r_i,q_i$. Output 一行答案. Sample Input 3 23…
洛谷 Codeforces 简单的CDQ分治题. 由于对话要求互相看见,无法简单地用树套树切掉,考虑CDQ分治. 按视野从大到小排序,这样只要右边能看见左边就可以保证互相看见. 发现\(K\)固定,那么左右按智商排序.位置离散化之后可以\(two\;pointers\)一下,套个树状数组,就做完了. 由于复杂度瓶颈在树状数组,没必要归并,可以直接\(sort\). 复杂度应该是\(O(n\log^2 n)\). #include<bits/stdc++.h> namespace my_std{…
大意: n个机器人, 位置$x_i$, 可以看到$[x_i-r_i,x_i+r_i]$, 智商$q_i$, 求智商差不超过$k$且能互相看到的机器人对数. 这个题挺好的, 关键是要求互相看到这个条件, 直接求的话是个四维数点问题, 但是可以发现按照$r$排序后, $r$小的能看到的一定能互相看到, 所以就是一个简单的三维数点了. #include <iostream> #include <iostream> #include <algorithm> #include &…
传送门 题意: 坐标轴上有\(n\)个机器人,每个机器人带有属性\(x,r,q\),分别表示位置.可视半径以及智商. 现在定义智商相近为两个机器人的智商差的绝对值不超过$K. 现在问有多少对机器人,他们在互相的可视范围内并且智商相近. 思路: 一开始没注意到互相在对面的可视范围内,以为是主席树模板题... 注意到\(K\leq 20\),所以总的有用的智商值为\(40*n\)个. 那么我们可以采用动态开点的方法,对于每个智商值,储存存在的区间的位置,这样可以节约空间. 对于互相在对方可视范围内,…
[CF486E]LIS of Sequence题解 题目链接 题意: 给你一个长度为n的序列a1,a2,...,an,你需要把这n个元素分成三类:1,2,3: 1:所有的最长上升子序列都不包含这个元素 2:有但非所有的最长上升子序列包含这个元素 3:所有的最长上升子序列都包含这个元素 输入格式: 第一行包含一个正整数n,表示序列的长度.第二行包含n个正整数a1,a2,...,an,表示序列中的元素. 输出格式: 一行,包含一个长度为n的.由1,2,3三种数字组成的字符串,第i个数字表示ai所属类…
比赛的时候开G开了3h结果rose说一句那唯一一个AC的是羊的心态就崩了.. 这套题感觉质量挺好然后就back了下 A: AI robots 有三个限制条件:相互能够看见和智商的差.使用主席树,可以维护两个状态,分别是其中一个“看见”和“智商”,这样的做法就无法利用K<=20的条件了. 利用扫描线+线段树,可以解决相互看见的约束(大概是我做过最神的扫描线了)对于一个点,处理出它能够看见的最前和最后点,和它的位置一起当做一条线,最前点加入这个点的位置,最后点删除这个点的影响,点的位置的线相当于一个…
我好菜啊 A 题意: 定义p-二进制数为2^k-p,给出n和p,求用最小个数的p-二进制数来表示n 1<=n<=10^9,-1000<=p<=1000 题解: 猜结论,答案不会很大 n可以表示成kp+s的形式,枚举k,判断(n-kp)是否能用k个2的幂构成 画一下图可以发现,如果可以构成,那么满足(n-kp)的位数<=k<=n-kp (相当于把一颗二叉树上一个点变成两个) 证明答案不会很大: 首先(n-kp)的位数最多为30 ①p>=0 显然当k超过30后,如果不…
Bubble Cup 11 - Finals [Online Mirror, Div. 1] 一场很好玩的题啊! I. Palindrome Pairs 枚举哪种字符出现奇数次. G. AI robots 对\(r\)从大到小排序,然后cdq分治. 注意要对\(q-k,q+k,q\)进行离散化 B. Space Isaac 对原序列做差分,b[i]=a[i]-a[i-1] 如果我们要凑出\(x\),那么集合A中小于\(x\)的数字,要关于\(x/2\)对称,大于\(x\)的数字要关于\((x+m…