HDU6438(贪心技巧)】的更多相关文章

第一眼喜闻乐见的股票问题dp可以暴力,然鹅时间不允许. 于是考虑怎么贪. 这篇题解说得很生动了. 因为每支股票都有买入的潜力所以肯定都加在优先队列里. 然后考虑的是哪些需要加入两次.这是我第二次见到类似的手法.当它比优先队列队首要大,可以卖,但是因为后面的还没读所以不知道是不是最优.那就先卖着,钱拿了,然后标记上它可能是个轴承,等到它成了队首(显然这时更便宜的股票已经都跟“大客户”配对完走掉了,或者至少跟轴承嫁接了)且读到了更好的卖家,那它的轴承作用成功完成任务,当前这个更好的卖家作为接盘侠被标…
题目链接 一道很有技巧的贪心题目. 题意:有n个机器,m个任务.每个机器至多能完成一个任务.对于每个机器,有一个最大运行时间xi和等级yi, 对于每个任务,也有一个运行时间xj和等级yj.只有当xi>=xj且yi>=yj的时候,机器i才能完成任务j,并获得 500*xj+2*yj金钱.问最多能完成几个任务,当出现多种情况时,输出获得金钱最多的情况. 分析:机器和任务都按照先拍x从大到小,再拍y从大到小的顺序.然后遍历任务,注意f[]数组的作用,f[]数组标 记大于当前任务时间的机器的等级个数,…
HNOI2019总结 Day 1 开场看三道题,T1是个计算几何,T2是个操作树加\(border\),T3题意有点复杂.想T1想了半个多小时,发现那个钝角不是很会处理,但是40分暴力应该还是可以写,就是有点麻烦.再想T2,也没什么太好的思路,50分只会操作树\(+kmp+\)乱搞.大概9:00开始认真搞T3,看了看样例,感性理解下好像终结状态全都是连到\(n\),于是写了个爆搜,试了几组,好像是对的.发现\(w=0\)直接用\(n-3-\)与n相连的边的条数就行了,操作一条边也比较好做.写完之…
意思是有个塔防游戏,有三种塔,红塔在怪物经过的时候每秒会产生攻击力大小的伤害,绿塔对怪物经过以及经过之后每秒产生攻击力大小的伤害,还有种蓝塔,对怪物进行减速,即怪物从此之后经过一个单位都会减慢c秒 最后最最大的伤害值是多少 又是比赛的时候没想出来,知道是个DP,但是对这种多变量型的DP就是有点不感冒.这个思想其实也是差不多的,你首先得枚举其中的一个值或者两个值 这里有个特性,我绿塔和蓝塔放越前面越好,红塔放越后面越好(主要是腾前面的位置给另外两种),这用了点贪心技巧,但绝对是对的 所以我们可以枚…
Protecting the Flowers Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 3204   Accepted: 1300 Description Farmer John went to cut some wood and left N (2 ≤ N ≤ 100,000) cows eating the grass, as usual. When he returned, he found to his ho…
Description 有nn个城市,第ii个城市商品价格为aiai​,从11城市出发依次经过这nn个城市到达n n城市,在每个城市可以把手头商品出售也可以至多买一个商品,问最大收益. Input 第一行一整数T T表示用例组数,每组用例首先输入一整数nn表示城市数量,之后输出nn个整数ai ai​表示每个城市商品单价 (1≤T≤250,1≤n≤105,∑n≤5⋅105) Output 输出最大收益 sol:显然是贪心题:不难证明下面的东西是对的. 如果某天的价格不能卖,那么插入队列一次,表示这…
写在前面 此题是一个很容易想到的贪心题目,但是正确性的证明是非常复杂的.然而,目前网上所有题解并未给出本题贪心算法的任何正确性证明,全部仅停留在描述出一个贪心算法.本着对算法与计算机科学的热爱(逃),我花了2周时间深入研究了这个问题,并请教了Apass.Jack 大牛,终于在他的帮助下证明了该贪心的正确性.接下来将给出详细地证明过程. PS:Apass.Jack提供了整个证明框架(尽管后来被我发现了一处错误并重新修正了证明),在此表示感谢! 题目描述 给定$n$($n \le 10^5)$个城市…
目录 Catalog Solution: (有任何问题欢迎留言或私聊 && 欢迎交流讨论哦 Catalog Problem:Portal传送门  原题目描述在最下面.  出过很多次:51nodNOIP提高组贪心专题A,牛客寒假多校(不记得那场了),CodeforcesContest865D.  低买高卖,每次只能买入或卖出一件商品,你买得起所有商品,问你最多盈利多少?  ps:FZU2281 Trades是可以买入卖出许多件物品. Solution:  对于当前价格B而言,只要前面有比这个…
题目传送门 题目描述: 有n座城市,每座城市都可以对一个物品进行一次的买进或者卖出,可以同时拥有多个物品,计算利润最大值,并且交易次数要最少.(买入卖出算两次操作) 思路: 建立两个小根堆 优先队列,q1放可以买的物品,q2放可以卖的物品. 如果两个队列都是空的,则把这个物品放入q1. 如果q1是有的,而q2是空的,则把a[i]和q1的顶比一下,如果比他大,则q1 pop一次,把a[i]塞入q2,并且把差值累计到ans上. 如果q1无,q2有,则拿a[i]和q2顶比一下,如果比它大,则把q2顶元…
题意 : 给出一些数.你可以从左到右对这些数进行三种操作花费 Ai 买入东西.以 Ai 价格卖出你当前有的东西.或者什么都不做.现在问你可以获取的最大利益是多少 分析:对每一个元素产生的贡献可以先计算出暂时的最优值,注意是暂时的最优,应为后面可以出现更加优的答案,所有下次遇到更优的时候就进行替换: 具体就是首先使用小顶堆维护枚举过的元素 然后对于当前枚举到的元素 用它和堆顶元素做对比.如果小于或等于堆顶元素 那么它无法和之前枚举过的所有元素的任何一个做减法产生贡献 所以将其加入这个小顶堆当中去…
Buy and Resell Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total Submission(s): 1126    Accepted Submission(s): 359 Problem Description The Power Cube is used as a stash of Exotic Power. There are n cities numbe…
3174: [Tjoi2013]拯救小矮人 Time Limit: 1 Sec  Memory Limit: 128 MBSubmit: 686  Solved: 357[Submit][Status][Discuss] Description 一群小矮人掉进了一个很深的陷阱里,由于太矮爬不上来,于是他们决定搭一个人梯.即:一个小矮人站在另一小矮人的 肩膀上,知道最顶端的小矮人伸直胳膊可以碰到陷阱口.对于每一个小矮人,我们知道他从脚到肩膀的高度Ai,并且他的胳膊长度为Bi.陷阱深度为H.如果我…
最佳vim技巧----------------------------------------# 信息来源----------------------------------------www.vim.org         : 官方站点comp.editors        : 新闻组http://www.newriders.com/books/opl/ebooks/0735710015.html : Vim书籍http://vimdoc.sourceforge.net/cgi-bin/vim…
SGU 280.Trade centers 解题报告 题意: n(<=30000)个城市,(n-1)条道路,求最少需要选择多少个城市建造市场,使得所有城市到任意一个市场的距离不大于k. Solution: 比较好的贪心题.实现起来也有一定技巧. 先以任意点为根,构造出一颗有根树. 首先比较容易想到的是从叶子节点向上寻找,如果只有一个距离为k的点,就把它选上.但是有多个呢? 于是思考更一般的做法,由于是树形结构,先考虑以x节点为根的子树.我们先假设f[x]代表离x节点向下的市场点的距离,这个值可以…
一.语言是最重要的基本功   无论侧重于什么方面,只要是通过计算机程序去最终实现的竞赛,语言都是大家要过的第一道关.亚洲赛区的比赛支持的语言包括C/C++与JAVA.笔者首先说说JAVA,众所周知,作为面向对象的王牌语言,JAVA在大型工程的组织与安全性方面有着自己独特的优势,但是对于信息学比赛的具体场合,JAVA则显得不那么合适,它对于输入输出流的操作相比于C++要繁杂很多,更为重要的是JAVA程序的运行速度要比C++慢10倍以上,而竞赛中对于JAVA程序的运行时限却往往得不到同等比例的放宽,…
Description 一个数组,要求先对前n个数字排序(以方便后续操作):又要求对前n+i个数字排序:又要求对前n+j - 前n+k个数字排序(i.j.k的大小远小于n,且i.j.k间没有大小关系).总之就是对一个不定的范围内数据要进行频繁的按大小顺序调用,但是这个范围边界变化不大,很多数据重叠,这样每次都对此次区间内数据排序,频繁排序的话很费时间. 例如一个数组,一共9个数字,下标0~8.要求: 每次取一个区间,计算区间内的值.很容易想到对区间排个序,即可方便获得最大.次大值等. 对1~5排…
Problem Description "今年暑假不AC?""是的.""那你干什么呢?""看世界杯呀,笨蛋!""@#$%^&*%..."确实如此,世界杯来了,球迷的节日也来了,估计很多ACMer也会抛开电脑,奔向电视了.作为球迷,一定想看尽量多的完整的比赛,当然,作为新时代的好青年,你一定还会看一些其它的节目,比如新闻联播(永远不要忘记关心国家大事).非常6+7.超级女生,以及王小丫的<开心辞…
枚举 用题目中给定的检验条件判定哪些是无用的,哪些是有用 的.能使命题成立的即为其解 . 例一 一棵苹果树上有n个苹果,每个苹果长在高度为Ai的地方.小明的身高为x 他想知道他最多能摘到多少苹果 数据范围: 1 ≤ n, Ai, x ≤ 100 题解 问题相当于询问有多少i满足Ai <= x,考虑用for循环枚举每一个苹果是否能被摘到即可. 例二 筛素数 判断一个数X是否是素数 1 ≤ X ≤ 1e9 考虑定义,若X为合数,则必然有: ∃1 < i < X, i|X 我们考虑直接枚举每个…
题目链接: http://codeforces.com/problemset/problem/777/B 题目大意: A, B玩游戏,每人一串数字,数字不大于1000,要求每人从第一位开始报出数字,并且比较,如果等于则没事,A>B则B被打一下,反之A被打一下,A很老实不会耍计谋,老老实实从第一个开始报,但是B很狡猾,会改变数字的顺序.问2个次数,一个是B最小被打的次数,二是A最多被打的次数. 思路: 贪心,模拟一下就行了.这里用到了cmp的技巧,直接用字符比较,这样就省去了转换为字符串的步骤.…
https://www.luogu.org/problemnew/show/P2279 一开始就想到了贪心的方法,不过一直觉得不能证明. 贪心的考虑是在深度从深到浅遍历每个结点的过程中,对于每个没有覆盖的结点选择覆盖他的祖父结点. 仔细想想觉得这是正确的. 在实现的过程中有一个小技巧是o[i]记录i结点距离消防局最近的距离,如果o[i] > 2则需要在他的祖父结点建立一个消防站.用这种方法可以很方便的判断兄弟节点是否被覆盖. 一个细节是要给根节点1建立两个虚结点N + 1和N + 2作为他的父亲…
题目描述 逆序对问题对于大家来说已经是非常熟悉的问题了,就是求i<j时,a[i] > a[j]的组数.现在请你求出一串数字中的逆序对的个数,需要注意的是,这些数字均在[0,9]之内. 输入 第一行输入T,表示有T组测试数据 对于每组数据,首先输入n,代表有n个数(0<n<=10^6) 接下来输入n个数,每个数都在[0,9]之内 输出 输出逆序对的个数,且对10^9+7取模 样例输入 2 3 3 2 1 3 1 2 1 样例输出 3 1 解法一:数学贪心解法(有点小技巧哦) #inc…
NOIP应试技巧 如何看待别人的经验? 我想大家都有台上的学长滔滔不绝,但是自己在台下漠不关心,或是老师考试前的叮嘱说完一会儿功夫就忘记了的经历吧.所以,有可能我接下来的所说的话,一到考场上就全部忘记了. 那些别人所分享的经验与体会,都只是别人的,都只能是借鉴参考的意见:那些没有亲身体会过的经历,终只是一个故事:那些没有实践过的方法,终只是无用的话语. 自己的经验才是最为深刻的.相比别人的体会,我们对自身失败和挫折的记忆会更深刻,而且,挫折越深,我们吸取的经验教训才更深入骨髓.自己的教训比起网上…
贪心(qwq)习题题解 SCOI 题解 [ SCOI2016 美味 ] 假设已经确定了前i位,那么答案ans一定属于一个区间. 从高位往低位贪心,每次区间查找是否存在使此位答案为1的值. 比如6位数确定了前三位\((101...)_2\),下一位应该是1 那么\(a_i+x_i\)的查找区间为:\([(101100)_2,(101111)_2]\) ,同理如果应该是0则为\([(101000)_2,(101011)_2]\). 注意到有区间\([l,r]\)范围的限制所以用主席树维护即可. […
Description 母亲节就要到了,小 H 准备送给她一个特殊的项链.这个项链可以看作一个用小写字母组成的字符串,每个小写字母表示一种颜色. 为了制作这个项链,小 H 购买了两个机器.第一个机器可以生成所有形式的回文串,第二个机器可以把两个回文串连接起来,而且第二个机器还有一个特殊的性质:假如一个字符串的后缀和一个字符串的前缀是完全相同的,那么可以将这个重复部分重叠.例如:aba和aca连接起来,可以生成串abaaca或 abaca. 现在给出目标项链的样式,询问你需要使用第二个机器多少次才…
传送门 Description 给定n个正整数,求他们相连接后能形成的最大整数.例如:12,23这两个数能连接的最大数是2312,. Input 多组数据,每组数据中: 第一行为一个整数n 第二行有n个整数,代表给出的数. 输入结束的标志为n=0. Output 对于每组数据,输出: 能拼成的最大整数 Sample Input Sample Output Hint 1≤n≤50 Solution 简单的贪心.对给出的数进行排序,A在B的前面当且仅当A接上B比B接上A大.最后按顺序输出答案即可.…
小技巧 我们要算一个点集中所有点到另一个点集中所有点的一些量的时候,可以建立一个超级源点和超级汇点,从多->多变成单->单 整体二分的时候,操作要可以撤销,才能保证复杂度,每一层到左边区间的过程中先撤销掉当前所有操作 整体二分的时候,不能当没有询问就返回,要把操作做完询问处理完才能返回 数形结合,题目中的式子像一个几何上的公式的时候,可以数形结合 对于某些涉及区间操作的问题的时候,可以考虑差分然后变成单点的问题 分块暴力,当所有修改对询问的影响都可以 \(O(1)\) 计算的时候,可以分块暴力…
还有贪心优化dp决策的操作…… Description Farmer John 想要带着 Bessie 一起在科罗拉多州一起滑雪.很不幸,Bessie滑雪技术并不精湛. Bessie了解到,在滑雪场里,每天会提供S(0<=S<=100)门滑雪课.第i节课始于M_i(1<=M_i<=10000),上的时间为L_i(1<=L_i<=10000).上完第i节课后,Bessie的滑雪能力会变成A_i(1<=A_i<=100). 注意:这个能力是绝对的,不是能力的增长…
递归 Recursion:通过函数体来进行的循环. 思路简单但效率低(建立函数的副本,消耗大量时间和内存).能用迭代就不用递归.递推公式+递推终止条件. 计算n阶乘,递归实现 def Factorial(n): if n <= 1: # 终止条件 return 1 return n*Factorial(n-1) 层层深入再回溯: 递归的代码模板: def recursion(level, param1, param2, ...): # recursion terminator if level…
本文将覆盖 「字符串处理」 + 「动态规划」 方面的面试算法题,文中我将给出: 面试中的题目 解题的思路 特定问题的技巧和注意事项 考察的知识点及其概念 详细的代码和解析 开始之前,我们先看下会有哪些重点案例: 为了方便大家跟进学习,我在 GitHub 建立了一个仓库 仓库地址:超级干货!精心归纳视频.归类.总结,各位路过的老铁支持一下!给个 Star ! 现在就让我们开始吧! 二叉搜索树 二叉搜索树(Binary Search Tree),它或者是一棵空树,或者是具有下列性质的二叉树: 若它的…
给定一个非负整数数组,你最初位于数组的第一个位置. 数组中的每个元素代表你在该位置可以跳跃的最大长度. 判断你是否能够到达最后一个位置. 示例 1: 输入: [2,3,1,1,4]输出: true解释: 从位置 0 到 1 跳 1 步, 然后跳 3 步到达最后一个位置.示例 2: 输入: [3,2,1,0,4]输出: false解释: 无论怎样,你总会到达索引为 3 的位置.但该位置的最大跳跃长度是 0 , 所以你永远不可能到达最后一个位置. 来源:力扣(LeetCode)链接:https://…