随笔分类 -  基础—贪心

该文被密码保护。
posted @ 2018-09-23 16:28 lokiii 阅读(5) 评论(0) 推荐(0)
摘要:![](https://img2018.cnblogs.com/blog/1242898/201809/1242898-20180920174813398-1306255611.png) ```cpp #include #include #include using namespace std; const int N=1000005; int n,a[N],b[N]; long long m,... 阅读全文
posted @ 2018-09-20 17:49 lokiii 阅读(239) 评论(0) 推荐(0)
摘要:一眼二分。然后重点是树上贪心部分 长得像dp一样,设mn为子树内已炸点的最浅点,mx为子树内没有炸并且需要炸的最深点,然后转移直接从子树继承即可 然后是判断当前u点是否需要炸,当mx[u]+mn[u] include using namespace std; const int N=300005; 阅读全文
posted @ 2018-09-15 21:07 lokiii 阅读(187) 评论(0) 推荐(0)
摘要:和数据备份差不多 设二元组(i,a[i]),开一个大根堆把二元组塞进去,以len排序,每次取出一个二元组 因为单纯的贪心是不行的,所以设计一个“反悔”操作。 记录二元组的前驱pr后继ne,把拿出来的二元组的len加进答案,然后把当前二元组和它的前驱后继当成一个,也就是len[x]=a[pr[x]]+ 阅读全文
posted @ 2018-09-13 21:23 lokiii 阅读(167) 评论(0) 推荐(0)
摘要:知道按位贪心但是不知道怎么贪…… 求一个a的异或前缀和s,然后按位从大到小贪心,ans的当前位能为0的条件是s中有 =m个位置这一位为0且没有flag,并且s[n]的这一位为0 如果符合要求,那么把s中这一位不为0的位置都打上flag,表示这些点不能作为区间断点了(如果作为断点的话这一位就要为1了, 阅读全文
posted @ 2018-09-12 20:16 lokiii 阅读(163) 评论(0) 推荐(0)
摘要:原来cerr在bzoj上回RE?! 从高位到低位贪心,注意取01结果相同时取0,这样就可以去掉limit了 cpp include include using namespace std; const int N=100005; int n,m,b[N][35],a[N],tot,ans,mx; c 阅读全文
posted @ 2018-09-11 21:17 lokiii 阅读(168) 评论(0) 推荐(0)
摘要:贪心,一边读入一边更新mn,用mn更新答案,mn每次加s cpp include include using namespace std; int n,s,mn=1e9; long long ans; int main() { scanf("%d%d",&n,&s); for(int i=1,w,c 阅读全文
posted @ 2018-09-04 21:35 lokiii 阅读(102) 评论(0) 推荐(0)
摘要:二分答案,贪心判断,洛谷上要开long long cpp include include using namespace std; const int N=50005; int n,m,a[N],b[N]; int read() { int r=0,f=1; char p=getchar(); wh 阅读全文
posted @ 2018-09-01 19:52 lokiii 阅读(157) 评论(0) 推荐(0)
摘要:第一想法是按照结束时间贪心,但是这样有反例 所以先按照t贪心,能选则选,把选的楼的持续时间放进大根堆里,当当前的楼不能选的时候如果当前的持续时间比大根堆里最大的要小,就用这个替换最大,这样总数不变但是时间缩短了 cpp include include include include using na 阅读全文
posted @ 2018-08-02 18:38 lokiii 阅读(144) 评论(0) 推荐(0)
摘要:和合并果子类似(但是是第一次听说哈夫曼树这种东西) 做法也类似,就是因为不用知道树的形态,所以贪心的把最小的k个点合为一个节点,然后依次向上累加即可,具体做法同合并果子(但是使用优先队列 注意这里可能不能被k 1整除,需要补一些出现次数0的单词 cpp include include include 阅读全文
posted @ 2018-07-31 23:07 lokiii 阅读(162) 评论(0) 推荐(0)
摘要:是贪心 先把两个数组排序,然后贪心的选让a数组占优的(如果没有就算输),这是最大值,最小值是2n 贪心选b数组占优 cpp include include include using namespace std; const int N=100005; int n,a[N],b[N],w,ans1, 阅读全文
posted @ 2018-07-28 21:50 lokiii 阅读(121) 评论(0) 推荐(0)
该文被密码保护。
posted @ 2018-07-19 10:41 lokiii 阅读(3) 评论(0) 推荐(0)
该文被密码保护。
posted @ 2018-07-10 22:45 lokiii 阅读(4) 评论(0) 推荐(0)
该文被密码保护。
posted @ 2018-07-03 11:00 lokiii 阅读(6) 评论(0) 推荐(1)
摘要:1 include using namespace std; const int N=105; const long long inf=1e18; long long T,n,m; struct qwe { long long a[N][N]; qwe operator (const qwe &b) 阅读全文
posted @ 2018-07-01 09:41 lokiii 阅读(245) 评论(0) 推荐(0)
摘要:不知道该叫贪心还是dp 倒着来,记f[0][i],f[1][i]分别为先手和后手从n走到i的最大值。先手显然是取最大的,当后手取到比先手大的时候就交换 cpp include include using namespace std; const int N=700005; int n,a[N],w= 阅读全文
posted @ 2018-06-30 16:13 lokiii 阅读(138) 评论(0) 推荐(0)
摘要:按结束时间排序,然后开个线段树,按照排序后的牛群贪心的选 贪心的依据是选哪头牛都是选,不如给后面的多省一点空间 cpp include include include using namespace std; const int N=50005; int m,n,c,ans; struct xds 阅读全文
posted @ 2018-06-30 08:57 lokiii 阅读(113) 评论(0) 推荐(0)
摘要:参考:http://www.cnblogs.com/lidaxin/p/5240220.html 虽然splay会方便很多,但是~~懒得写~~,于是写了cdq 首先要想到贪心的思路,因为如果在某天买入是能得到最大收益的,那么应该用所有钱去买,相对的如果在某天卖出能得到最大收益,那么应该全部卖出 方便 阅读全文
posted @ 2018-06-19 17:24 lokiii 阅读(170) 评论(0) 推荐(0)
摘要:本来是冲着搜索去的……其实可以贪心 因为能改变第一位的只有第一位和第二位,然后改完之后后面的同理,也就是说只要贪心的推一遍就可以 但是注意要在翻第一个和不翻第一个之间取个min cpp include include include using namespace std; const int N= 阅读全文
posted @ 2018-06-07 16:11 lokiii 阅读(137) 评论(0) 推荐(0)
摘要:A. Infinity Gauntlet 模拟就行了(不过这个题面啊……) cpp include include include include using namespace std; int n; string s[10]; maphas; mapv; int main() { has["pu 阅读全文
posted @ 2018-06-02 14:36 lokiii 阅读(172) 评论(0) 推荐(0)