bzoj1555 KD之死 贪心+堆优化】的更多相关文章

1555: KD之死 Time Limit: 10 Sec  Memory Limit: 64 MBSubmit: 124  Solved: 54[Submit][Status][Discuss] Description 在F出去旅游的这几十年里面,地球上已经发生了翻天覆地的变化.原来KD早知道不和谐的地球即将会爆发有史以来的第一次SC(S**t Combat)大战,这场战争有可能毁灭地球,所以才强行推荐F去火星家园,以躲避这次战争. 战争发生的这些年间,KD带领的正义清扫军顽强抵抗,与敌人势均…
前几天在学堆,这个数据结构貌似挺简单的,但是我看了很久啊QAQ... 今天算是搞懂了吧...于是想到了这道题...(当初悄悄咪咪看题解记得一点) 点我看题 放洛谷的题... 题意的话,大概就是有n个房子在一条直线上,每个房子有一个离起点的距离,还有一个价值. 然后n个询问,第 i 个表示选 i 个房子能得到的最大总价值.总价值指 最远距离*2+每一个推销房子的价值. 有一个前提,不多走路,也就是说这个最远距离必须是某个要推销的房子. 思路:我萌可以考虑一下贪心,对于第i个询问,是否可以从第 i-…
如果没有必选的限制条件,就是水题了... 只要按照w + t排序就可以了,然后搞个堆来维护 于是有了限制条件,还是水题... 到了必选的时候强制选上,不加入堆中即可. /************************************************************** Problem: 1555 User: rausen Language: C++ Result: Accepted Time:2228 ms Memory:10948 kb ***************…
题目大意 给定一个长度为n的正整数序列,令修改一个数的代价为修改前后两个数的绝对值之差,求用最小代价将序列转换为不减序列. 其中,n满足小于500000,序列中的正整数小于10^9 题解(引自mzx神犇的题解) 本次test跪0了,尴尬 解法1(40分) 考虑dp 设到第i个数为止,序列中数全部<=j的最小代价为f[i][j] 可以推出f[i][j]=min{f[i-1][j]+|ai-j|,f[i][j-1]} 解法2(60分) 是对于第一个dp思路的优化 既然数字是固定的,可以离散化,降低空…
点此看题面 大致题意: 有N个受到严重损伤的建筑,对于每个建筑,修好它需要\(T1\)秒,且必须在\(T2\)秒之前修完(\(T1\)与\(T2\)不是固定值),问你最多能修好几个建筑. 题解 一看到这题,就能想到一个贪心的做法. 但是,裸贪心显然是不能过的,如果加上一个堆优化,就能够水过此题. 我们可以把修好每个建筑所需的时间放入大根堆中存储.对于每一个建筑,若能在规定时间内修好,则将\(ans\)加\(1\),否则比较修好它所需的时间与堆顶元素的大小,若修好它所需的时间更少,则用其替换堆顶,…
E. Paths and Trees time limit per test 3 seconds memory limit per test 256 megabytes input standard input output standard output Little girl Susie accidentally found her elder brother's notebook. She has many things to do, more important than solving…
嘤嘤嘤今天被迫学了这个算法--其实对于学习图论来说我内心是拒绝的\(\mathscr{qnq}\) 由于发现关于这个\(\mathscr{SPFA}\)的时间复杂度\(O(kE)\)中的\(k \approx 2\)好像只针对于稀疏图?\(emmm\)想不到时间复杂度居然还有数据分治这一说\(ORZ\) 好的,对于我的图论而言,好像只会\(MST\).\(\mathscr{MT \ \ Law}\)和最短路?哦呵呵呵呵那可真优秀啊\(QAQ\) 要不是今天上午学了堆优化的,没准我连普通的都不会了…
关于堆优化 传统\(Dijkstra\),在选取中转站时,是遍历取当前最小距离节点,但是我们其实可以利用小根堆(STL的priority_queue)优化这个过程,从而大大降低复杂(\(O(V2+E) -> O((V+E)lgV)\)) 另外,需要注意,因为\(Dijkstra\)本质是贪心,每一次选择中转站必须保证最优,而负边权会使当前中转站不为最优,所以不能处理含有负边权的图 代码 #include <cstdio> #include <queue> #include &…
题目描述 给定一张n个点,m条双向边的无向图. 你要从1号点走到n号点.当你位于x点时,你需要花1元钱,等概率随机地买到与x相邻的一个点的票,只有通过票才能走到其它点. 每当完成一次交易时,你可以选择直接使用那张票,也可以选择扔掉那张票然后再花1元钱随机买另一张票.注意你可以无限次扔票. 请使用最佳的策略,使得期望花的钱数最少. 输入 第一行包含两个正整数n,m(1<=n,m<=300000),表示点数和边数. 接下来m行,每行两个正整数u,v(1<=u,v<=n),表示一条双向边…
题目描述 印尼首都雅加达市有 N 座摩天楼,它们排列成一条直线,我们从左到右依次将它们编号为 0 到 N−1.除了这 N 座摩天楼外,雅加达市没有其他摩天楼. 有 M 只叫做 “doge” 的神秘生物在雅加达市居住,它们的编号依次是 0 到 M−1.编号为 i 的 doge 最初居住于编号为 Bi 的摩天楼.每只 doge 都有一种神秘的力量,使它们能够在摩天楼之间跳跃,编号为 i 的 doge 的跳跃能力为 Pi (Pi>0). 在一次跳跃中,位于摩天楼 b 而跳跃能力为 p 的 doge 可…