随笔分类 - 基础算法——贪心
摘要:E 考虑一个人 $(a_i,b_i)$ 满足什么条件会自闭。设比其能力值低的人的数量为 $p$,现在已经有 $l$ 个能力值比其低的人退出,$r$ 个能力值不比其低的人退出,那么 TA 在下一场考试中不自闭需要满足不等式 $(p l)a_i \geq n r l 1$,即 $l(a_i 1) r \
阅读全文
摘要:先随便想一个贪心策略。 博主的想法类似匈牙利:以任意顺序枚举一个非 W 团子 $A$,从 $A$ 团子开始枚举八个方向,如果某个方向上的团子是 W 且没被用过,则考虑再往这个方向上走一步的团子 $B$ 是否是非 W 的、和当前团子不同的团子。如果不同则尝试把 $AB$ 串起来,如果 $B$ 没有和别
阅读全文
摘要:"传送门" 最小值最大考虑二分答案,不难发现当最小值$mid$确定之后,原点到所有直线的距离一定都是$mid$时才是最优的,也就是说这些直线一定都是$x^2+y^2=mid^2$的切线。 接下来考虑一个点会被哪些切线所保护。作出这个点到圆的公切线,得到两个切点,那么在这两个切点之间的优弧上选择一个点
阅读全文
摘要:"传送门" ~~题解搬运工++~~ 先证明一个贪心做法的正确性:做以下操作若干次,每一次考虑选择没有被选到答案序列中的数加入到答案序列中对答案的贡献,设第$i$个位置的贡献为$V_i$,如果最大的贡献小于0则退出,否则选择其中贡献最大的加入答案序列中。 首先一个引理:在上述贪心策略下,如果$a_i$
阅读全文
摘要:"传送门" 首先显然的是可以一开始先染好再做、每个点只会被染一次、最后只剩下两种颜色。 接下来是结论时间:序列可以反转的充要条件是除了首尾的极大颜色连通块以外其他极大颜色连通块长度为偶数。 证明充分性:考虑归纳。 如果序列中有$3$个极大颜色连通块且中间的连通块长度为偶数,那么先将两端的颜色块折成$
阅读全文
摘要:"传送门" 先二分一个最大速度$v$。 分析移动的性质。很显然的事情是在火焰两边的所有人都会往火焰的方向以最快的速度运动,这样可以使当前位置更早获得火焰,同时当前拥有火焰的若干个人为了传递火焰自然也会以最快的速度移动。 接下来考虑某个没有火的人碰上了有火的人之后决策如何。假设有火的人$A$碰上了无火
阅读全文
摘要:Contest Page A sol 每次选最小的,然后把它的所有倍数都删掉。 #include<bits/stdc++.h> using namespace std; int read(){ int a = 0; char c = getchar(); bool f = 0; while(!isd
阅读全文
摘要:搞学科十分舒适 一双木棋 搜索,在搜索的过程中使用哈希记录重复的状态,每一次枚举合法的放置位置往下递归,取当前所有可行状态中的最优解即可。 include using namespace std; int read(){int a; cin a; return a;} namespace flow{
阅读全文
摘要:"Contest page" A Tag:贪心 猜想段的长度只会有$1$和$2$(感性理解,应该可以反证……),然后就可以DP/贪心了 B Tag:贪心、组合 考虑如何构造合法方案。从右往左考虑球,因为当前球的位置相比于其他未考虑的球靠右,所以它要尽可能产生负贡献(成为三元组的$a$),否则尽可能产
阅读全文
摘要:"传送门" 看到要求“字典序最小”的方案,一个很直观的想法是按位贪心,那么我们需要check的就是当某一个数放在了第一个序列之后是否还存在方案。 假设当前两个序列的最大值和前缀最值数量分别为$Mx_1 , Mx_2 , cnt_1 , cnt_2$,那么我们要求在剩下的数列中选出两个序列$\{a\}
阅读全文
摘要:没得传送门 考虑当$Atk$增大时,$Def$一定越来越没用,因为回合数在变少。所以考虑从小到大枚举$Atk$然后双指针计算。 设$f_i(x)$表示在$Atk = i$时,$Def$从$x 1$到$x$时可以减少的血量的数量,易知$f_i(x) \leq f_i(x 1) , f_i(x) \le
阅读全文
摘要:"整数" (线段树) 不难想到按位处理,位数比较多考虑使用动态开点线段树维护大数,那么复杂度是$O(nlog^2n)$的,不够优秀。 但注意到我们需要支持的是二进制下的加减法,而在二进制下我们可以使用int压位来节约时空,于是使用unsigned int压32位,再用线段树维护。这样每一次加减都只会
阅读全文
摘要:"程序自动分析" (并查集) NOI出这种题我还有什么好说的呢…… 拆点并查集即可。 "代码" "软件包管理器" (树链剖分、线段树) 一个支持区间赋值和区间和的线段树+树链剖分即可 "代码" "寿司晚宴" (数论、状压DP) 数论题$n \leq 500$肯定是什么暴力算法…… 注意到每一个数$
阅读全文
摘要:陆陆续续做完了…… "与或和" (单调栈) 这是一道一眼题…… 看到位运算,按位考虑贡献。对于每一位,将矩阵中的元素变为“当前元素的这一位是否为$1$”,那么原矩阵变为$01$矩阵。在$01$矩阵中能够对$AND$产生贡献的是全$1$的矩阵,能够对$OR$产生贡献的是存在$1$的矩阵,那么我们需要求
阅读全文
摘要:"异或粽子" (可持久化Trie、堆) 超级钢琴+可持久化Trie???~~HNOI D1T1怎么不出这种送分题啊~~ "代码" "字符串问题" (SAM、记搜) 一切字符串问题用SAM就完事了 把原串reverse,这样“某个$A$串是前面的$A$串支配的$B$串的前缀”的条件变成了后缀。而以某个
阅读全文
摘要:代码比较长所以直接去LOJ看吧~ "鱼" (计算几何、向量) 比较套路的内容:枚举$D$,对于其他所有点按照$D$极角排序,按照极角序枚举$A$,这样垂直于$AD$的线也会以极角序旋转,可以使用双指针+map的方式维护合法的$EF$点对数量。 相对麻烦的是如何对于每个$AD$找到合法的$BC$的数量
阅读全文
摘要:这场题目设置有点问题啊,难度:Div.2 A Div.2 B Div.2 D Div.2 C Div.2 D Div.1 D Div.1 E Div.1 F简直有毒 只AC 4题似乎就是1000+名了 这种考验手速的时刻Itst就比较擅长了,然后就红名+拿衣服了…… "A. Ilya and a C
阅读全文
摘要:"传送门" 考虑一个贪心:对于所有人群按照收益从大到小排序,对于每一个人群找到当前能够选择的代价最小的房间成为一组可行订单(如果没有就不可行),最后将这些订单按照收益排序,选其中正的前$o$大即可。找代价最小的房间可以使用并查集,因为有偏序关系所以可以直接二分。 考虑其正确性:对于两个人群$i,j(
阅读全文
摘要:"传送门" 思路很妙…… 有个前提条件:血量无限,这样话肯定先打会回血的怪,再打会掉血的怪 对于会回血的怪,按照受到伤害的顺序从小往大打 对于会掉血的怪似乎并不是很好搞,考虑:将每一时刻的血量函数画出来,然后反过来看(从右往左看这个函数),就相当于回血量和掉血量互换,会掉血的怪会变成会回血的怪。因为
阅读全文
摘要:最近省队前联考被杭二成七南外什么的吊锤得布星,拿一场Div. 2恢复信心 然后Div.2 Rk3、Div. 1+Div. 2 Rk9,rating大涨200引起舒适 现在的Div. 2都怎么了,最难题难度都快接近3K了…… "A. Detective Book" 记$a_i$的前缀最大值为$Max_
阅读全文

浙公网安备 33010602011771号