考虑奇技淫巧。

  首先是k=2。对向量维护一个前缀和,每次将当前向量与前缀和点乘。如果点乘结果不等于i-1&1,说明当前向量至少和之前的某个向量的数量积是2的倍数,暴力找就可以了。当然等于i-1&1也不一定就不存在,这本质上还是个随机算法,于是先random_shuffle一下。

  k=3时,注意到12≡22≡1(mod 3),于是维护一个平方前缀和。具体的化一下式子就可以得出。

  调了半天才发现bzoj题面上的数据范围锅了。

#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstdlib>
#include<cstring>
#include<algorithm>
#include<ctime>
using namespace std;
int read()
{
int x=,f=;char c=getchar();
while (c<''||c>'') {if (c=='-') f=-;c=getchar();}
while (c>=''&&c<='') x=(x<<)+(x<<)+(c^),c=getchar();
return x*f;
}
#define N 100010
#define D 110
int n,d,k,a[N][D],b[D],c[D][D],id[N];
int main()
{
#ifndef ONLINE_JUDGE
freopen("bzoj3243.in","r",stdin);
freopen("bzoj3243.out","w",stdout);
const char LL[]="%I64d\n";
#else
const char LL[]="%lld\n";
#endif
n=read(),d=read(),k=read();
for (int i=;i<=n;i++)
for (int j=;j<=d;j++)
a[i][j]=read()%k;
for (int i=;i<=n;i++) id[i]=i;
srand(time());
random_shuffle(id+,id+n+);
if (k==)
{
for (int i=;i<=d;i++) b[i]=a[id[]][i];
for (int i=;i<=n;i++)
{
int tot=;
for (int j=;j<=d;j++)
tot+=a[id[i]][j]&b[j];
if ((tot&)!=(i-&))
{
for (int j=;j<i;j++)
{
int tot=;
for (int k=;k<=d;k++) tot+=a[id[i]][k]&a[id[j]][k];
if (tot%==) {cout<<min(id[i],id[j])<<' '<<max(id[i],id[j])<<endl;return ;}
}
}
for (int j=;j<=d;j++)
b[j]=b[j]+a[id[i]][j]&;
}
}
else
{
for (int i=;i<=d;i++)
for (int j=;j<=d;j++)
c[i][j]=a[id[]][i]*a[id[]][j]%;
for (int i=;i<=n;i++)
{
int tot=;
for (int j=;j<=d;j++)
for (int k=;k<=d;k++)
tot+=a[id[i]][j]*a[id[i]][k]*c[j][k];
if (tot%!=(i-)%)
{
for (int j=;j<i;j++)
{
int tot=;
for (int k=;k<=d;k++)
for (int l=;l<=d;l++)
tot+=a[id[i]][k]*a[id[i]][l]*a[id[j]][k]*a[id[j]][l];
if (tot%==) {cout<<min(id[i],id[j])<<' '<<max(id[i],id[j])<<endl;return ;}
}
}
for (int j=;j<=d;j++)
for (int k=;k<=d;k++)
c[j][k]=(c[j][k]+a[id[i]][j]*a[id[i]][k])%;
}
}
cout<<-<<' '<<-;
return ;
}

