![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
经典
文章平均质量分 70
nKessi
这个作者很懒,什么都没留下…
展开
-
博客搬迁通知
其实上个月就搬了,只不过一直没发)))欢迎大家来到我的新博客 link原创 2021-08-17 23:14:21 · 172 阅读 · 1 评论 -
七选五 排列组合+容斥/错排
好题,或许是因为我太菜了题面分析法一:容斥不难想到用排列组合,问题就转化为:从 kkk 个空中选 xxx 个空,使它们全部填匹配的数字,而剩下的 k−xk-xk−x 个空全都不匹配。即 ans=C(x,k)×...ans=C(x,k)\times...ans=C(x,k)×...难点就在后面那里,怎么求出 k−xk-xk−x 个空全都不匹配的方案数。考虑 A(k−x,n−x)A(k-x,n-x)A(k−x,n−x) 为随便向这里面填数的方案数,显然这里面会有一些数恰巧匹配,所以我们需.原创 2021-05-29 23:54:00 · 4053 阅读 · 2 评论 -
「NOI2010」超级钢琴
linkRMQ练手题,只要不把题目读错就是道水题。因为是连续的,不妨考虑前缀和。注意这里超级和弦不同值它们的位置不同(不是值)。即求 max(∑pre[r]−pre[l−1])max({\sum pre[r]-pre[l-1]})max(∑pre[r]−pre[l−1])。把所有的数放进优先队列里显然是不行的。套路,考虑将所有的左端点放进优先队列里面,则为一个五元组 (i,l,r,v,num)(i,l,r,v,num)(i,l,r,v,num),vvv 表示 max(pre[l→r]−pre[i原创 2021-05-12 14:10:41 · 208 阅读 · 0 评论 -
CF10E Greedy Change
link其实这种题涉及到很多的证明,大胆猜想不要怕错先想想我们要干什么,肯定是使真实值比贪心值小啊。考虑什么时候真实值比贪心值小,不妨观察一下样例。(方便理解)trick:对于一个数 a[L]a[L]a[L],找到一个离 a[L]a[L]a[L] 较近的值,使贪心算法后要用更多零碎的值(这显然对吧)。考虑具体怎么实现,对于一个区间 (l,r](l,r](l,r],只取里面的数,使得总和为 X(X略大于a[l])X(X略大于a[l])X(X略大于a[l]),使取完 a[l]a[l]a[l] 后,需要原创 2021-05-11 19:49:56 · 121 阅读 · 0 评论 -
「THUPC 2021 初赛」区间矩阵乘法
linkans=∑i∑j∑ka[p1+d∗i+j]×a[p2+d∗j+k](0≤i,j,k<d)ans=\sum_i \sum_j \sum_k a[p1+d*i+j]\times a[p2+d*j+k] (0\le i,j,k<d)ans=∑i∑j∑ka[p1+d∗i+j]×a[p2+d∗j+k](0≤i,j,k<d)因为这个 kkk 的加 111 只会导致每次后面那个数的下标加 111,考虑前缀和。令 pre[i]=∑a[k](k<=i)pre[i]=\sum a[k原创 2021-05-11 13:42:07 · 433 阅读 · 2 评论 -
分组 题解
题面样例6 12 81 22 33 43 23 14 14 51 56 55 63 66 33分析可以说是一个套路/思维模式吧不难想到 O(n3/k)\mathcal{O}(n^3/k)O(n3/k) (kkk 为常数)的暴力,二分优化一下 O(n2log2(n))\mathcal{O}(n^2log_2(n))O(n2log2(n))。考虑时间复杂度为什么会这么高,发现是二分时进行了太多冗余的操作。考虑缩短二分上下界。不妨设现在要取的边的数量为 ttt,原创 2021-04-29 13:37:53 · 632 阅读 · 0 评论 -
「BZOJ3727 PA2014」Final Zadanie 思维
题面分析不妨看看,b[fa[x]]−b[x]b[fa[x]]-b[x]b[fa[x]]−b[x] 等于什么,手算一下,发现是 xxx 子树的总人数 - 不为 xxx 子树成员的总人数。(这个性质还是很容易发现的。)然后我想的是(如果你只想看正解,后四排可跳过。)令 c[x]=b[fa[x]]−b[x]c[x]=b[fa[x]]-b[x]c[x]=b[fa[x]]−b[x]。令 xxx 为现在的结点,sonsonson 为其儿子,upupup 为它上面的一堆元素。则 ∑c[son]=−(sizes原创 2021-03-09 20:14:59 · 128 阅读 · 2 评论 -
最近点对分治算法
问题对于平面上给定的 NNN 个点,给出所有点的坐标,即输入是平面上的 NNN 个点,输出是 NNN 点中具有最短距离的两点。方法法一:暴力,时间复杂度 O(n2)O(n^2)O(n2)。法二:分支,时间复杂度 O(nlog(n))O(nlog(n))O(nlog(n))。当然,此博客讲法二。分析对于一个点我们可以将他们按 yyy 坐标的升序排序(当然可以反过来),取中间那个点的 yyy 坐标设为 midymidymidy 作为中间轴,分半,如图。对于直线的左右两边,都可以用分治,分别求出最原创 2020-11-12 12:41:37 · 691 阅读 · 0 评论