解题:APIO 2012 派遣】的更多相关文章

APIO 2012 派遣(可并堆) 给定一棵N个点的树和M,每个点有两个权值ai,bi,每次可以选择一个点x,然后在这个点的子树中选若干点(可以不选自己),使得这些点的\(\sum b_i<=M\).收益为ax*选出的点个数.求最大收益. 对每个点维护一个大根堆即可-- #include <cstdio> using namespace std; typedef long long LL; const LL maxn=2e5+5; void swap(LL &x, LL &…
题面 以报酬为标准维护一个大根堆,从根节点往上合并,每次踢掉若干人直到花费合法后更新答案 #include<cstdio> #include<cstring> #include<algorithm> using namespace std; ; *N],goal[*N],led[N]; ]; int n,m,t1,cnt; long long ans,val[N],cst[N]; void Link(int f,int t) { noww[++cnt]=p[f]; go…
Description 在一个忍者的帮派里,一些忍者们被选中派遣给顾客,然后依据自己的工作获取报偿. 在这个帮派里,有一名忍者被称之为Master.除了Master以外,每名忍者都有且仅有一个上级.为保密,同时增强忍者们的领导力,所有与他们工作相关的指令总是由上级发送给他的直接下属,而不允许通过其他的方式发送. 现在你要招募一批忍者,并把它们派遣给顾客.你需要为每个被派遣的忍者支付一定的薪水,同时使得支付的薪水总额不超过你的预算.另外,为了发送指令,你需要选择一名忍者作为管理者,要求这个管理者可…
昨天晚上zyf神犇问我的题,虽然我太弱参加不了APIO但也做一做吧. 用小数据拍了无数次总是查不出错来,交上去就WA,后来用国内数据测发现是主席树上区间相减的值没有用long long存,小数据真是没用啊QuQ 手残不加long long毁一生 交上去还是WA,最后发现没有把windows下的I64d改成linux下的lld== 因为这个贡献了两次Wrong Answer,,,好像第一次还爆内存了?比赛时这么手残就得滚粗了QAQ #include<cstdio> #include<cst…
题意 给定一个\(1\)为根的树,每个点有\(c,w\)两个属性,你需要从某个点\(u\)子树里选择\(k\)个点,满足选出来的点\(\sum_{i=1}^k w(i)\leq m\),最大化\(k\times c(u)\) 题解 可以启发式合并\(splay\)来做,\(\text{dfs}\)每个点,每次和儿子的\(splay\)合并,就得到了一个维护这个点子树的平衡树.再用这个点的\(w\)(题目中的领导力)乘以子树中最多选多少结点满足\(c\)(薪水)和\(\leq m\) 肯定贪心选,…
题目大意:给出一棵树,每个节点有两个值,各自是这个忍者的薪水和忍者的领导力.客户的惬意程度是这个点的领导力乘可以取得人数.前提是取的人的薪水总和不超过总的钱数. 思路:仅仅能在子树中操作.贪心的想,我们仅仅要这个子树中cost最小的那些点就能够了. 所以就深搜一次.每到一个节点上.把自己和全部子节点的平衡树启示式和并,然后保留不超过总钱数的人数.统计.数据范围比較大,能开long long的地方不要吝啬. PS:吐槽一下,一開始这个题一直TTT.我以为是我常数写的太大了.别人都用左偏堆写.是不是…
Dispatching Time Limit: 3000ms Memory Limit: 262144KB This problem will be judged on SYSU. Original ID: 635664-bit integer IO format: %lld      Java class name: (No Java Yet) In a sect of ninja, ninjas are dispatched to a client, and they are rewarde…
P3620 [APIO/CTSC 2007]数据备份 题目描述 你在一家 IT 公司为大型写字楼或办公楼(offices)的计算机数据做备份.然而数据备份的工作是枯燥乏味的,因此你想设计一个系统让不同的办公楼彼此之间互相备份,而你则坐在家中尽享计算机游戏的乐趣. 已知办公楼都位于同一条街上.你决定给这些办公楼配对(两个一组).每一对办公楼可以通过在这两个建筑物之间铺设网络电缆使得它们可以互相备份. 然而,网络电缆的费用很高.当地电信公司仅能为你提供 K 条网络电缆,这意味着你仅能为 K 对办公楼…
昨晚各种莫名其妙卡题. 不过细看这套题还挺简单的.全是各种暴力. 除了最后一道题计算几何看起来很麻烦的样子,其他题都是很好写的吧. A. Babs' Box Boutique 题目大意是给出不超过10个的长方体,然后求怎样堆叠使得放的长方体最多. 堆叠的要求是长方体一个一个的往上放,要求接触的面,上面的面长和宽不能比下面的面大 那么每个长方体有三个面,我们就3^n枚举每个长方体使用的哪一面放的. 然后按照这些面的宽进行排序,做一下LIS即可 #include <iostream> #inclu…
啥都不会做了.. 做题慢死 A.Grandpa's Walk 签到题. 直接DFS就行. 注意先判断这个点可以作为一个路径的起点不. 然后再DFS. 否则处理起来略麻烦 #include <iostream> #include <algorithm> #include <cstring> #include <cstdio> #include <map> #define MAXN 111111 #define INF 1000000007 usin…