枚举算法

今天开始把算法学习时候的一些总结记录在博客,争取经过一段时间之后有一套系统化的学习总结。

今天学习枚举算法:

参考https://oi-wiki.org/basic/enumerate/

最后的优化:

// 要求 a 数组中的数的绝对值都小于 MAXN
bool met[MAXN * 2];
// 初始化 met 数组为 0;
memset(met, 0, sizeof(met));
for (int i = 0; i < n; ++i) {
  if (met[MAXN - a[i]]) ++ans;
  // 为了避免负数下标
  met[a[i] + MAXN] = 1;
}

解读:

if (met[MAXN - a[i]])如果满足,说明a[i] + MAXN被记录过一次,也就是a[i]的相反数(-a[i])在前面出现过,所以能构成一对相反数。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值