上一页 1 ··· 13 14 15 16 17 18 19 20 21 ··· 27 下一页
摘要: 把一条路径拆成到根的四个链(两端点、lca和fa[lca]),然后给dfs序中链的端点做单点修改、区间查询它的子树和再加上它原来的权值就可以了 阅读全文
posted @ 2018-10-01 19:47 Ressed 阅读(176) 评论(0) 推荐(0) 编辑
摘要: 算出来每个数被计算答案的期望次数就可以 考虑这个次数,我们可以把一次合并反过来看,变成把一个数+1然后再复制一个 记f[i][j]为一共n个数时第j个数的期望次数,就可以得到期望的递推公式,最后拿f[N]乘一乘就行了 要注意每一位的期望次数是不一样的..不存在什么中间的次数一样之类的... 阅读全文
posted @ 2018-10-01 19:42 Ressed 阅读(201) 评论(0) 推荐(0) 编辑
摘要: 把询问记下来,然后开个桶差分 阅读全文
posted @ 2018-10-01 19:23 Ressed 阅读(273) 评论(0) 推荐(0) 编辑
摘要: Richard神犇出给nowcoder的题 用单调栈找到每个点它向右和向左的第一个大于或小于它的位置,然后它作为最大值/最小值的区间就要在这个范围里,那么它的贡献就是这个区间长度乘一乘再减一减 注意一下值相等的时候怎么处理 阅读全文
posted @ 2018-09-27 08:19 Ressed 阅读(268) 评论(0) 推荐(0) 编辑
摘要: 反着建边,从T bfs找合法的点,然后再正着bfs一下求最短路就行了 阅读全文
posted @ 2018-09-27 07:56 Ressed 阅读(188) 评论(0) 推荐(0) 编辑
摘要: 先考虑部分分(只有01/只有0~7)做法:枚举每个数,把和他相同的设为1,不同的设为-1,然后这个数作为众数贡献的个数就是区间和>0的个数 推着做,树状数组记前缀和<=x的区间的数量就可以,复杂度$O(8nlogn)$ 如果直接套过来,$O(n^2logn)$肯定是不行的,但可以发现枚举了所有数以后 阅读全文
posted @ 2018-09-27 07:53 Ressed 阅读(361) 评论(0) 推荐(0) 编辑
摘要: 貌似不用做前缀和也能过? 阅读全文
posted @ 2018-09-25 21:54 Ressed 阅读(168) 评论(0) 推荐(0) 编辑
摘要: 有两种情况:一个点到它的父亲的父亲(要算两次)、一个点的子节点之间互相到达 阅读全文
posted @ 2018-09-25 21:52 Ressed 阅读(146) 评论(0) 推荐(0) 编辑
摘要: 1 #include 2 #define pa pair 3 #define CLR(a,x) memset(a,x,sizeof(a)) 4 using namespace std; 5 typedef long long ll; 6 const int maxn=220; 7 8 inline ll rd(){ 9 ll x=0;char c=getchar();... 阅读全文
posted @ 2018-09-25 21:50 Ressed 阅读(197) 评论(0) 推荐(0) 编辑
摘要: 设f[i][j]为到达(i,j)这个位置的最小操作数 就有$f[i][j]=min\{f[i-1][j+Y[i-1]],f[i-1][j-X[i-1]*k]+k\}$ 然后考虑优化一下转移: 对于一系列模x[i-1]相同的高度,它们都可以转移到模x[i-1]相同的高度、而且在它们上边的点,所以只要从 阅读全文
posted @ 2018-09-25 21:49 Ressed 阅读(154) 评论(0) 推荐(0) 编辑
上一页 1 ··· 13 14 15 16 17 18 19 20 21 ··· 27 下一页