『程设解体报告』球体问题、修剪草坪、合并果子、扫雷

球体问题


参考百度百科中球缺的公式

http://baike.baidu.com/view/810951.htm

有了这个公式,表面积和体积就迎刃而解

至于能否浮起来,就是高中物理了……


修剪草坪


这道题目,倒是想了一段时间,然后有这么一个猜想,每一个元素得是该列或者该行的最大值,才能满足修剪的条件

仅仅是猜想,但是这样写的代码还是AC了,至于猜想的证明…………(哪位大神能给个证明)

PS:这道题貌似是今年新题,并且是偏想的(抖胆猜测是机智的Eureka出的题目)


合并果子


题目大意很简单,使用贪心直接可以水过,

先用qsort做一个快排,然后合并最小的两个,每次合并之后,把合并之后的数字放到合适的位置,时间复杂度o(n2)。


修正版,作为一道NOIP的题目,大数据肯定是有的,10000的数据,n^2的复杂度肯定过不了(不知为何poj3253那道题20000用上面方法都过了)

快排还是用了,然后另外开了一个数组记录合并好的堆,原始堆为a,合并堆为b,因为每次合并之后,肯定比之前的合并堆数据要大,所以就成了一个优先队列,

然后就判断min(合并两个原始堆,合并原始堆和合并堆,合并两个合并堆),再根据min的取值移动两个队列的指针即可。

在合并过程中的时间复杂度为o(n),但是因为之前有快排的o(nlogn)时间复杂度,所以整体时间复杂度还是o(nlogn)

ps:但愿不会被rejudge掉……


扫雷


c语言平时作业做过这道题目,容易出现的错误就是数组越位,需要在上下左右各添一行或者一列,然后就能有效防止数组越位,

另外一个代码美化的方法,就是开两个方向数组,然后使用方向数组对八个方向进行访问。

int tx[8] = {-1, 0, 1, -1, 1, -1, 0, 1};
int ty[8] = {-1, -1, -1, 0, 0, 1, 1, 1};
for( t = 0; t < 8; t++ )
{
	cnt[x+tx[t]][y+ty[t]]++;
}



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值