Educational Codeforces Round 117 D. For Gamers. By Gamers. 题意:玩家有 \(C\) 块钱,可以从酒馆中招募随从,每个随从有攻击力 \(d_i\),生命 \(h_i\),花费 \(c_i\) 块钱。接下来有若干轮战斗,每轮战斗有一个敌人,攻击力 \(D_j\),生命 \(H_j\)。每轮相互独立(钱也独立),玩家可以招募若干个相同随从来和怪物战斗,但要求己方没有随从会死亡。问每一轮战斗需要花费至少多 2022-03-23 题解 #题解 #codeforces
Codeforces Round 774 div.2 DEF D. Weight the Tree 题意:给定一棵树,每个节点有一权重 \(w_i\),若一个节点的权值等于其相邻点的权值之和,则这个节点是好的。现在你可以为每个,使得好的点数量最多,在这基础上,还要使得总权值最小,输出赋值方案。 首先想到,除了 \(n=2\) 的情况,相邻两个点不可能都是好的 对于不好的点,肯定让它为1(\(w_i\ge1\)),那么好的点的权值一定等于其度数,我们要 2022-03-05 题解 #题解 #codeforces
Codeforces Round 773 div.2 F F. Two Arrays 题意:给出 \(n\) 个数组,每个数组都有 \(m\) 个不同元素,有权值 \(w_i\),我们称两个不包含相同元素的数组是匹配的,要求匹配的数组对当中, \(w_i+w_j\) 的最小值(\(n\le10^5,m\le5,a_i\le10^9\)) 奇技淫巧: 哈希,我们可以把 \(w\) 映射到一个很小的范围上去(比如1000以内),可能会产生冲突, 2022-02-23 题解 #题解 #codeforces
Codeforces Round 772 div.2 A-F A. Min Or Sum 题意:有一个数组 \(a\),你可以进行任意次操作:取两个数 \(a_i,a_j\),将这两个数分别改为 \(x,y\),要求 \(a_i|a_j=x|y\) 问可能得到数组总和最小值。 我们显然可以把二进制中每一位上多余的部分全部删光,只留一个,答案即所有数或起来 ll n, m; void solve(){ cin >> n; 2022-02-20 题解 #题解 #codeforces
Codeforces Round 770 div.2 EF E. Fair Share 题意:有 \(n\) 组物品,第 \(i\) 组有 \(m_i\) 个,每个物品有一个编号,保证每种物品出现偶数次,每组物品有偶数个,要求将所有物品划分为两组,使得一组中有每种物品各一半,每组物品各一半。 首先将问题抽象出来,组别和物品类别其实没有什么区别,都是物品的属性; 建图:左边点表示组别,右边点表示类别,\(i\) 组中包含物品 \(j\),则连边 \( 2022-02-06 题解 #题解 #codeforces
Educational Codeforces Round 117 A-E A. Distance 题意:给出 \(B\) 点坐标 \(bx,by\),要输出 \(C\) 的坐标使得 \(C\) 到原点,\(C\) 到 \(B\) 点的曼哈顿距离都为 \(B\) 到原点的曼哈顿距离的一半。 分奇偶讨论即可 int n, m; void solve() { int x, y; cin >> x >> y; in 2021-11-22 题解 #题解 #codeforces
Codeforces Round 746 div.2 CDE 这场没打,赛后看了一下题值得补 C. Bakry and Partitioning 题意:给出一棵 \(n\) 节点的树,每个点有权值 \(a_i\),问能否割去至少一条,至多 \(k-1\) 条边,使得割完后各个连通块的权值异或和相等。 显然,如果整棵树的异或和为0,那么任选一条边割得到的两个连通块异或和都相等。(异或的性质) 如果整棵树异或和为 \(x\) ,那么问题就等价于能不 2021-11-17 题解 #题解 #codeforces
Codeforces Round 755 div.1 ABC 第一次打div1,头被锤烂了( A. Two Arrays 题意:有两个 \(1-n\) 的排列 \(a,b\),可以对 \(a\) 序列进行如下操作: 将一些位置上的数+1 任意改变 \(a\) 的顺序 问能否一次操作将 \(a\) 变成 \(b\) 排序后依次判断每一位上的 \(a\) 能否变成 \(b\) 即可 int n, m; int a[maxn], b[max 2021-11-14 题解 #题解 #codeforces