【uoj121】 NOI2013—向量内积
http://uoj.ac/problem/121 (题目链接)
题意
给出${n}$个${d}$维向量,问是否有两个不同的向量的内积是${k}$的倍数。
Solution
又卡了一上午常数,我弃了T_T。
右转题解→_→:llg
代码
// uoj121
#include<algorithm>
#include<iostream>
#include<cstdlib>
#include<cstring>
#include<cstdio>
#include<cmath>
#include<ctime>
#define RG register
#define LL long long
#define inf (1ll<<30)
#define MOD 1000000007
#define Pi acos(-1.0)
#define free(a) freopen(a".in","r",stdin),freopen(a".out","w",stdout);
using namespace std;
inline int gi() {
int x=0,f=1;char ch=getchar();
while (ch<'0' || ch>'9') {if (ch=='-') f=-1;ch=getchar();}
while (ch>='0' && ch<='9') {x=x*10+ch-'0';ch=getchar();}
return x*f;
} const int maxn=100010,maxd=110;
int a[maxn][maxd],l[maxn],r[maxn];
int u[maxn],v[maxn],p[maxn],tmp[maxn];
int n,d,K,tt; inline void inc(int &x,RG int y) {
x+=y;while (x>=K) x-=K;
}
inline int Z(RG int i,RG int j) {
if (K==2) return a[i][j];
RG int w=a[i][l[j]]*a[i][r[j]];
return w>=K ? w-K : w;
}
inline bool solve() {
for (RG int i=1;i<=n;++i) v[i]=rand()%K,u[i]=v[i],tmp[i]=0; int sum=0,c=0;
for (RG int i=1;i<=n;i++) inc(sum,v[i]);
for (RG int i=1;i<=n;i++) {
int t=sum-1*v[i]+p[i]*v[i]+K;
v[i]=0,inc(v[i],t);
}
for (RG int i=1;i<=d;i++)
for (RG int j=1;j<=n;j++) inc(tmp[i],u[j]*Z(j,i));
if ((double)clock()/CLOCKS_PER_SEC>=4.5) return 0;
for (RG int i=1;i<=d;i++) u[i]=tmp[i],tmp[i]=0;
for (RG int i=1;i<=n;i++) {
for (RG int j=1;j<=d;j++) inc(tmp[i],u[j]*Z(i,j));
if (tmp[i]!=v[i]) {c=i;break;}
} if (!c) return 0;
for (RG int i=1;i<=n;i++) if (i!=c) {
RG int q=0;
for (RG int j=1;j<=tt;j++) inc(q,a[i][j]*a[c][j]);
if (!q) {
printf("%d %d\n",min(i,c),max(i,c));
return 1;
}
}
return 1;
}
int main() {
srand(time(NULL));
n=gi(),d=gi(),K=gi();
for (RG int i=1;i<=n;i++)
for (RG int j=1;j<=d;j++) a[i][j]=gi()%K;
tt=d;
if (K==3) {
d*=d;
for (RG int i=1;i<=d;i++) l[i]=(i-1)%tt+1,r[i]=(i-l[i])/tt+1;
}
for (RG int i=1;i<=n;i++) {
for (RG int j=1;j<=tt;j++) inc(p[i],a[i][j]);
if (K==3) (p[i]*=p[i])%=K;
}
RG int T=5,flag=0;
while (T--) {
flag=solve();
if (flag) break;
}
if (!flag) puts("-1 -1");
//printf("%.3lf",(double)clock()/CLOCKS_PER_SEC);
return 0;
}
【uoj121】 NOI2013—向量内积的更多相关文章
- BZOJ3243/UOJ121 [Noi2013]向量内积
本文版权归ljh2000和博客园共有,欢迎转载,但须保留此声明,并给出原文链接,谢谢合作. 本文作者:ljh2000 作者博客:http://www.cnblogs.com/ljh2000-jump/ ...
- 【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 ...
- P1224 [NOI2013]向量内积
传送门 发现这个内积和矩乘有点像,考虑构造一个 $n$ 行 $m$ 列的矩阵 $A$,每一行都是一个题目给定的 $m$ 维向量 设 $B=AA^T$ ,其中 $A^T$ 为 $A$ 的转置矩阵,那么对 ...
- luogu P1224 [NOI2013]向量内积
传送门 挺有意思的一道题 暴力60就是枚举每个向量暴力check,随机选向量就能多骗一些分 然后两个向量内积要模\(k\)为\(0\),那么如果全部不为\(0\)就不合法.先考虑\(k=2\),对于向 ...
- 3243: [Noi2013]向量内积 - BZOJ
Description 两个d 维向量A=[a1,a2,...,ad]与B=[b1,b2,...,bd]的内积为其相对应维度的权值的乘积和,即: 现有 n 个d 维向量x1,...,xn ,小喵喵想知 ...
- bzoj 3243: [Noi2013]向量内积
Description 两个d 维向量A=[a1,a2,...,ad]与B=[b1,b2,...,bd]的内积为其相对应维度的权值的乘积和,即: 现有 n 个d 维向量x1,...,xn ,小喵喵想知 ...
- BZOJ3243 NOI2013向量内积(随机化)
考虑奇技淫巧. 首先是k=2.对向量维护一个前缀和,每次将当前向量与前缀和点乘.如果点乘结果不等于i-1&1,说明当前向量至少和之前的某个向量的数量积是2的倍数,暴力找就可以了.当然等于i-1 ...
- BZOJ3243 [Noi2013]向量内积 【乱搞】
题目链接 BZOJ3243 题解 模数只有\(2\)或\(3\),可以大力讨论 如果模数为\(2\),乘积结果只有\(1\)或\(0\) 如果一个向量和前面所有向量乘积都为\(1\),那么其和前面向量 ...
随机推荐
- 在HTML中引用JavaScript中的变量
和上次的代码几乎一样,但这次是引用已经写好的变量.主要功能和用法如下: document对象的getElementId方法得到HTML元素. HTML元素的value属性可以用来设置变量的值. 02. ...
- Vue02
3.Vue对象提供的属性功能 过滤器,就是vue允许开发者自定义的文本格式化函数,可以使用在两个地方:输出内容和操作数据中. 定义过滤器的方式有两种. 1 使用Vue.filter()进行全局定义 V ...
- python的多路复用实现聊天群
在我的<python高级编程和异步io编程>中我讲解了socket编程,这里贴一段用socket实现聊天室的功能的源码,因为最近工作比较忙,后期我会将这里的代码细节分析出来,目前先把代码贴 ...
- PHP中 post方法 与 get方法 的区别
1.Get 方法通过 URL 请求来传递用户的数据,将表单内各字段名称与其内容,以成对的字符串连接,置于 action 属性所指程序的 url 后,如[url]http://www.domain.co ...
- CentOs6.5中安装和配置vsftp简明教程[转]
CentOs6.5中安装和配置vsftp简明教程 林涛 发表于:2017-3-17 10:10 分类:WebServer 标签: 101次 一.vsftp安装篇 复制代码代码如下: # 安装vsftp ...
- 第十二周作业_PSP总结报告
回顾1 (1)回想一下你曾经对计算机专业的畅想 当初你是如何做出选择计算机专业的决定的?经过一个学期,你的看法改变了么,为什么? 你认为过去接触到的课程是否符合你对计算机专业的期待,为什么?经过一个学 ...
- Daily Scrum4 11.6
昨天的任务按时完成了,但是通过不到两周的时间,我们的工作依旧停留在修改上届学长代码中.今天上课和老师提出了这样的问题,助教在TFS上重新加载了10级学长的代码. 从上届学长代码那里我们发现,他们没有实 ...
- BUAAMOOC-Alpha版本发布说明
BUAAMOOC-Alpha版本发布说明 本说明为BUAAMOOCv1.0版发布说明. 软件截图 上届软件截图 可以看到上届的界面做的很简陋,对于登录.查看课程列表.观看视频等操作需要跳转多个页面,视 ...
- 20135234mqy
北京电子科技学院(BESTI) 实 验 报 告 课程:Java实验 班级:1352 姓名: mqy 学号:20135234 成绩: 指导教师 ...
- JAVA实验报告三:敏捷开发与XP实践
实验内容 1. XP基础 2. XP核心实践 3. 相关工具 实验步骤 (一)敏捷开发与XP 软件工程是把系统的.有序的.可量化的方法应用到软件的开发.运营和维护上的过程.软件工程包括下列领域:软件需 ...