随笔分类 -  高效算法思想--贪心

摘要:$n \leq 100000$种蔬菜,每个蔬菜有:一单位价格;卖第一单位时额外价格;总量;每天腐烂量。每天能卖$m \leq 10$单位蔬菜,多次询问:前$k \leq 100000$天最多收入多少。价格、量$ \leq 1e9$。 我也不知道为啥88分QAQ 求大佬看看啊 把第一单位蔬菜和其他的拆 阅读全文
posted @ 2018-07-01 21:45 Blue233333 阅读(378) 评论(0) 推荐(0)
摘要:$n \leq 50000$的序列,问选不超过$m \leq 50000$个区间使得和最大。 如果正数区间总数比$m$小那肯定全选。否则有两种方式减少区间数量:丢掉一个正区间;补一个负区间连接两个正区间。贪心即可。 先把左右端的负数去掉,然后把正区间和负区间处理出来。优先队列维护区间值,然后开个链表 阅读全文
posted @ 2018-06-11 13:35 Blue233333 阅读(248) 评论(0) 推荐(0)
摘要:$n \leq 500000$个数字,给实数$k$,问用这些数字填上的,满足$d_i \geq d_{\left \lfloor \frac{i}{k} \right \rfloor}$的字典序最大的序列。 如果数字不同的话按后序遍历从大到小填就行了。 如果数字相同的话就不行。比如输入4 2 1 1 阅读全文
posted @ 2018-04-19 10:41 Blue233333 阅读(221) 评论(0) 推荐(0)
摘要:偶尔来道奶牛题休闲一下。 $a \leq 1e9$,$b \leq 1e9$,$a*b$的大矩形中有$n \leq 25000$条竖栏杆$m \leq 25000$条横栏杆(a对n,b对m),这些栏杆是无限长的且互不重合。给竖栏杆的横坐标和横栏杆的纵坐标。现在这些栏杆把矩形隔成很多块,问移除最短多长 阅读全文
posted @ 2018-03-21 16:42 Blue233333 阅读(129) 评论(0) 推荐(0)
摘要:$n \leq 1e9$,$n*2$的网格里有$m_1+m_2 \leq 1e6$个障碍物,现有一坦克从$(0,1)$出发要到$(n+1,1/2)$,他每秒可以换行(纵坐标1变2或2变1)也可以发炮弹,然后会强制往前走一格(横坐标+1),一次炮弹打一个障碍,炮弹装载时间$t \leq n$,一开始炮 阅读全文
posted @ 2018-03-07 10:23 Blue233333 阅读(577) 评论(0) 推荐(0)
摘要:问一副排n张,n<=23最少打几次打完,数据组数T<=100。 面向数据编程。。 前30分:乱暴力?没有顺子,把单、对子、炸弹、三张、王炸、三带一判一次即可。 前70分:状压,先预处理哪些状态能一次出完,用这些状态来转移,2^n*n*T。实际得分可能比期望的高一些?? 满分:如果不打顺子,最优策略是 阅读全文
posted @ 2017-10-30 07:16 Blue233333 阅读(331) 评论(0) 推荐(0)
摘要:n<=25000个牛,挤奶两道工序两个人来做,要先第一道工序才能第二道,先第一道工序的牛要先第二道工序,一个人同时最多挤奶一头牛,给每头牛两道工序时间求最少用多长时间。 AC率这么高的题又不会。很好。 看两头牛,第一头A1,B1,第二头A2,B2,要1在前面,除非: 这个化简就是: 按这个排序即可。 阅读全文
posted @ 2017-09-28 21:40 Blue233333 阅读(336) 评论(0) 推荐(0)
摘要:n<=50000组数Ai,Bi,Ai>=Bi,最多K<=n个组选Bi,其他组选Ai,求最多能选中几组数使选数总和不超过M<=1e14。 一开始,肯定是在Bi里面选K个最小的,然后M有剩的再来调整。如何调整呢?现在我有两个选择:在没选的数里面选个最小的Aj,否则在选的K个最小Bi的里面,把某个Bi换成 阅读全文
posted @ 2017-09-19 21:41 Blue233333 阅读(315) 评论(0) 推荐(0)
摘要:n<=100000的树,砍S<n条边,求砍完后S+1棵树的最大直径的最小值。 树的直径要小小哒,那考虑一棵子树的情况吧!一棵子树的直径,就是子树根节点各儿子的最大深度+次大深度。就下面这样: 最大值最小肯定二分答案啦,那这棵子树如果有毛病呢,砍谁呢?肯定砍最大深度啦!所以就子树最大深度+次大深度有毛 阅读全文
posted @ 2017-09-11 16:56 Blue233333 阅读(218) 评论(0) 推荐(0)
摘要:n<=20000个车站,车能同时载C<=100个人,求能满足K<=50000群人的多少个。每群人给起点终点和人数,一群人不一定要都满足。 一开始想DP,想不出,很菜。 贪心即可。如果有右端点相同的几群人,那肯定优先满足左端点大的;如果有两群人发生冲突,而我们从左到右考虑区间的话,那肯定让左边的人先满 阅读全文
posted @ 2017-08-31 10:11 Blue233333 阅读(185) 评论(0) 推荐(0)
摘要:n个数,分组,数Ai要在至少含有Ai个数的组,求最多分多少组。 方法一:大的数应该尽量跟大的在一起,这样才能让小的出现很多很多组,所以从大到小排序,给当前序列中最大的数x分x个数。代码如下: 1 #include<stdio.h> 2 #include<stdlib.h> 3 #include<st 阅读全文
posted @ 2017-08-07 20:08 Blue233333 阅读(171) 评论(0) 推荐(0)
摘要:n<=100000个房容量Ai,m<=100000头牛分别要占Li~Ri的房,求能同时满足的牛最多有多少。 先把这些各种各样要求的牛排个序观察一下,可以发现,如果若干头牛的Li是一样的,而Li处的容量不允许它们同时放,这时就要舍弃Ri大的那几头,因为价值相同,舍弃谁都不会影响当前的答案,但Ri大的对 阅读全文
posted @ 2017-07-21 10:58 Blue233333 阅读(174) 评论(0) 推荐(0)
摘要:n头牛,第i头要SPF(某个参数)在Lowi到Highi的药,药m种每种SPF为Vi,数量为Numi,求最多能满足几头牛。 方法一:什么都看不出来,只知道第i头牛能和一些药匹配,于是网络流,牛向药连容量1的边,起点向牛容量1,药向终点容量为药数量,最大流。 1 #include<cstdio> 2 阅读全文
posted @ 2017-07-11 17:25 Blue233333 阅读(205) 评论(0) 推荐(0)