"Link" 如果没有总人数的限制的话,两个班的人数分别为$R=\min(r_i),L=\max(l_i)$是最优的。 如果人数超限了就减少$L$,如果人数不够就增加$R$。 然后就是个简单的二分图染色判定问题了。 ...
分类:
其他好文 时间:
2020-01-27 17:29:04
阅读次数:
64
题目让我们维护一个连通无向图,边有边权,支持加边删边和询问从$x$到$y$的异或最短路。 考虑到有删边这样的撤销操作,那么用线段树分治来实现,用线段树来维护询问的时间轴。 将每一条边的出现时间段标记到线段树上,表示在这一段询问中这条边存在。 异或最短路的处理方法与 "最大XOR和路径" 类似,给线段 ...
分类:
其他好文 时间:
2020-01-27 14:05:55
阅读次数:
69
[APIO2012]派遣 枚举所有忍者在哪棵子树内, 答案即为本子树内最多派遣的忍者数乘上子树根在原树中祖先最强的领导力, dfs用可并堆合并两棵子树即可, 这道题用不着用并查集维护连通性 ...
//摆动序列 #include<stdio.h> int k,num; int data[22],book[22]; void dfs(int t){ if(t>1){ if(t==2) num++; else{ int flag = 1; for(int i=t-1;i>=2;i--){ //条件 ...
分类:
编程语言 时间:
2020-01-27 00:22:28
阅读次数:
90
用线段树处理颜色段数 记录区间内的颜色段数,区间右端点的颜色,区间右端点的颜色. 树链剖分 先是定义存图 然后是每个点的深度,大小,重儿子,父亲. 然后是每个点所在的重链的顶点的编号,dfs顺序和点编号的映射,tot记录顺序的编号. 第一次dfs,确定点之间的父子关系,大小,深度,重儿子: 第二次d ...
分类:
其他好文 时间:
2020-01-26 23:52:54
阅读次数:
74
#include <bits/stdc++.h> #include <stdio.h> #include <stdlib.h> #include <queue> using namespace std; const int maxn = 100010; struct node{ double dat ...
分类:
其他好文 时间:
2020-01-26 22:04:59
阅读次数:
96
ybt1317 组合输出 dfs(深搜)例题 【题目描述】 排列与组合是常用的数学方法,其中组合就是从n个元素中抽出r个元素(不分顺序且r≤n),我们可以简单地将n个元素理解为自然数1,2,…,n,从中任取r个数。 现要求你用递归的方法输出所有组合。 例如n=5,r=3,所有组合为: 【输入】 一行 ...
分类:
其他好文 时间:
2020-01-26 17:46:39
阅读次数:
78
题:https://ac.nowcoder.com/acm/contest/4010/E?&headNav=acm 分析:dsu。贪心方法:考虑插入一个值x,对总体贡献,若查找在序列中左边有值 l ,则+加上(x-l)2,若右边有值r,则加上(r-x)2,若俩边都有值,则要减去插入失去的(r-l)2 ...
分类:
其他好文 时间:
2020-01-26 17:17:05
阅读次数:
71
构造边权,从0开始给边赋值,初始选取一条边权为0,每次赋值的贡献为这一条链两侧的结点(包含链的端点)个数之积,下一次赋值以当前链其一端点续一条边,边权为上次赋的值+1。先DFS找到点的组合这条链两侧结点的个数(包含链的端点),然后枚举端点进行DP。 1 #define HAVE_STRUCT_TIM ...
分类:
其他好文 时间:
2020-01-25 23:38:40
阅读次数:
177
"C题地址:大小接近的点对" 分析题目: 方法一: 在dfs序上,树状数组维护每个数出现的次数;因为在dfs序上根比它的子孙先遍历到(遍历到根时,还没加入遍历孩子) 题目要统计 u是v的祖先时,dfs序就保证了,"在遍历到的结点x是根,而接下来遍历的都是它的子孙", 递归思想,叶节点先计算完,再向父 ...
分类:
编程语言 时间:
2020-01-25 18:19:37
阅读次数:
90