随笔分类 -  算法_贪心

摘要:思维。 阅读全文
posted @ 2020-01-19 19:28 LuitaryiJack 阅读(194) 评论(0) 推荐(0)
摘要:给定长度为 $n$ 序列 $a[i]$ ,每次询问区间 $[l,r]$ ,并给定 $b,x$ 中的一个数 $p=a[i]$ ,使得最大化 $b \bigoplus p^x$ 主席树+按位贪心。 我们可以直接贪每一位长什么样子,然后再主席树上区间查询即可。 2019.11.23 阅读全文
posted @ 2019-11-23 21:47 LuitaryiJack 阅读(101) 评论(0) 推荐(0)
摘要:ri,被黄题虐。 思路:贪心?? 提交:2次 错因:没有特判 题解: 先排序。 最小代价:固定区间长度为$n$,我们扫一遍数组看区间最多包含几个数,设为 $mx$ ,答案就是$n mx+1$;然而还要特判一种,见下。 此时答案是2,但是我们会算成1 最大代价:考虑一定是往一边缩的感觉,于是是端点先跳 阅读全文
posted @ 2019-10-18 21:46 LuitaryiJack 阅读(423) 评论(0) 推荐(0)
摘要:被卡+第一次贪心拿分 阅读全文
posted @ 2019-09-22 16:50 LuitaryiJack 阅读(152) 评论(0) 推荐(0)
摘要:A1 先贪心的(可能你们觉得很显然),我们直接从前往后扫,并且让每个区间尽量长。 如何判断?差的 gcd 不为 1 + map 判重复元素。 A3 DP + 堆优化 $f[i]=\min(\sum_{j=i k}^i f[j] + max(b[j],s[i] s[j]))$ 发现每个点在又收税转为路 阅读全文
posted @ 2019-09-16 23:27 LuitaryiJack 阅读(277) 评论(3) 推荐(0)
摘要:A1 100pts 考试时暴力打表+发现三次函数于是暴力解方程。 更好的: 发现是在枚举子矩形并求面积,于是有: $\sum_{x}^n\sum_{y}^m x y \times (n x+1) (m y+1)$ 设$f(x)=\sum_{x}^n x (n x+1)$ $=1 n + 2 (n 1 阅读全文
posted @ 2019-09-16 19:16 LuitaryiJack 阅读(370) 评论(1) 推荐(0)
摘要:思路:堆贪心 提交:1次 题解: 先按时间$sort$,然后如果能修就直接扔堆里,不能修取堆顶比一下时间长短,把时间短的扔进堆; cpp include include include include define ull unsigned long long define ll long long 阅读全文
posted @ 2019-07-22 17:42 LuitaryiJack 阅读(172) 评论(0) 推荐(1)
摘要:思路:贪心 提交:1次(看了题解$QwQ$) 题解: 若我方最弱可以干掉对方最弱,则干; 否则若我方最强可以干掉对方最强,则干; 否则若我方最弱与对方最强平手,则平; 其实貌似一二条是可以互换的,主要说明最后一条:相当于用最垃圾的去换掉对方最强的。 2019.07.21 阅读全文
posted @ 2019-07-21 22:47 LuitaryiJack 阅读(254) 评论(0) 推荐(1)
摘要:思路:二分+贪心 提交次数:10次以上 错因:刚开始以为二分(边界,$+1or-1$)写错了,调了半天,后来才发现是$ck()$写错了。开始只判了最后是否小于零,而应该中间一旦小于零就$return\space false$ 题解: 二分天数(单调性显然)。 $ck(int x)$: 首先$x$天内 阅读全文
posted @ 2019-07-14 23:55 LuitaryiJack 阅读(151) 评论(0) 推荐(0)
摘要:思路:找规律?$or$贪心。 提交:1次 题解: 发现:若可以构成$X0000$,答案绝对不会再在数字最后把$0$改成其他数; 若可以构成$XX50...0$更优。 所以左端点增加的步长是增加的($inc=pow(10,x),x$递增)。 所以去掉了一些不必要的枚举。 阅读全文
posted @ 2019-07-14 23:33 LuitaryiJack 阅读(135) 评论(0) 推荐(0)
摘要:思路:按位贪心。 提交:1次 题解: 可以先处理出对于全$0$串和全$1$串最后每一位的结果。(每一位 从 $0$ $or$ $1$ 变成 $0$ $or$ $1$) 对于每一位,若不能变成$1$,则不选; 若可以变成$1$,优先让$0$变成$1$(使代价尽量小);若不能让$0$变成$1$,则$1$ 阅读全文
posted @ 2019-07-14 23:27 LuitaryiJack 阅读(147) 评论(0) 推荐(0)
摘要:题意: Description 有n件商品,选出其中的k个,要求它们的总价为奇数,求最大可能的总价。 有n件商品,选出其中的k个,要求它们的总价为奇数,求最大可能的总价。 Input 第一行一个整数n(1<=n<=1000000),表示商品数量。接下来一行有n个整数,表示每件商品的价格,范围在[1, 阅读全文
posted @ 2019-07-14 13:11 LuitaryiJack 阅读(225) 评论(0) 推荐(0)
摘要:用大根堆和小根堆分别存放前$i-1$大的元素前$k-i$小的元素。 将当前序列的元素压入最小堆,如果最小堆的最小数大于最大堆的最大数则进行交换,保证最大堆中的所有数小于最小堆。 因为$i$值每进行一次自增$1$,所以每次$get$操作后将小根堆顶弹出存入大根堆。 2019.06.13 阅读全文
posted @ 2019-06-13 00:29 LuitaryiJack 阅读(154) 评论(0) 推荐(1)
摘要:首先向颜神犇致敬。。。还是自己太菜,又不仔细思考,上来就翻题解$qwq$ 首先有一种贪心方法:即,$ans=2*max(dirty_i)$ 证明:若现在的答案为$ans$,考虑一个新的数$x$对答案的贡献 然后有一种很强的做法 再次致敬。。。在$OI$中如果不能仔细思考,也只能$retire$了 2 阅读全文
posted @ 2019-06-09 23:31 LuitaryiJack 阅读(146) 评论(0) 推荐(0)
摘要:好吧。。。一直咕。。现在才过。。。被卡常卡到爆。。。 写的垃圾版本,$n^2$无脑删边。。可以发现走出来的是棵树。。。更优秀的及数据加强版先咕着。。。一定写。qwq 2019.06.04 阅读全文
posted @ 2019-06-04 00:16 LuitaryiJack 阅读(231) 评论(0) 推荐(1)
摘要:细节题?、、、调了半天。。。。 可以发现,每一次从缓存中删除的主存一定是下次访问最晚的,可以用优先队列来处理。。。还有要离散化。。。还有链表末尾要多建一些点、、、否则会死的很惨、、、 2019.04.24 阅读全文
posted @ 2019-04-24 23:28 LuitaryiJack 阅读(164) 评论(0) 推荐(0)
摘要:好久不做这种题了。。。 存一下每个点的位置和时间,由于达到某个位置跟之前去哪里AK的无关,所以在时间超限后,可以用大根堆弹掉之前消耗时间最大的,来更新答案,相当于去掉之前花费最大的,直到时间不在超限。 2019.04.24 阅读全文
posted @ 2019-04-24 11:24 LuitaryiJack 阅读(179) 评论(0) 推荐(0)
该文被密码保护。
posted @ 2019-04-18 00:26 LuitaryiJack 阅读(14) 评论(0) 推荐(0)
摘要:贪它,再大力DP(话说觉得此题简单的真的是大佬QAQ)我想了两天。。。QWQ 贪心:吃饭慢的先打饭(不太会证。。。) DP:f[i][j]表示前i个人,在1号窗口打饭的总时间时j,的最短时间 确定i的时候,通过j,可以算出在二号窗口打饭的总时间。。 所以有: 第i个人在1号窗口:if(j>=a[i] 阅读全文
posted @ 2019-04-08 01:07 LuitaryiJack 阅读(224) 评论(0) 推荐(0)
摘要:就是堆+链表,十分像 数据备份 对吧? 把相邻的正数和相邻的负数合并成一整个正数块和负数块,最后只剩一些交替相间的正块与负块了吧? 显然,正块的个数<=m时,全部选走就获得了最大权值,否则我们可能需要选一些负块来获得最优解。 然而弱不经风的我调了四个小时链表和预处理QAQ。。。 千万不要犯此种错误: 阅读全文
posted @ 2019-04-06 00:40 LuitaryiJack 阅读(160) 评论(0) 推荐(0)