关闭
当前搜索:

题目大意一颗点权树,有多少种将树划分成若干条路径的方法,使得每条路径点权和非负?做法不妨设f[i]表示i子树里全部成功覆盖方案数,g[i]表示i子树里除了i全部成功覆盖方案数。 g就是各个子树的f乘积。 f可以枚举lca穿过当前点的一条路径,设为j->k,那么j和k都贡献g,其余挂着的子树贡献f,乘起来即可。 这样太慢了。 考虑简单问题。 如果路径是j->i怎么做呢? 可以尝试对每个子树...
阅读(278) 评论(0)

[arc069f]Flags

题目大意n个变量xix_i,每个变量等于aia_i或bib_i。 选择一种赋值方案,使得min(|xi−xj|)min(|x_i-x_j|)最大。二分答案二分答案后转化为2-sat问题,线段树优化连边即可。 (注意不能够自己连自己的另一半)#include #include #define fo(i,a,b) for(i=a;i<=b;i++) using...
阅读(113) 评论(0)

[arc073f]Many Move

题目大意你有两个整数a和b。 现在n个操作,依次执行,每次给你xi,你选择一个整数y变成xi,代价为|xi-y|。 求做完所有操作的最小代价。做法设f[i]表示做完前i个操作,其中一个整数变成xix_i,另一个变成xi−1x_{i-1}的最小代价。 第一次操作枚举是哪个变成x[1]做两次dp,以a为例,那么f[1]=|a-x[1]|,然后x[0]=b,即为初值。 转移是f[i]=min(f[...
阅读(98) 评论(0)

[arc076f]Exhausted?

前言你们都会hall定理推广版本。 但是我没用hall定理做啊。题目大意一个二分图,X部每个点i连了Y部的[1,Li]和[Ri,m]。 求n-最大匹配。做法考虑到二分图最大匹配等于最小覆盖。 最优方案小我们一定是选择了Y部的一个前缀和一个后缀,剩余不能因此得到覆盖的X部点要选上。 假如我们枚举选了Y部的前缀l,假设Y部选的后缀是r,那么选的点为l+m−r+1+n−∑ni=1[Li<=l]∗[...
阅读(111) 评论(0)

[agc006e]Rotate 3x3

前言结论题。题目大意不想讲。做法不想说。 推荐在网上搜索其他题解或看官方题解。#include #include #include #define fo(i,a,b) for(i=a;i<=b;i++) using namespace std; const int maxn=100000+10; int tree[maxn],a[maxn][3]...
阅读(302) 评论(1)

[agc015e]Mr.Aoki Incubator

前言看错题好久,怨念极深。 主要就是推染红的条件。 将速度排序是关键。 然而本题最重要的是证明区间不包含,然后做法可以很显然的得到。题意数轴上许多黑点,每个点都有一个方向向右的正速度。 当两个点在同一个位置上重合时,若其中一个是红色,另一个也变成红色。 保证没有相同速度或初始坐标。 现问你有多少方法染红一些点,使得无穷久后所有点都被染红。做法观察一个点i染红后,哪些点j会被染红? 1、...
阅读(227) 评论(0)

Sequence

题目大意有两个序列a和b。 每次询问将一个区间a值排名在[x,y]的中找一个b值第k小。做法用主席树将排名的x和y变成具体的值。 接下来可以根据b整体二分,其余部分可以拆区间+扫描线+数据结构完成。#pragma GCC optimize(2) #include #include #define fo(i,a,b) for(i=a;i<=b;i++) usi...
阅读(145) 评论(0)

排序列表

题目大意有若干个区间,C(m)表示所有包含m这个点的区间编号排序后的序列。 求本质不同的非空字典序第k小的序列。做法先离散化,因为本质不同不会超过2n个序列。 接下来顺序扫,并维护每个位置的hash值。 遇到之前出现过的hash值就叉掉。 然后接下来枚举按字典序枚举,每次看看往字典序末尾加入i会有多少种可能。 对于k,如果它不在答案序列中,不能选择它区间所包含的m。 对于k,如果它在答案...
阅读(181) 评论(0)

装箱

题目大意n个箱子,每个都有三个属性(a,b,c),可以任意调换属性顺序。 一段区间的价值定义为任意调换后max(a)*max(b)*max(c)的最小值。 求所有区间价值和。结论把所有箱子的三个属性按降序排列,一定最优。 考虑找到了全局最大值mx,把mx调到第一维,接下来第一维答案一定是mx,而其他箱子也一定会将自己的最大值调到第一维,第二维也同理。瞎做对三维维护单调栈。 维护线段树,位置l...
阅读(148) 评论(0)

果树

题目大意问一棵树上有多少条路径不包含同色点。 一种颜色最多20个点。瞎做对于同色点提取出来两两形成一个约束。 这样约束只有n*20个。 因为最坏情况是每种颜色都出现20次。 那么n/20*20^2=n*20。 接下来变成了owaski的那道A,可以在本博客内搜索。#include #include #include #define fo(...
阅读(139) 评论(0)

Fiend

题目大意满足li<=pi<=ri的排列p,问逆序对是奇数的多还是逆序对是偶数的多或者是否一样多?解法可以构造一个矩阵,ai,li~ri是1,然后就是问它行列式的符号或判断行列式是否为0。 模拟高斯消元,每次消到第i行时,让第i行变成第i列上有1且r最小的,这样可以保证任意时刻1都是一段区间。 可以用可并堆、平衡树或线段树来快速支持合并。#include #include<algo...
阅读(132) 评论(0)

归并排序

题目大意给一个长度为2的次幂的排列做归并排序,在区间长度为2时比较器会变成随机返回值。 多次操作,每次要么交换两个位置,要么询问归并排序后第x个位置等于排序前第y个位置的概率。做法容易发现,如果x#include #include #define fo(i,a,b) for(i=a;i=...
阅读(178) 评论(0)

[JZOJ100019]A

题目大意求一颗树有多少条不同的路径,使得路径长度>1且不存在j!=k满足j是k倍数。瞎做有n log n个限制某两个点不能出现在一条路径中。 可以转化成某个区间的起点不能以某个区间为终点。 然后扫描线用线段树维护。 这个是既包含插入又包含删除的覆盖问题。 因为操作具体对称性所以可以标记可持久化。#include #include #include<cma...
阅读(166) 评论(0)

[LibreOJ β Round]ZQC的手办

题目大意区间对一个数取max。 区间求最小的x个比k小的数。线段树第一个操作很好搞。 第二个操作有个很显然的常数大做法。 实际上可以用堆把这个区间的笛卡尔树按优先级广搜。#include #include #include #define fo(i,a,b) for(i=a;i<=b;i++) using namespace std; con...
阅读(212) 评论(0)

[LibreOJ β Round]ZQC的课堂

题目描述https://www.loj.ac/problem/503题解x和y是可以分开考虑的。 设si表示某维坐标的前缀和。 要求统计多少i满足si*si-1=0且min(si,si-1)<=0。 这样两个限制依然不好统计。 改成用n减去不满足条件的。 1、max(si,si-1)<=0 2、min(si,...
阅读(261) 评论(0)
76条 共6页1 2 3 4 5 ... 下一页 尾页
    个人资料
    • 访问:324657次
    • 积分:11599
    • 等级:
    • 排名:第1515名
    • 原创:814篇
    • 转载:4篇
    • 译文:0篇
    • 评论:201条
    最新评论
    文章分类