摘要:
Codeforces Round #677 (Div. 3) 全题解 好久不更博客之想水一篇博文之每个题只有几句话之 10000以内,如果一个数的全部数位相同,那称为一个特殊的数。给你一个数,你需要输出在它之前(包括它),所有特殊数的数位之和。 题解:前面的数,每四个数位和为10个。算一下就好了。 阅读全文
摘要:
F Path Intersection 题意:求Q次树上路径交。 题解:树链剖分之后,对于每一条路径,暴力的往上跳,并且用线段树维护一下个数,最终我们需要线段树中最大值和个数。复杂度O(nlog^2n),码量巨大。 #include<bits/stdc++.h> using namespace st 阅读全文
摘要:
G techland 题意:给你一颗树,查询连续的一段节点距离某一个节点的最小距离。 题解:考虑树上分块。将连续的节点分成sqrt(n)个块,并且在这些块中,采用树形dp,预处理出距离到每一个节点的最小距离。对于块内的部分O(1)的查询。其他的部分,采用树上dfs序,O(1)查询LCA,暴力搞。(码 阅读全文
摘要:
2018 icpc Regional Dhaka I Triangles 题意:给你三维空间上的两个三角形,问两个三角形中最近的两个点的距离。 分析:首先,我们可以肯定最近的点对中的某一个一定出现在六条边上。而且可以肯定每一条边上的边的点距离另一个三角形是一个单峰函数,所以我们可以三分这个点。 接下 阅读全文
摘要:
CF 1073E Segment Sum 题意:求[L,R]中,不同数位不超过k个数的和。 题解:很简单的数位dp,dp [i] [j] 表示第i位前面的数字中,前导0之外不同数位的状态为j的数字个数和它们的和(用个pair来存)。然后正常数位dp就行了,特殊处理一下前导0(加状态比较好处理)。 # 阅读全文
摘要:
Gym-102040B 题意:对于每一个十进制数,我们定义逆序对数。如果一个数位在另一个数位之后,并且比前面那个数位大,则逆序对数加1。现在求[L,R]中,每一个数字的逆序对数之和。 题解:dp [i] [j] 表示考虑到第i位,并且填数字j时,当前数位和接下来要填写的数位形成的逆序对数是多少。显然 阅读全文
摘要:
Xor 传送门 题意:对于x属于[1,a],y属于[1,b]。|x-y| ⇐ k,x xor y ⇐ w的x,y的对数。 分析:数位dp,首先是这个绝对值条件要去掉,变成两个条件。y-x+k >= 0 && x-y+k>=0。我们现在按位考虑这个两个限制,会发现这个位(把x-y+k当成一个数)上,会 阅读全文
摘要:
部分题解 A 题意:找一个最大的回文后缀。 题解:随便hash一下。 #include<bits/stdc++.h> using namespace std; const int N = 400005; struct hashMap{ typedef unsigned long long ull; 阅读全文
摘要:
ARC104 D 传送门 题意:给你三个数字:N,K,M(N,K<=100)。对于[1,N]内的每一个数x,你需要解决以下问题:对于[1,N]内的每一个数字,你最多取K个,这样组成的数组的平均值是x。 首先我们需要一个转化:对于其中的一个问题,将[1,N]中的数字写成 -x,-(x-1),-(x-2 阅读全文