09 2023 档案

摘要:luogu HDU 最近在复习数位dp 数位dp,就是在一些计数问题的时候按照一位一位的顺序依次计算,通常可以采用记忆化搜索的方式 这两道题就是很典型的数位dp 数位dp通常要记录是不是顶着上限,有没有前导零,到了哪一位以及一些特殊的条件要求。 数位dp通常要把某个区间的问题转变成两个区间的差来方便 阅读全文
posted @ 2023-09-28 09:15 Simex 阅读(12) 评论(0) 推荐(0) 编辑
摘要:Link 这个题有一个很特殊的点,就是最大值不会超过28,可以想一下最多可以合并多少次。 那么常规的区间dp是不能使用的,就要采用特殊的形式, 因为很难的确定应该怎么转移,那么就换一种思路,转移的对象变成另外一个端点。 dpi,j 表示i在左边,达到j的话的右端点位置 阅读全文
posted @ 2023-09-27 16:43 Simex 阅读(11) 评论(0) 推荐(0) 编辑
摘要:Link 首先我们想这样的问题,为什么强调是2x 呢?我们记平均值是 avg,然后可以注意到,应该有一下式子被满足 ai2xi+2yi=avg,移项,可以得到aiavg=2yi2xi,而这个式子中xi和\(y_i\ 阅读全文
posted @ 2023-09-25 19:52 Simex 阅读(11) 评论(0) 推荐(0) 编辑
摘要:Link 首先想一下,如果又一列的 MEXn 会有什么样的要求?需要这一样有 0 n1 的所有数字并且没有n 当我们知道这一点以后问题就很好解决了. 我们应该构造数列的时候,满足第一行的MEX0 ,第 i 行的 MEX 为\ 阅读全文
posted @ 2023-09-20 15:50 Simex 阅读(20) 评论(0) 推荐(0) 编辑
摘要:Link 首先这个题目的限制卡的很死,最好是O(n)解决,其次当看到异或的时候,就可以考虑按照二进制位进行计算。 对于这个题,我们定义dpi表示以ai为最右端的子区间的答案的和 那么首先可以想到,贡献给这个答案的有两个部分,包括ai的和不包括的,其中不包括ai 阅读全文
posted @ 2023-09-18 20:58 Simex 阅读(112) 评论(0) 推荐(0) 编辑
摘要:Link 简单版本的结论还是很容易猜到的。 首先很容易想到的第一步就是尽可能地不覆盖地取尽可能多地区间,最后剩下了一小块。 然后在接着原来的指针一个一个地往右问,直到不能问了为止。 为什么这样是正确的呢?首先,在这样一步一步地往右查询的过程中,我们会发现总是前$k-1个数加上后面的一个数。 然后题面 阅读全文
posted @ 2023-09-18 19:54 Simex 阅读(22) 评论(0) 推荐(0) 编辑
摘要:事实上我们可以发现,如果bi=x最后,那么我们可以连一条边,从ix 这样我们就得到了一个有向图,在这张有向图呢,可以证明的是 如果k=1,那么必须全部都是自环。 若不成立,则必须每个环的大小恰好为k 这样就可以解决了。 #include<cstdio> # 阅读全文
posted @ 2023-09-18 09:47 Simex 阅读(17) 评论(0) 推荐(0) 编辑
摘要:LLink 显然的,答案就是CnmDnm #include<cstdio> #include<iostream> #include<cstring> #include<algorithm> #include<cmath> #include<queue> #include<sta 阅读全文
posted @ 2023-09-17 16:50 Simex 阅读(4) 评论(0) 推荐(0) 编辑
摘要:LLink 本代码没有高精。 首先很容易想到的是,0,1之间互相并不干扰,所以说我们只要分开算0和1的方案数乘起来就可以了。 那么怎么算方案数呢? 首先可以想到的一点就是,如果我们确定了要放a个1的话,只要采用隔板法就可以确定了方案书。 有的可以没有怎么办?先给每一个隔间都放上一个球,答案就 阅读全文
posted @ 2023-09-16 22:07 Simex 阅读(14) 评论(0) 推荐(0) 编辑
摘要:Link 首先很容易想到地一点就是平行的直线可以划分为一组,他们的每一条线是“相同的”,这样我们第一件事情就是计算可以有多少划分方式。 然后该怎样计算最后每一种情况是多少个交点呢? 我们考虑一下,每一条直线都会和不平行的直线产生交点,这样就可以计算每一条直线地贡献了。 \(\frac{n^2-\su 阅读全文
posted @ 2023-09-15 23:20 Simex 阅读(7) 评论(0) 推荐(0) 编辑
摘要:link 首先我们要明白,floyed的本质上是一个dp,那么显然我们要先跑一边floyed,然后进行更新 当我们更新的两个点之间的距离的时候,显然我们改变的是和它们有关的距离,所以只要更新这两个边就可以了. #include<cstdio> #include<iostream> #include< 阅读全文
posted @ 2023-09-14 21:09 Simex 阅读(34) 评论(0) 推荐(0) 编辑
摘要:Link A Two Vessels 十分甚至九分地简单 #include<bits/stdc++.h> using namespace std; int t; int a,b,c; int main(){ scanf("%d",&t); while(t--){ scanf("%d%d%d",&a, 阅读全文
posted @ 2023-09-09 11:00 Simex 阅读(3) 评论(0) 推荐(0) 编辑

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