贪心
fnliren
一位无名没脑老年退役oier
展开
-
[NOMURA Programming Competition 2020]E - Binary Programming
Portal先考虑倒着操作,也就是变成每次删除后统计贡献,最后加上原序列的贡献即可。由于显然可以将删除顺序看成一个排列,那么就考虑对这个排列进行dpdpdp。也就是设f(i)f(i)f(i)表示仅考虑前iii个字符时的最大权值(不考虑原序列的贡献),转移到f(i+1)f(i+1)f(i+1)就是新增第i+1i+1i+1个字符。当新增字符为111时,通过贪心可以发现一定是最后删除最优,所以它新增的贡献就为⌈i2⌉\lceil\frac{i}{2}\rceil⌈2i⌉。而当新增字符为000时,贡献其实就是原创 2020-06-05 11:43:40 · 321 阅读 · 0 评论 -
[AtCoder Grand Contest 040]D - Balance Beam
Portal首先考虑一个固定的顺序如何计算概率,就是设ddd为maxi=1n∑j=1ib(j)−a(j)max_{i=1}^n\sum_{j=1}^ib(j)-a(j)maxi=1n∑j=1ib(j)−a(j),然后RingoRingoRingo从起点走ddd秒的距离占总长的比例就是答案了。证明显然。整数部分指那些被完全经过的平衡木,小数部分指那个被部分经过的平衡木(可能不存在)。然后先...原创 2019-12-12 16:22:50 · 349 阅读 · 0 评论 -
[bzoj 2525--Poi2011]Dynamite
Byteotian Cave的结构是一棵N个节点的树,其中某些点上面已经安置了炸药,现在需要点燃M个点上的引线引爆所有的炸药。某个点上的引线被点燃后的1单位时间内,在树上和它相邻的点的引线会被点燃。如果一个有炸药的点的引信被点燃,那么这个点上的炸药会爆炸。求引爆所有炸药的最短时间。好题啊。...原创 2019-05-06 13:39:57 · 208 阅读 · 0 评论 -
[bzoj 4976]宝石镶嵌
魔法师小Q拥有n个宝石,每个宝石的魔力依次为w_1,w_2,…,w_n。他想把这些宝石镶嵌到自己的法杖上,来提升法杖的威力。不幸的是,小Q的法杖上宝石镶嵌栏太少了,他必须扔掉k个宝石才能将剩下的宝石镶嵌上去。法杖的威力等于镶嵌在上面的所有宝石的魔力按位做或(OR)运算的结果,请写一个程序帮助小Q做出最佳的选择,使得法杖的威力最大。好吧,这道题看到或运算,就应该想到跟二进制有关。我们发现...原创 2018-03-23 07:58:29 · 230 阅读 · 0 评论 -
[bzoj 1193--HNOI2006]马步距离
在国际象棋和中国象棋中,马的移动规则相同,都是走“日”字,我们将这种移动方式称为马步移动。如图所示, 从标号为 0的点出发,可以经过一步马步移动达到标号为 1 的点,经过两步马步移动达到标号为 2 的点。任给 平面上的两点 p 和 s ,它们的坐标分别为(xp,yp) 和 (xs,ys) ,其中,xp,yp,xs,ys 均为整数。从 (xp,yp) 出发经过一步马步移动可以达到(xp+1,...原创 2018-03-10 15:56:01 · 346 阅读 · 0 评论 -
[bzoj 2426--HAOI2010]工厂选址
某地区有m座煤矿,其中第i号矿每年产量为ai吨,现有火力发电厂一个,每年需用煤b吨,每年运行的固定费用(包括折旧费,不包括煤的运费)为h元,每吨原煤从第i号矿运到原有发电厂的运费为Ci0(i=1,2,…,m)。 现规划新建一个发电厂,m座煤矿每年开采的原煤将全部供给这两座发电厂。现有n个备选的厂址。若在第j号备选厂址建新厂,每年运行的固定费用为hj元。每吨原煤从第i号矿运到j号备选厂址...原创 2018-03-10 11:36:19 · 290 阅读 · 0 评论 -
[bzoj 3174--TJOI2013]拯救小矮人
一群小矮人掉进了一个很深的陷阱里,由于太矮爬不上来,于是他们决定搭一个人梯。即:一个小矮人站在另一小矮人的肩膀上,知道最顶端的小矮人伸直胳膊可以碰到陷阱口。对于每一个小矮人,我们知道他从脚到肩膀的高度Ai,并且他的胳膊长度为Bi。陷阱深度为H。如果我们利用矮人1,矮人2,矮人3,。。。矮人k搭一个梯子,满足A1+A2+A3+….+Ak+Bk>=H,那么矮人k就可以离开陷阱逃跑了,一旦一...原创 2018-02-08 14:38:12 · 231 阅读 · 0 评论 -
[bzoj 1029--JSOI2007]建筑抢修
有n个点,每个点有两个值(x,y),意为这个点在总共y的时间内用x时间才算成功。问成功的点的数量的最大值。这道题思路为贪心,我们用一个multiset来记录,这个东东的好处是有很多操作,自动排序,并且还超快。注释看代码。#include<cstdio>#include<cstring>#include<algorithm>#include<iostream>#include<set>us原创 2016-09-21 13:57:32 · 867 阅读 · 0 评论 -
[bzoj 1034--ZJOI2008]泡泡堂
Description 有两个长度为n的数列(a,b)。将a数列打乱顺序变成c数列,与b数列比较。如果c[i]大于b[i],分数加2;如果相等,分数加1;如果小于,不变。求所得的分数的最小值与最大值。 Input 输入的第一行为一个整数n,表示数列的长度。接下来n行,每行一个整数,描述了a[i]。接下来n行,每行一个整数,描述了b[i]。 Output原创 2016-09-29 13:45:16 · 713 阅读 · 0 评论