随笔分类 - 贪心
贪心
摘要:很多dalao用的DP 但是贪心完全是可行的。 枚举一下有多少天请小红吃饭,然后贪心的把旅行的天数尽量平均分开即可。 #include <iostream> #include <climits> #include <cstdio> #include <cstring> using namespace
阅读全文
摘要:d题大概是让有n个矩阵,可以随意平移,问删除m个矩阵后最大的面积交是多少。 其实思路很显然。 肯定删x个a最小的和m-x个b最小的。 然后我们先删m个a最小的,然后逐渐少删a,开始删b,用个堆维护b的最小值。 然后就可以了。 代码并没有测。 #include <iostream> #include
阅读全文
摘要:构造题。 我递归构造的,发现如果N>3的话就优先删奇数,然后就把删完的提取一个公约数2,再重复操作即可。 具体原因我觉得是因为对于一个长度大于3的序列,2的倍数总是最多,要令字典序最大,所以就把非2的倍数全删了。 假设不删奇数,剩下的数要提取出来非1的公因数,要删的数一定比删奇数删的起码多1,出现比
阅读全文
摘要:当遇到需要将主存单元加进cache的时候,就看cache里是否满了,满了的话,就删除离最靠后的那一个,这样一定最优。但是网上博客的代码太长了。。。其实只需要判断一下当前的优先队列的top是否仍在cache中即可。 (重题:[POI2005]SAM-Toy Cars,AC数+=2 #include <
阅读全文
摘要:后两道题没交上去。。。md T1 dijkstra+求哈密顿路径的水题,没开long long挂了两个点。 cpp include include include include define int long long using namespace std; const int N=50005,
阅读全文
摘要:贪心。 一开始以为和田忌赛马的策略一样,码码码。。。突然发现不太对,如果就这的把最弱的卖了多亏啊。。。所以先比对一下自己家最弱的能不能干掉对手最弱的,如果不能再判一下能不能和最强的打成平局。如果不能就消耗了对面最强的即可。
阅读全文
摘要:贪心+优先队列。 先按照结束时间从小到大排个序,然后把施工时间一个个加进去,如果发现不行了,就看看priority_queue的top是不是比现在的要大,如果是就转修现在的即可。 cpp include include include include include using namespace
阅读全文
摘要:盲人oi,the best oi T1: DP+贪心 贪心地让以i为结尾的序列的最后一段最小,直接转移。 cpp include const int N=200005; long long n,h[N],f[N],sum[N],las[N]; int main(){ freopen("tower.i
阅读全文
摘要:因为x =2,所以一个数每乘x,二进制位总会往前推至少一位。因此把所有的x贪心地乘在一个上面即可。 用前缀后缀和优化一下即可。 迷:为什么手写pow就过了,stl的pow就过不了?? cpp include include include using namespace std; long long
阅读全文
摘要:~~AK爷GhostCai的电脑又蓝屏了Orz~~ 贪心题,确定一个maxh,限定h不大于一个值。枚举maxh。 check的时候的细节很多: 1.h maxh但w include include using namespace std; const int N=1005; int n,w[N],h
阅读全文
摘要:~~刷水题~~做几道入门贪心题预热。。。 找联通块里字典序最小的放到最前面即可。~~记得写传递闭包~~ cpp include include include using namespace std; const int N=350; int n,a[N],pos[N],g[N][N]; int m
阅读全文
摘要:贪心水题。 思路:将原排列弄成有序数列的最少操作,转化一下思维就是不用操作的最多数字。 LIS? 不止。 如 1 2 4 5 3,ans=2,但n lis=1 所以要求的是连续的lis。 O(n)求连续lis:做一个类似桶(?)的东西,递推一下即可,看一下代码就懂了。。 cpp include in
阅读全文
摘要:又咸鱼了。 原因: 1:策略失误,死磕最后一道题,觉得非常可做,结果别的题只写了暴力,最后一道题是& |集训队作业题Orz。。。。爆零gg 2:组合数学的操作很弱啊。。。做的题看似难度大,实际上只是用到的算法难,实际上思维难度并不大。一遇到包装起来的题就gg T1: 正难则反 从后往前思考放珠子,最
阅读全文
摘要:可证贪心运送到中间的仓库最优,因为只能运送到相邻的仓库 证明:http://www.cnblogs.com/five20/p/8869948.html cpp //Writer:jr HSZ;%%%WJMZBMR include define int long long define reg reg
阅读全文
摘要:贪心 反证法 放在旧的柱子上一定比新开一个优 cpp include include include std::vector d[60]; int n,ans=1,cnt; bool sqr[5005]; int main() { scanf("%d",&n); for(int i=1;i i
阅读全文
摘要:题面见文件 T1: 一道贪心大水题,然后我wa了。。。 就是把它按照结束时间排个序,然后乱搞一下就行了 T3 一道线段树的操作题。也可以分块 线段树维护最长连续上升子序列裸题,写挂交暴力。 cpp include include include using std::max; const int N
阅读全文