网页资讯视频图片知道文库贴吧地图采购
进入贴吧全吧搜索

 
 
 
日一二三四五六
       
       
       
       
       
       

签到排名:今日本吧第个签到,

本吧因你更精彩,明天继续来努力!

本吧签到人数:0

一键签到
成为超级会员,使用一键签到
一键签到
本月漏签0次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行补签。
连续签到:天  累计签到:天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
07月24日漏签0天
noip吧 关注:25,167贴子:642,087
  • 看贴

  • 图片

  • 吧主推荐

  • 视频

  • 游戏

  • 1 2 下一页 尾页
  • 39回复贴,共2页
  • ,跳到 页  
<<返回noip吧
>0< 加载中...

NOI Day1第一题简要题解

  • 只看楼主
  • 收藏

  • 回复
  • mikeni2006
  • NOI铜牌
    10
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
鉴于NOI吧已死,LZ就来这里讲(pian)讲(pian)题(jing)目(yan) = =。。。
首先呢,暴力O(N^2D)就不用说了……压位的暴力也不用说了……不过k=3的位运算优化还是要略微费点脑筋的……
接下来的高端做法呢大概我现在想到看到的就两种:
1)标程的做法:随机
先看k=2。以下在模2意义下讨论。假设以这些向量为列向量的矩阵为A=(a1,a2,...,an),那么这题也就是说要找出A'*A除了对角线上的元素以外为0的一个元素,这里A'是将A行列对换所得矩阵(转置)。首先要去掉【不在对角线】的限制。这个比较简单,暴力求出对角线上的元素,然后如果该元素为0,在新矩阵B的这个位置放上1。当然B是个对角矩阵,只有对角线上有元素,可以用数组存……下面其实就是寻找J-A'*A-B的非零元,其中J是所有元素都是1的矩阵。注意到这个矩阵我们其实不能算出来,但是对于向量X,A'*A*X是可以很快算出的。这是由于矩阵乘法有结合律,右结合地算(A'*(A*X))复杂度只有O(ND)。于是随机一个向量X,求J*X-A'*A*X-B*X,三项都能很快求出,然后看所得的向量哪个元素不为0,所求的位置肯定在A'*A对应的那一行上,然后暴力枚举即可。复杂度是O(CND),其中C是随机次数。
再看k=3。k=3的问题在于,如果看A'*A,这题还是要求一个不在对角线上的零元素,但是A'*A每个元素在模3意义下除了可能为0、1,还可能是2,不能转化为求J-A'*A-B的非零元,比较难办。注意到1*1=1,2*2=1(mod 3),内积平方不是0就是1,因而我们可以考虑判定是否内积平方是0。然而(x1y1+...+xnyn)^2=x1^2y1^2+x1x2y1y2+...+x1xny1yn+x2x1y2y1+...+x2xny2yn+...+xnx1yny1+...+xn^2yn^2,(x1,...,xn)与(y1,...,yn)内积平方转化成(x1^2,x1x2,...,x1xn,x2x1,...,x2xn,xnx1,...,xn^2)与(y1^2,y1y2,...,y1yn,y2y1,...,y2yn,yny1,...,yn^2)的内积。这些导出向量是D^2维的,于是问题转化成D^2维下类似k=2的情况。复杂度是O(CND^2)。
另外对于非零矩阵,一次随机乘出来恰好是零向量的概率<=1/k(?),所以随机10次以后仍然判定失误的概率还是很低的。
=================================================================================
=====================对于只想AC的同学,以下的就不用看了。。。====================
===================================高能慎入。。==================================
=================================================================================
2)另一种确定性做法
还是先看k=2。如果真的没有两个向量正交,也就是A'*A除了对角线都是1,那么对角线上的0个数不可能多于D+1。这是由于rank(A'*A)<=rank(A),rank(A)<=D,所以rank(A'*A)<=D。又可以发现,如果对角线上有k个0,这k行向量组的秩最少为2[k/2]>=k-1。如果有多于D+1个0在对角线上,其秩必然大于D,矛盾。所以先把对角线上是0,也就是自身内积是0的向量单独分出来,这些向量若多于D+1个,其中肯定有与其他向量正交的向量。这时候将前D+2个与所有向量暴力检查一遍,如果找到了直接输出。下面只考虑自身内积为1的向量。用高斯消元求出这些向量的一个极大无关组,并同时求出每个向量在这个极大无关组下的坐标。首先检验,极大无关组内是否有正交的。对于其他向量,若X、Y是某两个向量在这个无关组下的坐标,那么由于该极大无关组度量矩阵是J,则它们的内积可以表示为X'*J*Y,可以发现,它们内积为1当且仅当X、Y每一维加起来都是奇数。但是,如果X(或Y)每一维加起来是偶数,那么X'*J*X已经为0,也就是它代表的向量的自身内积为0,矛盾。所以此时不可能找到正交向量对。时间复杂度:自身内积0的向量检查O(ND^2),高斯消元O(ND^2),检验O(D^3),总复杂度O(ND^2),比随机做法慢一截。
再看k=3。这里思路就差不多了,和之前随机做法一样转化成D^2维的问题,然后仿照之前的做。但是这里总复杂度要达到O(ND^4),对于这题完全无法承受。
最后是,此题完全可以构造只有一对向量正交的情况,所以不要抱有过多侥幸心理。。。
最后的最后是,如果有人能想到时间复杂度更低的随机/确定性做法,欢迎与我讨论。


  • weiwan1993
  • 初识程序
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
惊呆了


2025-07-24 19:06:20
广告
不感兴趣
开通SVIP免广告
  • 熙斯顿
  • 省选酱油
    8
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
好简要 已跪飞


  • 被遗忘的人
  • IOI银牌
    15
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
拜膜了


  • 乐乐闹太套
  • 提高一等
    7
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
前排膜拜


  • 爸爸
  • NOI银牌
    11
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼


  • onlycanit
  • 省选酱油
    8
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
nzm的贴怎能不顶


  • 肥肥
  • NOI银牌
    11
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
nd^2当场居然没几个人写..


2025-07-24 19:00:20
广告
不感兴趣
开通SVIP免广告
  • wuzhengkai
  • NOI银牌
    11
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼


  • WJMZBMR
  • NOI银牌
    11
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼


  • zjmfrank2012
  • 省选酱油
    8
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
orzzz


  • bigshax
  • 怒进省队
    9
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼


  • 断了の轨迹☆
  • 怒进省队
    9
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
顶


  • home游戏开发者
  • 提高二等
    6
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
牛人,有ac的代码吗


登录百度账号

扫二维码下载贴吧客户端

下载贴吧APP
看高清直播、视频!
  • 贴吧页面意见反馈
  • 违规贴吧举报反馈通道
  • 贴吧违规信息处理公示
  • 1 2 下一页 尾页
  • 39回复贴,共2页
  • ,跳到 页  
<<返回noip吧
分享到:
©2025 Baidu贴吧协议|隐私政策|吧主制度|意见反馈|网络谣言警示