BZOJ3243 NOI2013向量内积(随机化)的更多相关文章

  1. 【BZOJ-3243】向量内积 随机化 + 矩阵

    3243: [Noi2013]向量内积 Time Limit: 10 Sec  Memory Limit: 256 MBSec  Special JudgeSubmit: 1249  Solved:  ...

  2. BZOJ3243 [Noi2013]向量内积 【乱搞】

    题目链接 BZOJ3243 题解 模数只有\(2\)或\(3\),可以大力讨论 如果模数为\(2\),乘积结果只有\(1\)或\(0\) 如果一个向量和前面所有向量乘积都为\(1\),那么其和前面向量 ...

  3. 【fake题解】[NOI2013]向量内积

    [fake题解][NOI2013]向量内积 做法1 大暴力.哪里不会T哪里. 做法2 所有数都%=k不影响结果.(废话 k的取值只有2和3,所以肯定是要分类讨论的.k=2肯定简单些啦. k=2 出现的 ...

  4. [Noi2013]向量内积

    来自FallDream的博客,未经允许,请勿转载,谢谢. 两个d 维向量A=[a1,a2,...,ad]与B=[b1,b2,...,bd]的内积为其相对应维度的权值的乘积和,即: $\sum_{i=1 ...

  5. P1224 [NOI2013]向量内积

    传送门 发现这个内积和矩乘有点像,考虑构造一个 $n$ 行 $m$ 列的矩阵 $A$,每一行都是一个题目给定的 $m$ 维向量 设 $B=AA^T$ ,其中 $A^T$ 为 $A$ 的转置矩阵,那么对 ...

  6. luogu P1224 [NOI2013]向量内积

    传送门 挺有意思的一道题 暴力60就是枚举每个向量暴力check,随机选向量就能多骗一些分 然后两个向量内积要模\(k\)为\(0\),那么如果全部不为\(0\)就不合法.先考虑\(k=2\),对于向 ...

  7. BZOJ3243/UOJ121 [Noi2013]向量内积

    本文版权归ljh2000和博客园共有,欢迎转载,但须保留此声明,并给出原文链接,谢谢合作. 本文作者:ljh2000 作者博客:http://www.cnblogs.com/ljh2000-jump/ ...

  8. UOJ#121. 【NOI2013】向量内积 随机化算法,矩阵

    原文链接www.cnblogs.com/zhouzhendong/UOJ121.html 前言 完蛋了我越来越菜了贺题都不会了. 题解 $O(n ^ 2 d) $ 暴力送 60 分. Bitset 优 ...

  9. 洛谷 P1224 - [NOI2013] 向量内积(随机化)

    洛谷题面传送门 一道很神的随机化. 首先由于我们要求向量点乘 \(\bmod k\) 的值,因此我们可以将所有 \(x_{i,j}\) 都模上 \(k\),显然该操作不影响结果正确性. 注意到这里的 ...

随机推荐

  1. 与(&)、或(|)等运算符理解及其特殊用途

    1.按位与运算符(&) 在与运算中两个开关是串联的,如果我们要开灯,需要两个开关都打开灯才会打开.理解为A与B都打开,则开灯,所以是1&1=1任意一个开关没打开,都不开灯,所以其他运算 ...

  2. IO多路复用多并发服务器模板

    import socket import selectors # IO多路复用选择器 epoll_selector = selectors.EpollSelector() # 实例化选择器 serve ...

  3. Docker容器的启动与停止

    启动docker:systemctl start docker 停止docker:systemctl stop docker 重启docker:systemctl restart docker 查看d ...

  4. 32bit 天堂服务端假设教程

    本文作者:smeli(俄罗斯人,于2009年完成该教程) PS:要比国内写的那些教程完整,详细,希望大家喜欢 VS运行库安装………………………………………..2 SQL数据库安装…………………………… ...

  5. 使用NNI的scikit-learn以及Tensorflow分析

    一.NNI简介 NNI (Neural Network Intelligence) 是自动机器学习(AutoML)的工具包. 它通过多种调优的算法来搜索最好的神经网络结构和(或)超参,并支持单机.本地 ...

  6. Xiuno BBS 4.0 修改时间显示

    修罗开源轻论坛程序 - Xiuno BBS 4.0Xiuno BBS 4.0 是一款轻论坛产品,前端基于 BootStrap 4.0.JQuery 3,后端基于 PHP/7 MySQL XCache/ ...

  7. 记一次centos6升级salt-minion启动失败的问题

    记一次centos6升级salt-minion启动失败的问题 作者:耀耀 blog:https://www.liuyao.me 一.起因 升级Salt-minion后 使用/etc/init.d/sa ...

  8. 如何在静态方法或非Spring Bean中注入Spring Bean

           在项目中有时需要根据需要在自己new一个对象,或者在某些util方法或属性中获取Spring Bean对象,从而完成某些工作,但是由于自己new的对象和util方法并不是受Spring所 ...

  9. Scrum Meeting 6 -2014.11.12

    今天apec最后一天,大部分任务都差不多了,局部测试问题不大.大家修复下小细节就可以开始整合了. Member Today’s task Next task 林豪森 协助测试及服务器部署 协助测试及服 ...

  10. MathExam6378

    我的第一个程序 一.预估与实际 PSP2.1 Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟) Planning 计划 15 10 • Estima ...