
算法-贪心
YxuanwKeith
这个作者很懒,什么都没留下…
展开
-
JZOJ4623 搬运干草堆 主席树维护贪心(加了一点图......先将就着看......)
题目大意现在有NN个正整数AiA_i,现在我们可以任意的改变其中的值,设改变后的值为A′iA_i',那么我们需要花费的代价就为|A′iA_i' - AiA_i|。问把这个序列变成单调不上升序列的最小代价。N<=105N <= 10^5 Ai<=106A_i <= 10^6解题思路这道题我们可以用贪心的思想去完成。因为题目要求代价最小,那么对于我们每一个位置i,在花费相同的时候,我们肯定让AiA_i原创 2016-07-13 16:16:29 · 1080 阅读 · 1 评论 -
BZOJ4444 SCOI2015国旗计划 根据性质优化贪心
题目大意现在给定一个大小为MM的环,顺时针编号1 M1~M,以及NN个人,每个人有一个给定的属性Li,RiL_i, R_i表示可以覆盖顺时针方向的LiL_i 到Ri R_i,现在要求选最少的人覆盖掉整个环(包括两个点之间的区间),问当第ii个人必选是,至少选多少个人。M<=109M <= 10^9 N<=105N <= 10^5解题思路首先最直观的思路就是把环拆开变成一条链,我们发现我们当起点确定原创 2016-07-30 15:53:54 · 1407 阅读 · 0 评论 -
CF 581E Kojiro and Furrari(JZOJ 4689 新车) 动态规划维护贪心
题目大意现在有一个长度为MM的数轴,上面有一个起点和一个终点,起点一定在终点左边。现在你要开车从起点到达终点,但是你的油箱只能走长度为SS的路程。途中有NN个加油站,加油站加的汽油有3种,分别为98,95,92,并且一个加油站只能加一种有油,在每个加油站你可以加任意多的油。一开始你加满了98的汽油,现在给定你每个加油站的位置和可以加的油的种类。问能否到达终点,如果可以最少需要加多少92汽油,当加92原创 2016-08-15 10:06:45 · 990 阅读 · 0 评论 -
51Nod 算法马拉松17 最好的排列 贪心求解加高精度
题目大意我们定义“排列的价值”为所有区间的最大值之和。一个最好的排列,应当是在所有排列中,价值最高的。现在有NN个整数,他们是从11到NN且两两互不相同。现在要把他们重新排列一下,使得排列的价值最大。输出最大的排列价值。N≤10100N \leq 10^{100}解题思路考虑一个数对答案的贡献,若这个数所在位置是x,左边比它大的最近的数的位置是ll,右边比它大的最近的数的位置是rr,那么这个数对答案原创 2016-08-29 11:24:18 · 987 阅读 · 0 评论 -
BZOJ3875【JSOI2014/AHOI2014】骑士游戏(knight) 贪心求解
题目大意现在有一个游戏,一共有两种攻击方式,一种是普通攻击,一种是法术攻击。两种攻击方式都会消耗一些体力。采用普通攻击进攻怪兽并不能把怪兽彻底杀死,怪兽的尸体可以变出其他一些新的怪兽;而采用法术攻击则可以彻底将一个怪兽杀死。 现在一共有NN种不同的怪兽,每只怪兽有几个参数Si.Ki,Ri,P1...PRiS_i.K_i,R_i,P_1...P_{R_i}。问至少花费多少体力才能把第一只怪兽杀掉。N原创 2016-08-24 16:57:52 · 1403 阅读 · 0 评论 -
JZOJ4726【NOIP2016提高A组模拟8.22】种花 增加改错机制的后贪心
题目大意现在有一个NN个点的环,环上每个点都有一个权值ValiVal_i,现在要求在这个环上选MM个点出来,使得点之间两两不相邻并且权值最大。如果无解则输出Error!Error!。N≤2∗105N \leq 2*10^5 −103≤Val≤103-10^3\leq Val \leq 10^3解题思路无解的情况很好判断,直接隔一个去一个看一下能不能取够MM个就行了。那么现在的问题就是怎么能使取出的原创 2016-08-22 13:58:20 · 950 阅读 · 0 评论 -
JZOJ4686 卡牌游戏 线段树维护贪心策略
题目大意有两个人在玩这样的一个游戏:现在有2N2N张牌,牌的大小为11到2N2N,每个人都从中拿NN张牌来进行NN轮比大小。现在你已经知道第二个人的出牌顺序,你要帮第一个人赢得经量多(你可以决定他的出牌顺序)。比大小的规则是这样的:一开始是谁牌上的数字大谁就赢。但是当游戏进行了若干轮后,你可以改变游戏规则,变为谁的牌小谁赢(只能修改一次!)。问最优策略下第一个人能赢多少轮。N≤50000N \leq原创 2016-08-15 09:35:45 · 918 阅读 · 0 评论 -
JZOJ4828. 【GDOI2017模拟10.30】最大值 分类讨论+分治处理子集问题
题目大意给定一个包含nn个正整数的序列aa,以及一个运算操作符opop,要求你输出aiopaj(1≤j≤n)a_i op a_j(1\leq j\leq n)结果中的最大值。 运算符opop可以是and,or,xorand,or,xor。有tt组测试数据。n≤105n \leq 10^5 t≤6t \leq 6 ai≤220a_i \leq 2^{20}解题思路这题的弱化版是可以用根号算法过的原创 2016-10-30 20:25:39 · 868 阅读 · 0 评论