首页 > 其他分享 >2022牛客国庆集训派对day6 C 递归构造 归纳构造

2022牛客国庆集训派对day6 C 递归构造 归纳构造

时间:2022-10-07 17:23:08浏览次数:49  
标签:day6 rep 构造 牛客 long include 向量 define

给出一个m 你需要构造出来m个m维向量 两两向量之间点乘为0 向量每一维只能是1或-1 保证m一定是2的幂次。

直接构造出来那么大的显然不太可能 发现不了什么比较好的规律。

考虑归纳构造。我们已知的是一个2维向量 即 1 1
1 -1 现在考虑通过这个东西生成四维的。

我先让他们整体向右完全复制 1 1 1 1 显然还满足条件
1 -1 1 -1

接下来让他们向下翻折且右下角的变为相反即完成构造。

考虑证明 设当前向量为a 向量平移变为 aa aa和bb显然满足条件

接下来构造和a相对的向量为 a-a a-a和aa显然满足条件 a-a和bb显然也满足条件 a-a和b-b显然也满足条件。

这样即完成了构造叫做归纳构造。

code
//#include<bits/stdc++.h>
#include<iostream>
#include<cstdio>
#include<ctime>
#include<cctype>
#include<queue>
#include<deque>
#include<stack>
#include<iostream>
#include<iomanip>
#include<cstdio>
#include<cstring>
#include<string>
#include<ctime>
#include<cmath>
#include<cctype>
#include<cstdlib>
#include<queue>
#include<deque>
#include<stack>
#include<vector>
#include<algorithm>
#include<utility>
#include<bitset>
#include<set>
#include<map>
#define ll long long
#define db double
#define INF 1000000000
#define inf 100000000000000000ll
#define ldb long double
#define pb push_back
#define put_(x) printf("%d ",x);
#define get(x) x=read()
#define gt(x) scanf("%d",&x)
#define gi(x) scanf("%lf",&x)
#define put(x) printf("%d\n",x)
#define putl(x) printf("%lld\n",x)
#define rep(p,n,i) for(int i=p;i<=n;++i)
#define go(x) for(int i=lin[x],tn=ver[i];i;tn=ver[i=nex[i]])
#define pii pair<int,int>
#define mk make_pair
#define P 1000000007ll
#define gf(x) scanf("%lf",&x)
#define pf(x) ((x)*(x))
#define uint unsigned long long
#define ui unsigned
#define EPS 1e-10
#define sq sqrt
#define a(x) t[x].a
#define sum(x) t[x].sum
#define b(x) t[x].b
#define F first
#define S second
#define mod 998244353
using namespace std;
char *fs,*ft,buf[1<<15];
inline char gc()
{
    return (fs==ft&&(ft=(fs=buf)+fread(buf,1,1<<15,stdin),fs==ft))?0:*fs++;
}
inline int read()
{
    int x=0,f=1;char ch=gc();
    while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=gc();}
    while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=gc();}
    return x*f;
}
const int MAXN=100010;
int n;
int a[1050][1050];
inline void solve(int x)
{
	if(x>n)return;
	int m=x>>1;
	rep(1,m,i)rep(m+1,x,j)a[i][j]=a[i][j-m];
	rep(m+1,x,i)
	{
		rep(1,m,j)a[i][j]=a[i-m][j];
		rep(m+1,x,j)a[i][j]=-a[i-m][j-m];
	}
	solve(x<<1);
}
int main()
{
	freopen("1.in","r",stdin);
	n=read();
	a[1][1]=1;a[1][2]=1;
	a[2][1]=1;a[2][2]=-1;
	solve(4);
	rep(1,n,i){rep(1,n,j)cout<<a[i][j]<<' ';cout<<endl;}
	return 0;
}

标签:day6,rep,构造,牛客,long,include,向量,define
From: https://www.cnblogs.com/chdy/p/16760103.html

相关文章

  • 「牛客网」45道JS能力测评经典题总结
    前言牛客网的45道JS能力评测题个人觉得是非常好的45道js基础检测题,基本就是对自己的JavaScript基础做一个比较全面的评估,包括if语句、循环体、基础操作符、setInterval、s......
  • Flask学习笔记(九)-构造URL(url_for)和重定向
    一、构造URL(url_for)一般我们通过一个URL就可以执行到某一个函数。如果反过来,我们知道一个函数,怎么去获得这个URL呢?url_for函数就可以帮我们实现这个功能。url_for()函数接......
  • 2022牛客OI赛前集训营-提高组(第一场) 奇怪的函数 根号很好用
    奇怪的函数考虑暴力,每次查询\(O(n)\)扫所有操作,修改\(O(1)\)这启发我们平衡复杂度,考虑分块。观察题目性质,可以发现,经过若干次操作后得到的结果一定是一个关于\(x\)的分......
  • 2022牛客OI赛前集训营-提高组(第一场)
    教练给我们打的离线(数据分治忘删,多solve一次,明明复杂度O(n^3)偏偏不想压空间敬重桥廊不挂的话,70+100+50+50,挂了是70+100+0+0/cy懒得写题解。。。......
  • mybatis-plus条件构造器QueryWrapper常用方法
    QueryWrapper常用方法*附加条件构造器QueryWrapper常用方法---这几个肯定够用了*/wrapper.eq("数据库字段名","条件值");//相当于where条件wrapper.between(......
  • 设计模式-构造器模式
    封装复杂对象的构造逻辑,那么这讲的话呢,实际上是这个builder模式,这个构造器模式就是builder,ok,那么这个builder模式所要实现的是一个什么场景呢,就是,是这样的,比如说我们现在要......
  • 牛客网-SQL专项训练25
    ①批处理是指包含一条或多条T-SQL语句的语句组,下列选项中,关于批处理的规则描述正确的是(B) 解析:A选项:不能定义一个check约束后,立即在同一个批处理中使用;C选项:Createdef......
  • 10/3: 牛客 2020 tg1
    挂大分,现在做题面临一个困境,就是有思路而不会实现。A一眼裴蜀定理,注意除以0的情况啊啊啊啊啊啊。B换个不同于题解的思路解释。每一次询问事实上就是把第\(l-1\)个操......
  • 跳石板---牛客网
    #include<iostream>#include<vector>#include<math.h>usingnamespacestd;//计算第i个的全部余数//因为复杂度限制所以值遍历到平方的位置voidgetsum(intn,v......
  • 牛客网高频算法题系列-BM16-删除有序链表中重复的元素-II
    牛客网高频算法题系列-BM16-删除有序链表中重复的元素-II题目描述给出一个升序排序的链表,删除链表中的所有重复出现的元素,只保留原链表中只出现一次的元素。原题目见:BM......