摘要:
来水篇题解((( 图炸了,去洛谷博客看吧。 注:在本篇题解中, $K$ 表示国王, $N$ 表示骑士,不同颜色的 $X$ 表示该位置国王可以达到,且被与之相同颜色的骑士封锁。方法不唯一,图中的方法仅作示例。 根据题目,可以得到国王所在的位置分为三种情况: 在角上 在边上 在中间 因此我们分别考虑这三 阅读全文
摘要:
怎么这样一看感觉自己也没多少一遍过的题啊(悲) 过于久远的就不往上放了... 不是洛谷题库的题有些找不到或记不住是不是一遍过了/kk lgP1450 硬币购物 容斥枚举加减的时候少写了一种情况。 lgP7076 动物园 没特判;爆 long long ;判断条件写反。 lgP2801 教主的魔法 b 阅读全文
摘要:
重构完毕。 阅读全文
摘要:
主要思路:二进制拆分。 先将 $m$ 进行二进制拆分。 注意金币总数有限,也就是说拆分后可能会多出来一组。多出来的这组如果不是 $2^n$ 就不需要考虑了,因为不会和前面的重复。 接下来考虑重复的情况,如 $m=23$ ,可以拆为 $1 2 4 8 8$ 。 于是我们直接把俩 $8$ 变成 $7$ 阅读全文
摘要:
题目要求同时查询最大最小值,所以选择用 multiset 。 感觉没啥好说的,但是刚开始没想到这东西...... #include<bits/stdc++.h> using namespace std; multiset<int> st; int n,m; int main() { scanf("% 阅读全文
摘要:
贪心。 每次取最小的两堆合并,最后即为正确答案。(我也不会证明/wq) 所以说主要问题就是怎么找最小的两堆。 由于中间不断有插入和删除,所以用优先队列。 ~~扯不下去了~~ 直接看代码吧。 #include<bits/stdc++.h> using namespace std; priority_q 阅读全文
摘要:
~~本来看着挺简单结果写完了怎么也调不对调了半个小时~~ 很明显直接用优先队列直接模拟就好了。(没啥好说的)~~但是就是写不对~~ 刚开始发现记不住 priority 怎么写,后来发现自己记不住重载运算符怎么写,再后来发现忘了优先队列怎么用... 就当是复习一遍这堆东西了吧。 #include<bi 阅读全文
摘要:
~~第一次知道树形dp还能状压~~ 题面挺长的,大概就是选包含五种矿藏的子树使代价最小。 因为一共只有五种,所以把可以五种拿到与没拿到状态压缩一下,然后就是正常树形 dp 了。 话说我刚开始把 inf 赋成了 2e9 害得自己找了好长时间重写一遍才发现/dk #include<bits/stdc++ 阅读全文
摘要:
写了一个多小时,本来觉得 bfs 能过然后码了好久发现不会确定顺序,又重新写了一遍 dfs /kk ~~好吧其实是因为我记得上次做这题的时候写的是 bfs~~ 设 $f[i][0]$ 表示以 $i$ 为根的子树当 $i$ 不去时的最大快乐值, $f[i][1]$ 表示以 $i$ 为根的子树当 $i$ 阅读全文
摘要:
先吐槽下题面。。。。。。 感觉题面完全没说明白这一堆变量是干嘛的,最后还是照着题解代码才看懂题/kk 设 $f[i]$ 表示状态为 $i$ 时吕布剩余的最大血量。 梳理一下题目要素: 两个人会一直互相攻击直到其中一个死掉,设 a1=max(1,lvatmp-emd[j]),a2=max(1,ema[ 阅读全文