BZOJ-1923-外星千足虫-SDOI2010

描述

这里写图片描述


分析

  • 首先看上去这貌似是一个高斯消元的题目, 直觉吧…
  • 每次给出的就相当于是一个方程. 然后很容易想到n条虫子n个x, x_i的系数为0表示这个方程中没有i, 否则为1. 然后系数乘以相应的x再相加模2就是输入的那个结果了.
  • 然后就会发现有两个问题, 首先模怎么办, 然后时间复杂度太大了, 这种加法方程组的高斯消元复杂度是O(n^3)的.
  • 突然想到——加法模2就相当于异或!
  • 所以用高斯消元解这个异或方程组就行了, O(n*m)
  • 一开始分析复杂度分析错了, 以为是O(n*m*二进制位数), 而二进制位数就等于n, 那么还是超时…其实m*二进制位数是不科学的, m表示找到一个合法的方程去消元, 找到就退出了, 并不是每次找都进行一次消元.
  • 还有一次错是因为直接我让高斯消元直接返回i, 也就是最后一次找到的方程的序号.
    • 首先i应该+1因为我从0做下标.
    • 然后+1也不对因为i+1是最后一次用的方程, 而求的是第几次统计后得出解来. 是用到的方程中最靠后的那个.

代码

https://code.csdn.net/snippets/621146

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值