Nod题解汇总

2387

对于这个题目,经过观察之后会发现一定先完成费时比较少任务最后的结果会更优,那么我们首先对所有的任务从小到大排序,题目中说最后d分钟效率会翻倍,那么就是最后d当做2*d分钟使用,即总时间为c+d分钟,那么我们从小到大枚举任务,每次从总时间内减去当前任务需要的时间,如果减去之后为负数,退出循环,否则答案+1。

对于样例而言,总的时间变成了10+5=15分钟

我们从小到大枚举任务,即 1 2 8 10

最终只能完成前三个任务。

时间复杂度O(nlogn),空间复杂度O(1)

 2388

首先考虑一维的情况非常简单,答案就是中位数,然后如果n是偶数,那么中 间的2个数字之间的数字都可以。

对于二维的情况,如果是曼哈顿距离 |x_1-x_2| + |y_1 - y_2|,那么可以两个方向分别考虑。而这个是切比雪夫距离 max(|x_1 - x_2|, |y_1 - y_2|) ,切比雪夫距离和曼哈顿距离是可以互相转化的,可以通过 (x , y) \rightarrow (x + y, x - y) 的方式,转化为曼哈顿距离,之后可以分别对X坐标和Y坐标进行计算。

然后这样会有一点小问题,就是如果两个方向上的中位数,奇偶性不同那么 转换回去会出现0.5的情况。比如数据

4

0 0

0 1

1 0

1 1

最优解是 0.5 0.5 ,不是整数。 这个时候就检查一下最优解最近的整点(横坐标 ± 0.5, 纵坐标 ± 0.5)。

然后另一个情况,就是有多解的情况相当于要求 x+y 在 [X_{ \frac{n}{2} },X_{ \frac{n}{2}+1} ] 区间内,x-y[Y_{\frac{n}{2}},Y_{\frac{n}{2}+1}] 区间内。这个时候任然需要x+y 和x-y的奇偶性相同,即问题转化成了数区间内,奇数的个数 和偶数的个数,那么贡献为X_{even}*Y_{even}+X_{odd}*Y_{odd}

时间复杂度为O(nlogn) ,空间复杂度为O(n)
 

2385

首先面积最大的时候一定是正十七边形,那么我们现在只需要知道这个正十七边形怎么计算即可:

首先把十七边形分成十七个小三角形,对于每个三角形,面积为 r*sin(\frac{\pi}{17})*r*cos(\frac{\pi}{17}),那么我们乘以17即可得到最后的面积,注意这里\pi=acos(-1.0)

2384

观察题目数据范围,可以得到这题大致是递推或者有循环节,经过推导发现递推式为a[i]=(2*a[i-1]+a[i-3])%p

,由于数据范围很大,我们可以用矩阵快速幂来优化这个题目,构建矩阵

A=\begin{pmatrix} a_2 & a_0 & a_1 \\ 0 & 0 & 0 \\ 0 & 0 & 0 \end{pmatrix}  

B=\begin{pmatrix} 2 & 0 &1 \\ 1 & 0 & 0 \\ 0 & 1 & 0 \end{pmatrix}

那么最后的结果为A*B^{n-2} mod p 的第一项 ,利用矩阵快速幂可以优化到O(27*logn)

2383

首先题目给出了相关的背景,提示我们可以使用高维前缀和来做,观察给定的数据格式,可以知道我们可以根据二进制位来区分位数,从小到大,对于每一位,他们互不影响,因此我们分别独立考虑去求当前贡献,对于符合i \& j==j的二进制位j,我们计算他的贡献为a[i]+=a[i \oplus j],其中\oplus为异或符号。那么最终的时间复杂度为O(nlogn)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值