2019牛客多校赛第一场 补题 I题】的更多相关文章

I题  Points Division 题意: 给你n个点,每个点有坐标(xi,yi)和属性(ai,bi),将点集划分为两个集合, 任意 A 集合的点 i 和 B 集合点 j, 不允许 xi >= xj 且 yi <= yj. A 集合的点使用权值 ai,B 集合的点使用权值 bi​,求: 思路: 可以用一条自底向上的折线将这些点分为两组,折线左上为A集合,右下B集合,折线上的点也属于B集合 dp[i] 代表 当前点i在折线上时权值和的最大值 那么对于当前点i来说: i点之前,y坐标小于yi的…
#include <bits/stdc++.h> using namespace std; typedef long long ll; struct Point{ ll x, y; Point( ll x=, ll y= ): x(x), y(y){} }; typedef Point Vector; Point p[]; Vector operator -(const Vector a, const Vector b ){ return Vector( a.x-b.x, a.y-b.y );…
2019牛客多校第八场 F题 Flowers 先枚举出三角形内部的点D. 下面所说的旋转没有指明逆时针还是顺时针则是指逆时针旋转. 固定内部点的答案的获取 anti(A)anti(A)anti(A)或者说A‾\overline{A}A表示DA→\overrightarrow{DA}DA旋转180°之后的方向. block(A,B)block(A,B)block(A,B)表示的是DA→\overrightarrow{DA}DA旋转到DB→\overrightarrow{DB}DB的扫过的几何区间.…
目录 求若干个串的公共子串个数相关变形题 对一个串建后缀自动机,另一个串在上面跑同时计数 广义后缀自动机 后缀数组 其他:POJ 3415 求两个串长度至少为k的公共子串数量 @(牛客多校第四场 I题 string) 求若干个串的公共子串个数相关变形题 牛客这题题意大概是求一个长度为\(2e5\)的字符串有多少个不同子串,若\(s==t\)或\(s==rev(t)\)则认为子串\(s,t\)相同.我们知道回文串肯定和他的反串相同. 链接:传送门. 做法1: \(yx\)大佬秒出思路%%,对\(s…
链接:https://ac.nowcoder.com/acm/contest/884/A来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 524288K,其他语言1048576K 64bit IO Format: %lld 题目描述 A new city has just been built. There're nnn interesting places numbered by positive numbers from 111 to nnn. In order…
题目 几乎原题 BZOJ3122题解 分析 先推一波公式,然后除去特殊情况分类讨论,剩下就是形如 $a^i \equiv b(mod \ p)$ 的方程,可以使用BSGS算法. 在标准的BSGS中,内外层循环都是 $\sqrt p$,题目查询 $m$ 次,$m \leq 1000$,$ p \leq 10^9$,这样总时间复杂度为 $O(m \sqrt p)$,勉强能接受.据说使用读入优化和手写哈希还是能过得,可见Cls的代码%%% 仔细想一下,由于BSGS分成两步,其中第一步是建立 $a$ 的…
题目链接:https://ac.nowcoder.com/acm/contest/883/H 题意: 给你偶数个点的坐标,找出一条直线将这n个点分成数量相等的两部分 并在这条直线上取不同的两个点,表示这条直线 思路: 看见这题的第一反应是,先定一个相对这些点无限远的定点 然后取扫一遍,取一个其中一个点,找到一条能将这些点分成m个和m+1个点 最后将斜率微微倾斜,在直线上再取一点即可 最后疯狂WA,不知道是算法问题还是代码问题 听了大佬的讲解,发现自己真的蠢 最后的做法: 将这n个点按x坐标从小到…
H - subsequence 2 题意 要你使用前\(m\)个小写字母构造一个长度为\(n\)的字符串 有\(m*(m-1)/2\)个限制条件: \(c_{1} .c_{2}. len\):表示除去其他非\(c_{1}.c_{2}\)之外的字母剩下的串长度为\(len\) \(s\):除去其他非\(c_{1}.c_{2}\)之外的字母剩下的字符串,长度为\(len\) 需要我们根据这个限制条件构造出原串,如果不存在输出\(-1\) 思路 我们可以发现题目给了两个字母之间的相对位置.比如\(aa…
题目链接:https://ac.nowcoder.com/acm/contest/886/D 题解摘自官方题解 题目大意 有 K 个体积相同的箱子,有 N 个体积相同或相异的物品,现要按照如下策略装箱: 一个一个箱子装,装到不能装了换下一个装. 对于每一个箱子,每次都从剩余物品中找最大的能装进箱子里的物品装进去,直到装不进为止. 求箱子的最小体积. 分析 首先这道题箱子容积和答案没有单调性. 比如:15 5 • 39 39 39 39 39 60 60 60 60 60 100 100 100…
Find the median 题意 刚开始集合为空,有n次操作,每次操作往集合里面插入[L[i],R[i]]的值,问每次操作后中位数是多少 分析 由于n比较大,并且数可以达到1e9,我们无法通过权值线段树来进行操作,那么怎么办呢?题目中还有什么性质?插入的值是一段一段的,那么我们是不是能从这些段中入手?维护这些段,怎么维护呢,如果[1,2][2,5]这两段有一个点重合那该怎么办,此时我们可以用一个常规操作把r加1进行分段,什么意思呢例如上例我们分成[1,2][2,3][3,6]那么我们对[1,…