Loading

随笔分类 -  OI

摘要:一道隐藏很深的水题。。。。。 题目大意 \(N\leq 300\) 题解 很重要的性质是$B_i<A_i$,这保证了$i$不能套在$i$里面。于是我们把所有的$A_i,B_i$放在一起排序,一个$B$点可以和前面任意一个$A$点匹配,我们要求最大匹配的方案数。 考虑遇到一个$B_i$的时候,如果选择 阅读全文
posted @ 2020-05-29 21:31 gz-gary 阅读(267) 评论(0) 推荐(0)
摘要:题目大意 给出一棵树,可以删除其中最多$k$条边,再加上若干条边使得其还是一棵树,问这样的操作能得到多少种不同的树的形态(带编号)。 $n\leq 50, 0\leq k \leq n$ 思路 一种升级版的生成树计数。 设树上的边权值为$1$,不存在的边权值为$x$,则构造矩阵$g$: 若$i≠j$ 阅读全文
posted @ 2020-04-21 22:35 gz-gary 阅读(431) 评论(0) 推荐(0)
摘要:题目大意 给你一个带权无向图,满足图上任意一条边最多属于一个环,有$q$个询问,求$u,v$之间的最短路。 $n,q\leq 10000$ Solution 首先用Tarjan建一棵以$1$为根的搜索树,找出每个环,记录环的总长,将环内每个点$u$连向环内$dfs$序最小的点$v$,边权为$u$到$ 阅读全文
posted @ 2019-12-23 22:00 gz-gary 阅读(260) 评论(0) 推荐(0)
摘要:题目大意:给你一个$n m$的矩阵,矩阵上有一些点是障碍,有$T$次询问,每次给你一个矩形$x1,y1,x2,y2$,你要在这个矩形内找一个最大正方形使得正方形内不包含障碍。 $n,m\leq 1000,T \leq 10^6$ Solution 假设没有给定矩形的限制,设$f[i][j]$表示以$ 阅读全文
posted @ 2019-12-17 17:27 gz-gary 阅读(223) 评论(0) 推荐(0)
摘要:题目大意:有一棵$n$个点的树,你要给每个点赋一个$[1,m]$内的整数权值,使得相邻两个点的权值差至少为$k$,问方案数。 $n,k\leq 100,m\leq 10^9$ Solution 设$f[i][j]$表示$i$为根的子树满足条件,而$i$的权值为$j$的方案数,转移用前缀和优化。 通过 阅读全文
posted @ 2019-12-17 16:02 gz-gary 阅读(147) 评论(0) 推荐(0)
摘要:题目大意 将一个$n m$的01矩阵沿着列切几刀,拆成若干个$n w_i$大小的矩阵,你可以重新任意排列它们来拼成一个新的$n m$的01矩阵,使得矩阵中最大的全0矩形面积最大。 Solution 这题关键在于$n m\leq 10^5$,即矩阵大小不超过$10^5$。一种直觉是平衡规划,即分$n\ 阅读全文
posted @ 2019-12-14 17:00 gz-gary 阅读(249) 评论(0) 推荐(0)
摘要:题目大意 给出一个矩阵的定义: 求它的逆矩阵的各项平方和。 $n\leq 1000000,m \leq 10^9+6$ Solution 手玩$m=0$的情况可以发现逆矩阵的定义是类似的: $j\leq i,(P^{ 1}_n)(i,j)=( 1)^{i+j}(^{i}_{j})$ $j i,(P^ 阅读全文
posted @ 2019-11-04 22:03 gz-gary 阅读(105) 评论(0) 推荐(0)
摘要:题目大意 给出一个$n m$的矩阵和一个整数$k$。设$f(i,j)$表示以$(i,j)$为左上角,边长为$k$的正方形内权值的种类数。 你要求$f(i,j)$的总和和最大值。 $n,m\leq 3000,a_{i,j}\leq100000$ Solution 用扫描线维护$k$列中$n k+1$个 阅读全文
posted @ 2019-11-04 22:02 gz-gary 阅读(148) 评论(0) 推荐(0)
摘要:题目大意 从$(0,0,0)$走到$(n,n,n)$,每一步可以从$(x,y,z)$走到$(x+1,y,z)$或$(x,y+1,z)$或$(x,y,z+1)$,给出$m$个不允许经过的点,求这样走的方案数。 $n\leq 100000,m\leq 5000$ Solution 很经典的题目。 枚举$ 阅读全文
posted @ 2019-11-04 22:01 gz-gary 阅读(137) 评论(0) 推荐(0)
摘要:题目大意 给出一棵树,其中$1$为根。之后每个点向父亲的父亲再连一条边,求得到的图中,每个点走到$1$的期望步数(等概率向相邻点走去)。 保证$i$的父亲$fa_i include include using namespace std; const int N = 2007, P = 998244 阅读全文
posted @ 2019-10-24 17:08 gz-gary 阅读(234) 评论(0) 推荐(0)
摘要:题目大意 给出两个串$S,T$,你可以通过拼接$S$的某个前缀和$T$的某个前缀得到一个新串($S$的前缀在前),求能得到多少种不同的新串。 Solution 若一个串出现了多次,设它可以被表示成$s+t$或$s'+t'$。我们令$t'$比$t$更长,显然$t$是$t'$的一个border。尽管$t 阅读全文
posted @ 2019-10-06 17:27 gz-gary 阅读(409) 评论(0) 推荐(0)
摘要:题目大意 构造一棵$[1,n]$的线段树,有$q$个询问$[x,y]$,每次查询$[x,y]$的所有子区间在线段树上经过的点数之和。 $n,q \leq 500000$ Solution 一开始方向错了。。。。 显然线段树上只有和$[x,y]$有交集的区间才会产生贡献。 设该点代表区间为$[l,r] 阅读全文
posted @ 2019-10-05 17:02 gz-gary 阅读(269) 评论(0) 推荐(0)
摘要:题目大意 给出一个无向图,当边权全部为$1$时满足任意两点间最大流$\leq 2$,现在给每条边赋权,一对点$(s,t)$的贡献等于$maxflow(s,t) p^{(s 1)n+t}$,其中$p$是一个给定的数,求所有点对贡献之和。 Solution 题目描述里隐含着这个无向图是仙人掌。证明很简单 阅读全文
posted @ 2019-10-05 16:52 gz-gary 阅读(333) 评论(0) 推荐(0)
摘要:比较套路的题目。 题目大意 给出一棵$n$个点的树,树以$1$为根,有$m$条向上的路径,每个点有一个覆盖次数限制,你要选尽可能多的路径,使每个点被覆盖的次数都不超过限制。 Solution 首先把路径挂在较深的点,然后$dfs$,用线段树维护一下这个点被覆盖的次数是否超限,若超限显然把上端最浅的路 阅读全文
posted @ 2019-09-28 16:56 gz-gary 阅读(260) 评论(0) 推荐(0)
摘要:题目大意 给出一个有根树,$1$为根,若某个节点的儿子全是叶子,你可以将该节点的儿子全部剪掉,这样的操作可以进行多次。定义这棵树的价值为:将树上所有叶子按照$dfs$序排序后,所有叶子点权之和 相邻两叶子路径上点权最大值。现在你要通过剪枝使得这棵树价值最大。 $n\leq 100000$ 分析 设$ 阅读全文
posted @ 2019-08-14 11:24 gz-gary 阅读(126) 评论(0) 推荐(0)
摘要:题目大意 一个平面直角坐标系上,有$N$个点,标号为$1$到$N$,其中第i个点的坐标为$(x[i],y[i])$。 求满足以下两个条件的点列${p[i]}$的数目(假设${p[i]}$的长度为$M$): 对任意$1 \leq i y[p[j]]$; 对任意$3 \leq i \leq M$,必有$ 阅读全文
posted @ 2019-08-14 11:09 gz-gary 阅读(177) 评论(0) 推荐(0)
摘要:题意 有一个$n n$的矩阵$B$,一个$1 n$的矩阵$C$,你现在要构造一个$1 n$的$0/1$矩阵,令$(A B C) A^T=D$,$D$只有一个元素,你要使得这个元素值最大。 $n\leq 600$ 分析 推一下矩阵乘法的式子就能转换为这样的问题: 有$n$个元素编号为$1 \sim n 阅读全文
posted @ 2019-08-14 10:03 gz-gary 阅读(156) 评论(0) 推荐(0)
摘要:题目大意 给出一个$n$的排列,若$a[i]=i$则$i$是一个固定点,现在你可以选一个区间翻转它,求翻转过后固定点的最大值(只能 选一个区间,翻转一次 )。 分析 对于一次交换$(i,j)$只会有三种情况: $i$不在自己的位置上,交换后复位了。($j$同理) $i$不在自己的位置上,交换后仍不在 阅读全文
posted @ 2019-08-09 16:56 gz-gary 阅读(144) 评论(0) 推荐(0)
摘要:题目大意 给出$n$个二元组$$,要求构造一棵以$key$为关键字的二叉搜索树,并且一条边两端的$key$的$gcd 1$。计$sum[u]$表示$u$子树内$val$之和,求一个构造方案令$\sum sum[u]$最大。 $n\leq 300,key \leq 10^18,val \leq 10^ 阅读全文
posted @ 2019-08-09 16:41 gz-gary 阅读(203) 评论(0) 推荐(0)
摘要:题目大意 在一个$n m$的矩阵上,一个格子$(x,y)$跳一步,将会到达$(x 1,y+1),(x,y+1),(x+1,y+1)$中权值最大的格子(保证没有相同权值)。矩阵是循环的,例如从第$m$列往右边跳会到第$1$列,从第$1$行往上跳会到第$n$行,从第$n$行往下跳会到第$1$行。 一个棋 阅读全文
posted @ 2019-08-05 22:06 gz-gary 阅读(173) 评论(0) 推荐(0)