首页 > tokitsukaze and Soldier
头像 工大最菜
发表于 2020-03-24 22:16:49
思路:我们考虑按s[i]存入vectoc,从大到小枚举s[i]的值。那么就是在所有>=s[i]的士兵中选v最大的s[i]个。我们可以优先队列维护。因为s[i]是减小的。所以删除的士兵一定在后面用不到。 #include <bits/stdc++.h> using namespace 展开全文
头像 与人无语
发表于 2020-05-03 15:31:59
这是一个贪心题按容纳人数排序 当新加入的人的容纳人数小于总人时 去除人数差个战力最小的人每次加入人都会记录一下最大值最后就求出了军团战力的最大值 #include <bits/stdc++.h> #define ll long long ll const N=1e5+5; using 展开全文
头像 Kur1su
发表于 2020-05-04 10:17:06
Solution 看了一圈题解都是优先队列, 这里给个不正经的做法观察到人数只会在 到 我们考虑会不会出现一个峰值使得结果最大即这个结果是不是满足凹凸函数的定义我们考虑三分人数大小, 这样可以取得一个局部极值然后在这个局部极值的附近找是否有最优的问题在于三分出人数后如何去check贡献因为我们已经 展开全文
头像 Alpaca00
发表于 2020-10-08 21:36:48
(这题好像并不需要优先队列 题意描述 看题解的时候看歪了写成了从小到大枚举,好像发现不需要优先队列只需要排个序就可以了 题解:枚举士兵限制为1-n的时候的最大值可以想象的是士兵限制为k时,最大值是所有s大于等于k的前k(或只有不超过k个士兵满足)大的士兵的v之和暴力做的时间是不可取的那么可以先将士兵 展开全文
头像 TT珑
发表于 2020-05-04 21:05:35
题目链接:https://ac.nowcoder.com/acm/problem/50439题意:给你n个士兵,要你组个团,每个士兵都有自己的战斗力和对团中成员最大数量的限制。求这个团的最大战斗力。思路:如果没有人数限制,那肯定是多多益善。但是有了人数限制,那就要考虑团中人数为多少时,战斗力才会最大 展开全文
头像 LB_tq
发表于 2020-03-24 18:10:10
Solution 由题目可知要求一个集合,使集合大小满足元素的限制且元素之和最大。 一个显然的贪心思想:在满足条件的前提下使得和最大。要求和最大,就可以使用堆来维护。 因此,可以先按 从大到小排序,维护一个小根堆,每插入新元素之前,将堆的大小调整至符合条件。再实时维护一个集合内元素的最大值即可。 展开全文
头像 shyyhs
发表于 2020-03-25 13:16:59
这个题目是个简单贪心+dp思维..想想是不是就是让每个物品在有它的团队里达到最优...考虑整体最优我们肯定把最大的优先选取因为你后面小的,要最优也要利用大的增加自身价值,不可能你用小的增加自己价值,然后每个团队我都记录一下选取最优,小的假如它本身大小比现有团队大小小,那我就抛弃它,因为它不可能产生更 展开全文
头像 肖战公关团队
发表于 2020-05-05 13:33:44
Solution 非常显然的离线+优先队列求解,先处理更加“宽容”的人(希望士兵团不超过的人数更多的人),那么那些不那么“宽容”的被分配到团中时,比这个人更加“宽容”的人也能分配到团中。 限定一个值,让都堆在一起后,选择前大的求和即是此时所能安排的最大值。这是经典的topK问题。 的取值有个,所以直 展开全文
头像 hnust_zhouzisheng
发表于 2020-05-15 09:13:33
题意:有n个士兵,每个士兵 i 有武力值v[i]和限制人数s[i],即:若选择了第 i 个士兵则选择的总人数不能超过s[i]。求v[i]总和的最大值。 思路:贪心,优先队列。按s[i]从大到小的顺序进行排序并遍历,对于每项v[i]直接入队。若size<=s[i]直接更新ans;若size> 展开全文
头像 小嗷犬
发表于 2023-08-18 20:08:51
考察知识点:贪心、优先队列 读入每个士兵的信息,按照士兵的 s[i] 值降序排序,然后依次将士兵战力加入优先队列(小根堆),同时维护当前士兵战力之和 cnt,当优先队列大小超过当前士兵的 s[i] 值时,将优先队列顶端的士兵战力(即最低战力)从 cnt 中减去,直到优先队列大小不超过当前士兵的 s[ 展开全文

等你来战

查看全部