2017.07.08【NOIP提高组】模拟赛B组

T1:找规律。

一个长有a个点,宽有b个点的矩阵,以这个矩阵的格点为顶点且边平行于长或宽的长方形的个数为a*(a-1)/2*b*(b-1)/2。

我们假设题目给出的n,m满足n<=m,那么我们可以枚举放置矩阵的宽i,因为一个矩阵确定下来之后最优的方案就是沿每一列放置,那么我们可以得出一下一个放置矩阵:

*****

*****

****

我们可以通过容斥原理来计算总方案数。


T2:并查集。

由于删边很难,所以我们可以用增边的方式去做,那么这是最容易想到的方法就是并查集。要注意的是程序要打的优美点,因为要卡时间。


总结:

1、当一些问题正着做很难时,我们可以用逆向思维倒着做,这样问题或许会变得简单。正所谓正难则反。


T3:bfs+优化。

对每一个点都bfs一次,加上的优化也不难,有两点:

1、如果一个山峰的高度是最高高度,那么这个山峰一定是OK的。

2、如果一个山峰的高度小于d,这个山峰又不是最高山峰,那么这个山峰就一定是不OK的。


总结:

1、比赛时因为用了memset赋初始值,所以超时30分。为什么memset会超时呢?原因是memset比循环快一点,但不会快很多。用几次是不会超时的,但是像这道题一样用几万次就耗时很大,以后要注意慎用memset。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值