摘要: 给你一个长度为n(n<=300)的排列,有两种操作,第一种是交换前两个数,第二种是把第一个数放到最后,让你用不超过2n^2次的操作把一个初始为1-n升序的排列变为该排列。 一开始被紫薯蛋疼的翻译给坑了,以为是把输入的排列变成升序,假如是这样的话,我们可以发现,每轮操作可以把任意一个数放到数组的最前面 阅读全文
posted @ 2019-02-11 12:48 jrltx 阅读(189) 评论(0) 推荐(0) 编辑
摘要: 给你n(n为偶数)个字符串,让你找出一个长度最短且字典序尽量小的字符串,使得一半的字符串小于等于该串,一半的字符串大于该串。 紫薯上说这道题有坑,但其实思路对了就没什么坑。 很明显,只要取夹在中间两个字符串间的最小字符串就行了。可以从小到大枚举字符串的长度,如果该长度下存在满足条件的字符串则返回结果 阅读全文
posted @ 2019-02-11 00:46 jrltx 阅读(103) 评论(0) 推荐(0) 编辑
摘要: 如果一个序列中是否存在一段连续子序列中的每个元素在该子序列中都出现了至少两次,那么这个序列是无聊的,反正则不无聊。给你一个长度为n(n<=200000)的序列,判断这个序列是否无聊。 稀里糊涂AC的一道题。 如果一个序列不无聊,那么一定至少存在一个独一无二的元素。如果找到了该元素,那么只需分别判断该 阅读全文
posted @ 2019-02-10 17:59 jrltx 阅读(172) 评论(0) 推荐(0) 编辑
摘要: 紫薯例题+1。 题意:给你一个长度为n(n<=200000)的序列a[n],求删除一个连续子序列后的可能的最长连续上升子序列的长度。 首先对序列进行分段,每一段连续的子序列的元素递增,设L[i]为下标i对应的元素向左能延伸到的最大长度(在同一段内),R[i]为向右能延伸到的最大长度,则问题转化成了对 阅读全文
posted @ 2019-02-10 00:49 jrltx 阅读(172) 评论(0) 推荐(0) 编辑
摘要: 平面上给你一些具有黑或白颜色的点,让你设置一个隔板,使得隔板一侧的黑点加上另一侧的白点数最多。隔板上的点可视作任意一侧。 易知一定存在一个隔板穿过两个点且最优,因此可以先固定以一个点为原点,将其他点中的黑点移到对称的位置,并将所有点按极角排序,然后双指针遍历其他点,利用尺取法维护一个角度不超过180 阅读全文
posted @ 2019-02-09 21:29 jrltx 阅读(159) 评论(0) 推荐(0) 编辑
摘要: 题目链接 紫书例题。 首先附上我第一次bfs+剪枝TLE的版本: 1 #include<bits/stdc++.h> 2 3 using namespace std; 4 typedef long long ll; 5 const int N=24+2,inf=0x3f3f3f3f; 6 const 阅读全文
posted @ 2019-02-09 11:42 jrltx 阅读(248) 评论(0) 推荐(0) 编辑
摘要: 给定一个n*n*n的立方体(中心点为原点O),选择尽量多的点,使得对于任意两点A,B,B不在线段OA上。 可以发现,原问题可转化为三维坐标下的点(x,y,z)中有多少个点的gcd(x,y,z)=1。 这道题我一开始想用欧拉函数做,但我发现需要求出1-n中与每个整数x互质的数的个数,于是试图修改一下欧 阅读全文
posted @ 2019-02-08 19:12 jrltx 阅读(215) 评论(0) 推荐(1) 编辑
摘要: 给定$n,k$$(1\leqslant n,k\leqslant 10^9)$,计算$\sum\limits _{i=1}^nk\: mod\:i$ 通过观察易发现$k\%i=k-\left \lfloor \frac{k}{i} \right \rfloor*i$,因此我们考虑把$\left \l 阅读全文
posted @ 2019-02-08 14:54 jrltx 阅读(128) 评论(0) 推荐(0) 编辑
摘要: 给出一组正整数$x,n,r$,使得$r^2\equiv x(mod\: n)$,求出所有满足该等式的$r$。 假设有另一个解$r'$满足条件,则有$r^2-r'^2=kn$ 因式分解,得$(r+r')(r-r')=kn$ 将$n$分解成$a*b$,则有$\left\{\begin{matrix}r+ 阅读全文
posted @ 2019-02-07 15:37 jrltx 阅读(230) 评论(0) 推荐(0) 编辑
摘要: 给出一个长度不超过500的环状排列,每次操作可以交换任意两个数,求把这个排列变成有序的环状排列所需的最小操作次数。 首先把环状排列的起点固定使其成为链状排列a,枚举排好序时的状态b(一种有2n种可能),则b可以看成是原状态a的一个置换,把a变为b所需的最小交换次数即为a的长度n减去置换循环节的数量。 阅读全文
posted @ 2019-02-06 20:49 jrltx 阅读(329) 评论(0) 推荐(0) 编辑