上一页 1 ··· 9 10 11 12 13
摘要: 暴力做法:枚举每个节点与它距离为二的点, 正解:距离为二的点只有两种情况。 1.某个叶子节点与它父亲的父亲。 2.某一个父亲的两个儿子。 对于1,枚举每个点父亲的父亲。 2.x1x2+x2x3+x1x3=1/2*[(x1+x2+x3)^2-x1^2-x2^2-x3^2] 统计某个父亲节点的儿子点权和 阅读全文
posted @ 2018-09-14 20:01 周栎 阅读(193) 评论(0) 推荐(0) 编辑
摘要: 1. 60pts 用堆来实现维护中位数。 用大跟堆维护小于中位数的数,用小跟堆维护比中位数大的数。 若两堆元素之差大于一,把中位数push进较少元素的堆,把较多元素堆的堆顶作为中位数,pop。 o(n^2log n) #include<bits/stdc++.h> using namespace s 阅读全文
posted @ 2018-09-11 00:28 周栎 阅读(110) 评论(0) 推荐(0) 编辑
摘要: 待完成 1cf E cf1056e,f cf1103 c,d cf809 c,d arc103e 2 uer#8 3 叉分约束 树--一轮 1.dfs序 2.树链的并,剖分(2+3) bzoj 4771 无深度限制 每一种颜色求并 bzoj 3991 3.点分治 4.虚树 5.dsu on tree 阅读全文
posted @ 2018-08-30 22:02 周栎 阅读(137) 评论(0) 推荐(0) 编辑
摘要: 按距离从小到大排序 f[i][j][0或1]表示在i或j还有i-j没有完成 转移 注意边界 比如:dp[0][i],dp[0][c+3]初值应为inf #include<bits/stdc++.h> using namespace std; const int N=1e3+30,inf=1e6; i 阅读全文
posted @ 2018-08-30 20:38 周栎 阅读(346) 评论(0) 推荐(0) 编辑
摘要: CQOI2009 叶子的染色 树里的定义:叶子节点(1-n)没有后继节点。 然后树形DP 初始化 代码: #include<bits/stdc++.h> using namespace std; const int N=1e4+33; #define ll long long const ll in 阅读全文
posted @ 2018-08-29 21:25 周栎 阅读(103) 评论(0) 推荐(0) 编辑
摘要: 因为是最小值的最大值,首先我们想到用二分来查找答案。剩下的就是实现判断mid是否可行的方法。我们用vis[i][j]表示是否某行的i,j是大于等于mid的。当下次出现i,j便说明2行组成一个矩形是可行的。 复杂度;i,j最多的组合是n*(n-1)/2。判断的复杂度近似可以看成n*m.总复杂度为o(n 阅读全文
posted @ 2018-08-29 15:37 周栎 阅读(294) 评论(0) 推荐(0) 编辑
摘要: D w[i]表示1ei;a[i]*w[j]+{数的位数是i的集合}mod k=0 是一种解 az=a[i]*w[j]%k; 用map统计[位数][模为x]的个数; ans+=w[j][(k-az)%k]; 注意a[i]为j位并且az=a[i]; k开int 挂了好多点。 #include<bits/ 阅读全文
posted @ 2018-08-29 10:07 周栎 阅读(155) 评论(0) 推荐(0) 编辑
摘要: BZOJ3687 https://vjudge.net/problem/HYSBZ-3687 注意是所有子集和的异或和。 #include<bits/stdc++.h> using namespace std; int n; bitset<2000007>a; int main(){ cin>>n; 阅读全文
posted @ 2018-08-22 14:46 周栎 阅读(153) 评论(0) 推荐(0) 编辑
上一页 1 ··· 9 10 11 12 13