Codeforces#387div.2 2017-01-06 practice (Done)

A  Display Size

水题

代码:传送门


B Mammoth's Genome Decoding

题意:给一串基因,由ACGT四个字母,部分丢失的由"?"代替,现要求将"?"补上,使得基因内各元素数目相等.任意输出一种情况

题解:每种元素个数相等,则基因总数为4的倍数,除不开就输出"-1",最后每种元素个数为总数/4,则我们只要不够的补上就行了.

代码:传送门


C Servers

题意:由n个机器,编号1-n,现有g各工作,由k(该工作需要的机器数),t(该工作开始的时间),d(该工作耗时),机器工作时不能进行别的工作,每当一项工作被发起时,要求在当前闲置机器中找编号较小的k个进行工作,如果闲置机器不足则不能进行工作(跳过),此时输出-1,若能工作则输出编号的和

题解:我用了两个优先队列,这样我好理解些,但是应该是数组更好些,数据水,不然优先队列有T的风险.思路就是一个队列按顺序排好闲置机器,一个队列按结束时间排工作中的机器,每当一个工作发起时,先把工作完成的机器放到闲置队列里,再看能不能工作.

代码:传送门


D  Winter Is Coming

题意:给出n天的气温,现有两种轮胎,夏天轮胎可以无限时长使用,但是只能再零上(包括0)的温度时平安驾驶,冬天轮胎什么天都能安全驾驶,但只能使用k天(无论温度零上还是零下都可以),可以不连续使用.现车子已经安装了夏天轮胎,问若要在n天内都安全驾驶,问最少需要换多少次轮胎.

题解:我们首先判断最坏打算下(每一次变天都换轮胎)的换胎次数为sum,记录从第一次进入零下温度后,所遇到的连续的零上温度时段的天数,因为在第一次进入零下之前.都不需要换轮胎,则当冬天轮胎能够跑完所有零下温度并且还有结余的话,则每当其能跑完一个零上时段,换胎次数都可以减二(不用由冬胎换成夏胎再换成冬胎),特别的,若冬天结束前的那一个时段为零上,则如果用冬胎跑的话,只能减去一次换胎次数(因为不需要再从夏胎换成冬胎了). 

   按照贪心的思想,我们先减去天数的以尽可能多的减少换胎次数,即把各个零上时段按升序排序即可,再用冬胎结余天数来判断.

   另外,必须对冬天全为零上的情况进行特判,不然会T.

   然后,我好像还找到了一个bug,有一发前两个样例的答案都不对,我交上去,居然也A了.

代码:传送门


   Comments

这题其实很水啊,题目没啥好说的,过程也就是个堆栈的使用,感觉是要比D题好想一些,一开始还以为vector开1e6会T,没想到居然也能过.

代码:传送门

你可能感兴趣的:(Codeforces)