NOI2013 UOJ122 向量内积
神题......
还是大神讲得比较清晰~orz
http://dffxtz.logdown.com/posts/197950-noi2013-vector-inner-product
启发题:poj3318
#include<cstdio>
#include<cstdlib>
#include<iostream>
#include<fstream>
#include<algorithm>
#include<cstring>
#include<string>
#include<cmath>
#include<queue>
#include<stack>
#include<map>
#include<utility>
#include<set>
#include<bitset>
#include<vector>
#include<functional>
#include<deque>
#include<cctype>
#include<climits>
#include<complex>
//#include<bits/stdc++.h>适用于CF,UOJ,但不适用于poj
#include<ctime> using namespace std; typedef long long LL;
typedef double DB;
typedef pair<int,int> PII;
typedef complex<DB> CP; #define mmst(a,v) memset(a,v,sizeof(a))
#define mmcy(a,b) memcpy(a,b,sizeof(a))
#define re(i,a,b) for(i=a;i<=b;i++)
#define red(i,a,b) for(i=a;i>=b;i--)
#define fi first
#define se second
#define m_p(a,b) make_pair(a,b)
#define SF scanf
#define PF printf
#define two(k) (1<<(k)) template<class T>inline T sqr(T x){return x*x;}
template<class T>inline void upmin(T &t,T tmp){if(t>tmp)t=tmp;}
template<class T>inline void upmax(T &t,T tmp){if(t<tmp)t=tmp;} const DB EPS=1e-;
inline int sgn(DB x){if(abs(x)<EPS)return ;return(x>)?:-;}
const DB Pi=acos(-1.0); inline int gint()
{
int res=;bool neg=;char z;
for(z=getchar();z!=EOF && z!='-' && !isdigit(z);z=getchar());
if(z==EOF)return ;
if(z=='-'){neg=;z=getchar();}
for(;z!=EOF && isdigit(z);res=res*+z-'',z=getchar());
return (neg)?-res:res;
}
inline LL gll()
{
LL res=;bool neg=;char z;
for(z=getchar();z!=EOF && z!='-' && !isdigit(z);z=getchar());
if(z==EOF)return ;
if(z=='-'){neg=;z=getchar();}
for(;z!=EOF && isdigit(z);res=res*+z-'',z=getchar());
return (neg)?-res:res;
} const int maxN=;
const int maxDD=; int N,DD,D,K;
int v[maxN+][maxDD+]; inline int A1(int i,int j)
{
if(K==)
{
int t1=(j+DD-)/DD,t2=j-(t1-)*DD;
return v[i][t1]*v[i][t2];
}
return v[i][j];
}
inline int A2(int i,int j){return A1(j,i);} int F[maxN+],X[maxN+],GX[maxN+],FX[maxN+],A2X[maxN+],A1A2X[maxN+],TX[maxN+];
inline int work()
{
int i,j,k,Case;
if(1LL*N*D<10000000LL) Case=; else Case=;
while(Case--)
{
re(i,,N)X[i]=rand()%; mmst(GX,);
re(i,,N)GX[]+=X[i];
GX[]%=K;
re(i,,N)GX[i]=GX[]; re(i,,N)FX[i]=F[i]*X[i]; mmst(A2X,);
re(i,,D)re(j,,N)A2X[i]+=A2(i,j)*X[j]; mmst(A1A2X,);
re(i,,N)re(j,,D)A1A2X[i]+=A1(i,j)*A2X[j];
re(i,,N)A1A2X[i]%=K; re(i,,N)
{
TX[i]=GX[i]-FX[i]-A1A2X[i];
TX[i]=(TX[i]%K+K)%K;
if(TX[i]!=)
{
re(j,,N)if(j!=i)
{
int res=;
re(k,,DD)res+=v[i][k]*v[j][k];
if(res%K==){PF("%d %d\n",min(i,j),max(i,j));return ;}
}
}
}
}
return ;
} int main()
{
freopen("meow.in","r",stdin);
freopen("meow.out","w",stdout);
srand(time());
int i,j;
N=gint();D=gint();K=gint();
re(i,,N)re(j,,D)v[i][j]=gint()%K;
DD=D;if(K==)D=D*D;
re(i,,N)
{
F[i]=;
re(j,,D) F[i]+=A1(i,j)*A2(j,i);
F[i]%=K;F[i]^=;
}
if(!work())PF("-1 -1\n");
return ;
}
NOI2013 UOJ122 向量内积的更多相关文章
- LOJ 2664. 「NOI2013」向量内积 解题报告
#2664. 「NOI2013」向量内积 两个 \(d\) 维向量 \(A=[a_1, a_2 ,...,a_d]\) 与 \(B=[b_1 ,b_2 ,...,b_d]\) 的内积为其相对应维度的权 ...
- 【BZOJ3243】【NOI2013】向量内积(矩阵,数论)
[BZOJ3243][NOI2013]向量内积(矩阵,数论) 题面 BZOJ 题解 这题好神仙. 首先\(60\)分直接是送的.加点随机之类的可以多得点分. 考虑正解. 我们先考虑一下暴力. 我们把\ ...
- 【NOI2013】向量内积
定义两个$d$维向量${A=[a_1,a_2....a_n]}$,${B=[b_1,b_2....b_n]}$的内积为其相对应维度的权值的乘积和: $${\left \langle A,B \righ ...
- UOJ#121. 【NOI2013】向量内积 随机化算法,矩阵
原文链接www.cnblogs.com/zhouzhendong/UOJ121.html 前言 完蛋了我越来越菜了贺题都不会了. 题解 $O(n ^ 2 d) $ 暴力送 60 分. Bitset 优 ...
- 【fake题解】[NOI2013]向量内积
[fake题解][NOI2013]向量内积 做法1 大暴力.哪里不会T哪里. 做法2 所有数都%=k不影响结果.(废话 k的取值只有2和3,所以肯定是要分类讨论的.k=2肯定简单些啦. k=2 出现的 ...
- [Noi2013]向量内积
来自FallDream的博客,未经允许,请勿转载,谢谢. 两个d 维向量A=[a1,a2,...,ad]与B=[b1,b2,...,bd]的内积为其相对应维度的权值的乘积和,即: $\sum_{i=1 ...
- [BZOJ]3243 向量内积(Noi2013)
小C做了之后很有感觉的题目之一,但因为姿势不对调了很久. Description 两个d 维向量A=[a1,a2,...,ad]与B=[b1,b2,...,bd]的内积为其相对应维度的权值的乘积和,即 ...
- P1224 [NOI2013]向量内积
传送门 发现这个内积和矩乘有点像,考虑构造一个 $n$ 行 $m$ 列的矩阵 $A$,每一行都是一个题目给定的 $m$ 维向量 设 $B=AA^T$ ,其中 $A^T$ 为 $A$ 的转置矩阵,那么对 ...
- luogu P1224 [NOI2013]向量内积
传送门 挺有意思的一道题 暴力60就是枚举每个向量暴力check,随机选向量就能多骗一些分 然后两个向量内积要模\(k\)为\(0\),那么如果全部不为\(0\)就不合法.先考虑\(k=2\),对于向 ...
随机推荐
- openstacks
- 计算N!的质因数2的个数
容易得出N!质因数2的个数 = [N / 2] + [N / 4] + [N / 8] + .... 下面通过一个简单的例子来推导一下过程:N = 10101(二进制表示)现在我们跟踪最高位的1,不考 ...
- JS浏览器对象-History对象
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- 170109、JSONP是什么
一.JSONP的诞生 首先,因为ajax无法跨域,然后开发者就有所思考 其次,开发者发现, <script>标签的src属性是可以跨域的 把跨域服务器写成 调用本地的函数 ,回调数据回来不 ...
- Java使用poi包读取Excel文档
项目需要解析Excel文档获取数据,就在网上找了一些资料,结合自己这次使用,写下心得: 1.maven项目需加入如下依赖: <dependency> <groupId>org. ...
- TCP/IP具体解释--三次握手和四次握手 Dos攻击
TCP连接的状态图 TCP建立连接的三次握手过程,以及关闭连接的四次握手过程 贴一个telnet建立连接,断开连接的使用wireshark捕获的packet截图. 1.建立连接协议(三次握手) (1) ...
- 【Spring MVC系列】--(5)理解AOP
1.java反射 实用:JAVA反射机制及应用例子 http://407827531.iteye.com/blog/1173930 系统:java反射原理 http://china-jianchen. ...
- uva 11825 Hackers' Crackdown (状压dp,子集枚举)
题目链接:uva 11825 题意: 你是一个黑客,侵入了n台计算机(每台计算机有同样的n种服务),对每台计算机,你能够选择终止一项服务,则他与其相邻的这项服务都终止.你的目标是让很多其它的服务瘫痪( ...
- javaScript模块化一
1. Module模式的基本特性 A) 模块化 可重用 B) 封装了变量和function 和全局的namespace不接触 松耦合. C) 只暴露可用public的方法 其他私有方法全部隐藏 ...
- Linux常用命令之 查找命令 find —— 细说 -atime,-mtime,-ctime
我们知道 Linux里面一切皆文件 ,那么我们能否查看一个文件是何时创建的呢?答案是否定的.那我们可以知道些文件关于时间的什么信息呢?那就不得不说文件状态的三个时间了,它们分别是 -atime, -c ...