• 2024-05-30P2215 [HAOI2007] 上升序列题解
    题目大意对于一个集合$S$,对于$S$中长度为$m$的子序列$P$,在集合$P$中如果$P_1<P_2<...<P_m$那么我们称$P$为$S$的一个上升序列。如果有多个$P$满足条件我们就输出最小的那个,如果没有完成条件的$P$则输出Impossible。思路对于一个含有$
  • 2024-03-20[HAOI2007][洛谷P2218]覆盖问题
    看到这道题,思考一下后发现要用二分答案。所以为什么要用二分?因为标签有二分还在二分专题里因为对于\(ans\)来说,如果\(ans\)不行,那么\(ans-1\)也一定不行;也就是说,答案满足单调性,所以可以二分;也是因为暴力明显过不了那么对于平面上的一些点来说,如果我们用一个最小的矩形
  • 2024-02-21[BZOJ1047][HAOI2007][AcWing1091]理想的正方形(单调队列)
    此题的数据相当大,暴力的显然过不了,即使是O(abn)的算法也会超时,所以只能考虑O(ablogn)或O(ab)的算法。50分暴力#include<bits/stdc++.h>usingnamespacestd;intn,a,b,m[1001][1001];intdx(intx,inty){ intmaxn=0,minn=0x7fffffff; for(inti=x;i<=x+n-1;++i){ for(in
  • 2024-01-17P2216 [HAOI2007] 理想的正方形 题解
    题目链接:理想的正方形比较明显的,我们可以用二维ST表解决,具体的二维ST表的实现,只需要知道一点:对于\(st[i][j][t]=max(i\simi+2^t,j\simj+2^t)\),表示的是如图所示的大正方形范围内的最值,它可以拆成从四个小正方形的左端点走\(2^{t-1}\)长的小正方形组成,预处理完直接查
  • 2023-09-29P2216 [HAOI2007] 理想的正方形 题解
    Description给定\(n\timesm\)的矩阵,找大小为\(k\timesk\)的子矩阵\(a\),使得子矩阵\(\max\{a\}-\min\{a\}\)最小。SolutionSolution1枚举所有\(k\timesk\)的子矩阵,然后枚举最大值和最小值,时间复杂度\(O(n^4)\),期望得分\(20\)分。Solution2求最大值和最小
  • 2023-09-06P2215 [HAOI2007] 上升序列
    考虑一个长度为\(L\)的最长上升子序列\(P\),以它的第\(i\)个元素\(a_{x_i}\)开头的最长上升子序列长度至少为\(L-i+1\)。反之,若一个数满足以其开头的最长上升子序列长度至少为\(L-i+1\)则这个数必定可以作为\(P\)的第\(i\)个元素。所以我们可以先倒着跑一遍最长下降
  • 2023-09-02P1463 [POI2001] [HAOI2007] 反素数 题解
    P1463[POI2001][HAOI2007]反素数题解可以发现,最大的不超过\(n\)的反素数就是\(1\simn\)中因数最多的数字。证明:设\(x,x\in[1,n]\)为\(1\simn\)中因数最多的数字,则\(x<y\len\)都不会成为答案,因为存在\(x<y\)因数比\(y\)多,同时也不会存在\(y'<x\)