06 2019 档案

posted @ 2019-06-29 16:01 wxyww 阅读(226) 评论(1) 推荐(0) 编辑
摘要:题目链接 思路 首先按照音色排个序,顺便离散化一下音高。 用$h[i]$表示第$i$个键的音高,用$w[i]$表示第$i$个键的春希度。 朴素$dp$ $f[i][j]$表示前i个琴键,最高的音高为j时的最大收益。 那么当$j$大于$h[i]$时,就有$f[i][j] = max(f[i 1][j] 阅读全文
posted @ 2019-06-29 14:28 wxyww 阅读(245) 评论(0) 推荐(0) 编辑
摘要:题目链接 思路 非常有趣的一道题。 先考虑如何找出第K远的位置。 因为给出的序列是单调的,所以对于位置$i$的前$K$远位置肯定是一个包含位置$i$的长度为$k+1$的区间。我们用$l$表示这个区间的左端点,$r$表示这个区间的右端点。那么当$i+1$时,$l$和$r$都只会往右挪。而且往右挪的条件 阅读全文
posted @ 2019-06-13 16:40 wxyww 阅读(410) 评论(0) 推荐(0) 编辑
摘要:题目链接 题意 思路 ~~调到哭系列~~ 其实就是kd tree的模板题。用堆维护出距离最小的m个点。然后在$kd tree$上查询。 这一个小地方从上午9点调到下午4点半。。。。。真的快气哭了。。。 代码 cpp //调的心累呀!!!! / @Author: wxyww @Date: 2019 0 阅读全文
posted @ 2019-06-13 09:01 wxyww 阅读(265) 评论(0) 推荐(0) 编辑
摘要:题目链接 思路 $KD tree$模板题 代码 cpp include include include include include include include include using namespace std; typedef long long ll; define ls TR[rt 阅读全文
posted @ 2019-06-13 08:50 wxyww 阅读(253) 评论(0) 推荐(0) 编辑
摘要:题目链接 思路 这个"$K$远“点对一直理解成了距离第$K$大的点对$233$。 要求第$K$远,那么我们只要想办法求出来最远的$K$个点对就可以了。 用一个大小为$2K$(因为每个点对会被统计两次)的小头堆维护距离最大的$K$个点对,然后在$KD tree$上查询最远点对,如果查到的点对之间的距离 阅读全文
posted @ 2019-06-10 10:56 wxyww 阅读(250) 评论(0) 推荐(0) 编辑
摘要:题目链接 思路 先考虑没有额外收益的时候怎么做。 从$S$向第$i$点连一条容量为$A_i$边,表示种在$A$中的收益。 从第$i$个点向$T$连一条容量为$B_i$的边,表示种在$B$中的收益。 然后求出来最小割,用总收益减去即可。 完成之后如下图: 然后考虑如何处理额外收益 对于每一个额外的收益 阅读全文
posted @ 2019-06-09 20:13 wxyww 阅读(171) 评论(0) 推荐(0) 编辑
摘要:题目链接 题意 你要解雇一些员工,其中有一些限制。即若要解雇x则必须解雇y。解雇每个人都会有一定的收益。现在要让这个收益最大。输出解雇的人数和最大收益。 思路 最大收益直接跑最大权闭合子图就好了。 然后考虑怎么统计解雇的人数。 根据最大闭合权子图的连边方式可以看出。割掉$S\rightarrow x 阅读全文
posted @ 2019-06-06 16:57 wxyww 阅读(606) 评论(0) 推荐(0) 编辑
摘要:题目链接 题意 给出一个长度为$n$的序列$a$,问有多少个区间$[l,r]$满足:在区间$[l,r]$内,$[1,r l+1]$的每个整数都恰好出现了一次。 $n \le 3 \times 10 ^ 5$,$a_i \le n$ 思路 可以发现,其实最后的答案一定不会很大。 所以:暴力出奇迹!!! 阅读全文
posted @ 2019-06-06 15:01 wxyww 阅读(630) 评论(4) 推荐(1) 编辑
摘要:题目链接 题意 给出n条线段。m次询问,每次询问给出一个区间$[l,r]$问最少需要多少条线段才能覆盖区间$[l,r]$。 所有坐标$\le 5\times 10^5$。$n,m\le 2\times 10^ 5$ 思路 其实是比较经典的线段覆盖问题。 $f[i][j]$表示从i开始走$2^j$条线 阅读全文
posted @ 2019-06-06 08:09 wxyww 阅读(347) 评论(0) 推荐(0) 编辑
摘要:题目链接 题意 给出一个长度为$n$的序列$a$,要求分为恰好$K$段。第$i$个点的贡献是$a_i \times f(i)$,$f(x)$表示x所属的是第几段。 思路 非常巧妙的一个思路。 先让每个元素都选K遍。然后不断的删除。 具体做法就是,先求一遍前缀和。然后找出前缀和最小的$K 1$个前缀, 阅读全文
posted @ 2019-06-05 22:07 wxyww 阅读(482) 评论(0) 推荐(0) 编辑
摘要:定义 所谓笛卡尔树,就是将给定的$n$个二元组$(key,val)$建成一棵树。使得如果只关注$key$,那么这是一个堆。如果只关注$val$,那么这是一棵二叉搜索树。 有没有很像$treap$。 与$treap$不同的是,笛卡尔树是可以在$O(n)$时间内构建的。而且如果给定key,那么$trea 阅读全文
posted @ 2019-06-05 11:51 wxyww 阅读(195) 评论(0) 推荐(0) 编辑
摘要:题目链接 思路 用$f(i,j)$表示前i个元素,以i为右端点,j为左端点时的答案。 用个"区间修改,单点查询"的线段树维护出第二维。在从左往右枚举i的过程中。将$[lst_i+1,i]$的答案+1.将$[lst_{lst_i}+1,lst_i]$的答案 1。 代码 cpp / @Author: w 阅读全文
posted @ 2019-06-05 08:46 wxyww 阅读(247) 评论(0) 推荐(0) 编辑
摘要:题目链接 题意 给出一棵树,每条边有边权。求$\sum\limits_{i=1}^n{f(i,j)}$,$f(i,j)$表示从i到j路径的异或和。 思路 $g_i$表示从根到$i$的异或和,两点之间的路径异或和就可以用$g_i \otimes g_j$表示。 先然$g_i$可以一次$dfs$求出来。 阅读全文
posted @ 2019-06-01 17:35 wxyww 阅读(164) 评论(0) 推荐(0) 编辑
摘要:题意 t次询问,每次给你一个数n,求在[1,n]内约数个数最多的数的约数个数 $t \le 500,n \le 10^{19}$ 思路 首先可以想到将n质因数分解。即$n= \prod\limits_{i=1}^n{a_i}^{p^i}$ 答案就是$\prod\limits_{i=1}^n{p_i+ 阅读全文

点击右上角即可分享
微信分享提示