摘要: 题目链接 题目思路 首先要看清亲密度为下标差写了一年假题 然后显然是要二分亲密度的 如何计算这个小于等于这个亲密度的对数 利用容斥和用总点对数-同色对数 总点对数为$(n-x)x+(1+x-1)(x-1)/2$ 同色对数利用双指针求解 然后知道亲密度$O(n)$扫一遍即可 代码 #include<b 阅读全文
posted @ 2021-02-21 21:05 hunxuewangzi 阅读(62) 评论(0) 推荐(0) 编辑
摘要: 题目链接 题目思路 本以为要用什么前缀表达式啥的 看了下题解,其实只需要维护一个非空表达式前缀可以表示成 a+b的形式。 若后面接了+x 则$a+b=(a+b)+x$ 若后面接了-x 则$a+b=(a+b)+(-x)$ 若后面接了*x 则$a+b=a+bx$ 若后面接了/x 则$a+b=a+bx^$ 阅读全文
posted @ 2021-02-21 15:32 hunxuewangzi 阅读(64) 评论(0) 推荐(0) 编辑
摘要: 题目链接 题目思路 首先要想到一个dp模型 $dp[i][0]$为右端点为i前一个子区间小于等于k的最大贡献 $dp[i][1]$为右端点为i前一个子区间大于k的最大贡献 那么这样利用前缀和可以写出一个$O(n^2)$的dp 暴力dp #include<bits/stdc++.h> #define 阅读全文
posted @ 2021-02-21 10:04 hunxuewangzi 阅读(92) 评论(0) 推荐(0) 编辑
摘要: 题目链接 题目大意 有$n(n \leq 1e5)$个人,$m(m\leq 1e5)$件装备 每件装备可以给1个或2个人,而且每件装备有一个战力值,获得这个装备的人可以获得此战力值 要求每个人只能装备一件装备,每件装备只能分配给一个人。 求总战力值最大 思路 官方题解: 首先我们考虑把 m件装备看作 阅读全文
posted @ 2021-02-21 08:32 hunxuewangzi 阅读(89) 评论(0) 推荐(0) 编辑