01 2021 档案

摘要:重构完毕。 阅读全文
posted @ 2021-01-29 22:39 樱雪喵 阅读(2852) 评论(12) 推荐(8) 编辑
摘要:主要思路:二进制拆分。 先将 $m$ 进行二进制拆分。 注意金币总数有限,也就是说拆分后可能会多出来一组。多出来的这组如果不是 $2^n$ 就不需要考虑了,因为不会和前面的重复。 接下来考虑重复的情况,如 $m=23$ ,可以拆为 $1 2 4 8 8$ 。 于是我们直接把俩 $8$ 变成 $7$ 阅读全文
posted @ 2021-01-29 20:46 樱雪喵 阅读(72) 评论(0) 推荐(0) 编辑
摘要:题目要求同时查询最大最小值,所以选择用 multiset 。 感觉没啥好说的,但是刚开始没想到这东西...... #include<bits/stdc++.h> using namespace std; multiset<int> st; int n,m; int main() { scanf("% 阅读全文
posted @ 2021-01-15 21:46 樱雪喵 阅读(183) 评论(0) 推荐(0) 编辑
摘要:贪心。 每次取最小的两堆合并,最后即为正确答案。(我也不会证明/wq) 所以说主要问题就是怎么找最小的两堆。 由于中间不断有插入和删除,所以用优先队列。 ~~扯不下去了~~ 直接看代码吧。 #include<bits/stdc++.h> using namespace std; priority_q 阅读全文
posted @ 2021-01-15 21:00 樱雪喵 阅读(98) 评论(0) 推荐(0) 编辑
摘要:~~本来看着挺简单结果写完了怎么也调不对调了半个小时~~ 很明显直接用优先队列直接模拟就好了。(没啥好说的)~~但是就是写不对~~ 刚开始发现记不住 priority 怎么写,后来发现自己记不住重载运算符怎么写,再后来发现忘了优先队列怎么用... 就当是复习一遍这堆东西了吧。 #include<bi 阅读全文
posted @ 2021-01-15 20:38 樱雪喵 阅读(61) 评论(0) 推荐(0) 编辑
摘要:~~第一次知道树形dp还能状压~~ 题面挺长的,大概就是选包含五种矿藏的子树使代价最小。 因为一共只有五种,所以把可以五种拿到与没拿到状态压缩一下,然后就是正常树形 dp 了。 话说我刚开始把 inf 赋成了 2e9 害得自己找了好长时间重写一遍才发现/dk #include<bits/stdc++ 阅读全文
posted @ 2021-01-08 22:40 樱雪喵 阅读(72) 评论(0) 推荐(0) 编辑
摘要:写了一个多小时,本来觉得 bfs 能过然后码了好久发现不会确定顺序,又重新写了一遍 dfs /kk ~~好吧其实是因为我记得上次做这题的时候写的是 bfs~~ 设 $f[i][0]$ 表示以 $i$ 为根的子树当 $i$ 不去时的最大快乐值, $f[i][1]$ 表示以 $i$ 为根的子树当 $i$ 阅读全文
posted @ 2021-01-08 19:56 樱雪喵 阅读(96) 评论(0) 推荐(0) 编辑