随笔分类 - 基础算法---贪心
摘要:[JOISC2017]门票安排 题面 loj 题解 首先考虑$c[i]=1$的情况,首先默认所有$l\leq r$,而且一开始所有人选择的均为$[l,r]$,然后我们考虑把一些区间反转过来。 然后有一条比较显然的性质,就是对于两个不交的区间,在最优解中一定不会同时把他们两个反转过来,否则只有可能变多
阅读全文
摘要:CSP2019题解 格雷码 按照生成的规则模拟一下即可。 "代码" 括号树 看到括号匹配首先想到用栈,然后又在树上就可以想到可追溯化栈。 令$a_i=1$表示$i$号节点上的括号为 ,否则为 , 记栈为$stk$,其中元素个数为$top$。 设$f_i$表示加上节点$i$所对应的括号所增加的贡献,$
阅读全文
摘要:【CSP2019】树上的数 题面 "洛谷" 题解 我们设每个点上的编号分别为$a_1,a_2...a_n$。 10pts 。。。 菊花 假设现在菊花中心编号是$rt$,设你依次拆边$(p_1,rt),(p_2,rt)...(p_{n 1},rt)$,那么最后你会发现$a_{rt}$到了点$p_1$,
阅读全文
摘要:【LG4437】[HNOI/AHOI2018]排列 题面 "洛谷" 题解 题面里这个毒瘤的东西我们转化一下: 对于$\forall k,j$,若$p_k=a_{p_j}$,则$kW_{ba}$则$\frac{W_a}{m_1} include include include include incl
阅读全文
摘要:【CF573E】Bear and Bowling 题面 "洛谷" 题解 首先有一个贪心的结论: 我们一次加入每个数,对于$\forall i$,位置$i$的贡献为$V_i = k_i\times a_i+b_i$,其中$k_i$为位置$i$之前被选的数的个数,$b_i$为$i$之后被选的数的和。 那
阅读全文
摘要:【ARC098F】Donation 题面 "atcoder" 题意: 给定一张$n$个点,$m$条边的无向图。这张图的每个点有两个权值 $a_i,b_i$。 你将会从这张图中选出一个点作为起点,随后开始遍历这张图。 你能到达一个节点 $i$当且仅当你的手上有至少$a_i$元钱。当你到达一个节点$i$
阅读全文
摘要:【CF1042F】Leaf Sets 题面 "洛谷" 题解 对于一个根节点$x$,考虑其子树内的所有$lca$为它的叶子节点到它的距离$d_1K$,我们可以将$i$之前的所有叶子节点合并成一个大点,并以深度$d_i$向上合并,再将$d_{i+1}...d_m$向上合并即可。 这样子用数据结构维护复杂
阅读全文
摘要:题面 "洛谷" 题解 首先我们有个非常显然的思路, 就是直接拓扑排序,用小根堆代替队列再按顺序输出,但是很显然是错的, 因为这只保证了字典序最小,而无法保证答案最优,$,$就是一个例子。 可以发现,让编号大的尽量在后面被选答案一定最优,所以在反图上大根堆+拓扑排序在逆序输出即可。 代码 代码是以前的
阅读全文
摘要:题面 "洛谷" 题解 代码 cpp include include include include include include using namespace std; inline int gi() { register int data = 0, w = 1; register char c
阅读全文
摘要:【CF527C】Glass Carving 题面 "洛谷" 题解 因为横着切与纵切无关 所以开$set$维护横着的最大值和纵着的最大值即可 cpp include include include include include include include using namespace std;
阅读全文
摘要:【BZOJ1052】[HAOI2007]覆盖问题 题面 "bzoj" "洛谷" 题解 二分答案是显然的。 算一下包含所有的点的最小矩形的范围$(x1,y1)$$(x2,y2)$ 贪心思考一下肯定是把塑料薄膜其中一个角放在此矩形上的 然后$dfs$判一下即可
阅读全文
摘要:【BZOJ1050】[HAOI2006]旅行 题面 "bzoj" "洛谷" 题解 先将所有边从小往大排序 枚举钦定一条最小边 再枚举依次枚举最大边,如果两个点联通了就$break$统计答案即可 代码
阅读全文
摘要:【BZOJ1044】[HAOI2008]木棍分割 题面 "bzoj" "洛谷" 题解 第一问显然可以二分出来的。 第二问: 设$dp[i][j]$表示前$i$个,切了$j$组的方案数 发现每次转移都是从前面一个区间过来的 直接前缀和优化就好了 代码 cpp include include inclu
阅读全文
摘要:【LG5022】[NOIP2018]旅行 题面 "洛谷" 题解 首先考虑一棵树的部分分怎么打 直接从根节点开始$dfs$,依次选择编号最小的儿子即可 而此题是一个基环树 怎么办呢? 可以断掉环上的一条边,这样就变为一棵树了 再用上面的方法做即可 $tips$ $:$ 断环上的边,其实可以直接用$ta
阅读全文
摘要:【LG5019】[NOIP2018]道路铺设 题面 "洛谷" 题解 $NOIP$ 抄 $NOIP$差评 设当前做到了位置$i$ 且$h_i$ $ $ $h_i$$_+$$_1$ $=$ $x$ 若$x 0$将$x$加入贡献即可
阅读全文