[氧化镍]七星连珠

2023-12-12 06:51
文章标签 连珠 七星 氧化镍

本文主要是介绍[氧化镍]七星连珠,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

题目


数据范围与提示
N ≤ 50 N\le 50 N50 k ∈ { 2 , 3 } k\in\{2,3\} k{2,3} a i < k 7 a_i<k^7 ai<k7

思路

首先这个每一行、每一列选一个,很让人联想到行列式。但是行列式是选出的元素作 “乘法”(也可以是自定义的乘法),这里是 x o r \rm xor xor,怎么办?

当然是使用 f w t \rm fwt fwt 啦!矩阵每个元素都是一个 f w t \rm fwt fwt 数组,就可以直接乘起来了。恰好加法也支持。可是行列式里有一个 ( − 1 ) (-1) (1) 的系数——可能某个值可以用两种方式得到,一个的系数是 1 1 1,另一个的系数是 − 1 -1 1,相加就消失了!

一个骚操作是,给每个元素一个 随机权值,那么刚好抵消为 0 0 0 的概率就很小。

那么行列式又怎么求?对 f w t \rm fwt fwt 数组的每一位分开考虑。于是这就是一个高斯消元。

时间复杂度 O ( n 4 + n 3 ⋅ V log ⁡ V ) \mathcal O(n^4+n^3\cdot V\log V) O(n4+n3VlogV) 。至于 k = 3 k=3 k=3,显然是为了增加代码难度而进行的杂糅,相信大家都会 3 3 3 进制 f w t \rm fwt fwt 吧。或者你可以点开这个东西的最后一节,里面有一些说法,看看和你的想法是不是一样的。

代码

由于是 L i n u x \rm Linux Linux 环境测评, r a n d ( ) rand() rand() 的范围高达 2 31 − 1 2^{31}-1 2311

#include <cstdio>
#include <iostream>
#include <cstring>
#include <vector>
#include <cstdlib>
using namespace std;
# define rep(i,a,b) for(int i=(a); i<=(b); ++i)
# define drep(i,a,b) for(int i=(a); i>=(b); --i)
typedef long long int_;
inline int readint(){int a = 0; char c = getchar(), f = 1;for(; c<'0'||c>'9'; c=getchar())if(c == '-') f = -f;for(; '0'<=c&&c<='9'; c=getchar())a = (a<<3)+(a<<1)+(c^48);return a*f;
}const int Mod = 1e9+9;
const int gG = 13; // primitive
const int w1 = 115381398;
const int w2 = 884618610;
const int inv2 = (Mod+1)>>1;
const int inv3 = (Mod<<1|1)/3;
inline int qkpow(int_ b,int q){int a = 1;for(; q; q>>=1,b=b*b%Mod)if(q&1) a = a*b%Mod;return a;
}int k; // stupid base
int bit[8]; // 3^x
void FWT(int a[],int n,int opt){if(k == 2){for(int w=1; w<(1<<n); w<<=1)for(int *p=a; p!=a+(1<<n); p+=(w<<1))for(int i=0,t; i<w; ++i){t = p[i], p[i] = (t+p[i+w])%Mod;p[i+w] = (t+Mod-p[i+w])%Mod;if(opt == 0){p[i] = 1ll*p[i]*inv2%Mod;p[i+w] = 1ll*p[i+w]*inv2%Mod;}}}else if(k == 3){for(int w=1; w<=n; ++w)for(int *p=a; p!=a+bit[n]; p+=bit[w])for(int i=0,x,y; i<bit[w-1]; ++i){int j = i+bit[w-1], k = j+bit[w-1];x = p[i]; p[i] = ((x+p[j])%Mod+p[k])%Mod;y = p[j]; p[j] = (x+1ll*y*w1+1ll*p[k]*w2)%Mod;p[k] = (x+1ll*y*w2+1ll*p[k]*w1)%Mod;if(opt == 0){swap(p[j],p[k]);p[i] = 1ll*p[i]*inv3%Mod;p[j] = 1ll*p[j]*inv3%Mod;p[k] = 1ll*p[k]*inv3%Mod;}}}else puts("You bastard!");
}const int MaxN = 52;
const int MaxV = 2187;
int a[MaxN][MaxN][MaxV];
int tmp[MaxV], b[MaxN][MaxN];int gauss(int n){int res = 1, f = 1;for(int i=1,id=0; i<=n; ++i){for(int j=i; j<=n; ++j)if(b[j][i]) id = j;if(!b[id][i]) return 0;if(id != i) res = -res,swap(b[id],b[i]);for(int j=i+1; j<=n; ++j){if(!b[j][i]) continue;rep(k,i+1,n) // designed for ib[j][k] = (1ll*b[j][k]*b[i][i]%Mod+Mod-1ll*b[i][k]*b[j][i]%Mod)%Mod;b[j][i] = 0; // of coursef = 1ll*f*b[i][i]%Mod; // inversion}res = 1ll*res*b[i][i]%Mod;}res = 1ll*res*qkpow(f,Mod-2)%Mod;return (res+Mod)%Mod;
}int main(){readint(); srand(5201314);int n = readint(); k = readint();rep(i,bit[0]=1,7)bit[i] = 3ll*bit[i-1]%Mod;rep(i,1,n) rep(j,1,n)b[i][j] = readint();rep(i,1,n) rep(j,1,n){a[i][j][b[i][j]] = rand()%Mod;FWT(a[i][j],7,1); // transform}drep(now,((k==2)?(1<<7):bit[7])-1,0){rep(i,1,n) rep(j,1,n)b[i][j] = a[i][j][now];tmp[now] = gauss(n);}FWT(tmp,7,0); // get backrep(i,0,MaxV-1) if(tmp[i])printf("%d ",i);return 0;
}

这篇关于[氧化镍]七星连珠的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/483641

相关文章

Python画笔案例-035 绘制五彩连珠

1、绘制五彩连珠 通过 python 的turtle 库绘制五彩连珠图,如下图: 2、实现代码  绘制五彩连珠图,以下为实现代码: """五彩连珠.py"""import turtle# 定义颜色表叫cscs = ['red','orange','yellow','green','cyan']print(turtle.getscreen().getshapes())turtl

七星创客新零售系统:颠覆性商业模式的崛起

大家好,我是微三云周丽,今天给大家分析当下市场比较火爆的商业模式! 小编今天跟大伙们分享什么是七星创客新零售系统? 随着经济的快速发展和科技的不断进步,商业模式的革新成为了企业发展的关键。在这个新旧动能转换、经济结构调整的关键时期,七星创客新零售系统以其独特的商业模式和赚钱方式,正在yin领着商业领域的一场革命。在传统的商业格局中,生意难做、钱难赚已成为普遍现象,但七星创客的兴起,为人

揭秘! 商业模式并不是传销!七星创客模式!

关于“商业模式是否等同于拉人头、传销”的疑问,近期在社会上引起了广泛的讨论。很多人一提到商业模式,就会联想到拉人头、传销等负面概念,似乎所有的商业模式都被贴上了这样的标签。 然而,商业模式的内涵远不止于此。商业活动中的合作与分享自古以来就存在,而“拉人头”只是其中的一种表现形式。因此,我们不能仅仅因为商业模式在线上平台的表现形式,就轻易将其与传销等同起来。 事实上,现代的商业模式呈现出

七星巨亏3.8亿急谋转型网络视频购物

“超长待机62天”、“一部摔不烂的手机”……这些充斥荧屏的电视购物广告词,正是国内电视购物领军企业七星购物过去两年创造销售奇迹的见证,然而这家业内佼佼者的业绩却在2007年划出了一道诡异的弧线。   4月28日,七星购物发布的2007年年报显示,期内其亏损达到3.8亿港元。而在2007年上半年,该公司还取得了4329万港元的净利润。   盈利到巨亏犹如过山车   2006年11月,七星购

APIO2014 连珠线 ( beads)

题意 有 n n n个珠子,一开始只有一个珠子,随后的 n − 1 n-1 n−1个珠子以如下方式之一加入: 1.直接向已有的珠子连一条红线; 2.在已有连红线的两个珠子之间的红线拆段,再分别向它们连一条线。 给出最后形成的树(不给出边的颜色),且每条边有权值,求蓝边权值和的最大值。 题解 原始想法:根据样例猜一下,是不是每个点都可连两条蓝边,保证蓝边不相交,树形DP一下即可?显然是错的(A

斗破年番:七星斗宗地魔老鬼,首战吊打萧炎,毁灭莲逼出千百二老

Hello,小伙伴们,我是拾荒君。 国漫《斗破苍穹年番》第82期超前爆料,在万众瞩目之下,卡点帝再次展现了他的卡点救场技巧。此次,韩枫为了除掉萧炎,以他击杀魔炎谷四位长老为借口,请来了七品斗宗地魔老鬼。更以菩提化体涎为诱饵,企图让老鬼将萧炎置之死地。地魔老鬼的实力果然非同小可,他竟能小范围地操控气候,轻轻的一口气就轻易化解了四品斗宗小医仙的猛烈攻击,这让人不禁感叹,斗宗之间的星级差距,竟然带来了

第十四回 吴学究说三阮撞筹 公孙胜应七星聚义-炫酷终端装逼神器eDEX-UI

吴用说,我想起来有三个人,武艺出众,有胆有识,他们是弟兄三个,在济州梁山泊旁边的石碣村居住,老大叫立地太岁阮小二,老二叫短命二郎阮小五,老三叫活阎罗阮小七。晁盖说我也听说过他们的大名,叫人请他们来吧。吴用说我亲自去请。 于是刘唐去打听日期和线路,吴用去请三阮。吴用请三阮一起喝酒吃饭,阮小五就说:梁山泊的人不怕天不怕地,大碗喝酒,大块吃肉,太快活了。阮小七说:人生一世,草木一秋,我们要是能像他们那

51nod 1705 七星剑(期望DP)

Description 夹克村附近来了一个大魔王,为了保护村民们的安全,夹老爷选出勇士准备去消灭这个大魔王。为了提高勇士的战斗力,夹克老爷决定出资为这个勇士打造一把神兵——七星剑。要打造一把七星剑,得在剑上镶嵌7颗魔法石,在夹克村中一共找到N种不同的魔法石,标号为1,2,3..,N,每种魔法石都有很多个,其中,第i种魔法石售价为C(i)夹克币。打造七星剑需要将魔法石一颗一颗的炼化上去,每成功炼化

七星配资指数早盘低开低走

到午盘,上证指数跌0.69%,报3501.16点,深证成指跌1.03%,报14729.79点,创业板指跌1.20%,报3391.81点。   指数早盘低开低走,盘中小幅上升,创业板指一度跌近3%,有色锻炼、煤炭等资源股活泼,稀土永磁板块涨幅居前,白酒、鸿蒙概念走弱,半导体芯片全体回调,两市个股跌多涨少,炸板率中性,挣钱效应较弱。 板块上,稀土永磁板块逆势走强,惠城环保20%涨停,广晟有色、厦门

解析“七星创客”模式在零售行业的核心要素与成功关键

在互联网时代,商业模式不断创新,其中“七星创客”模式备受关注。零售行业面临着竞争激烈的市场环境,如何衔接“七星创客”模式以提高销售业绩和用户忠诚度成为重要议题。本文将探讨零售行业如何成功衔接“七星创客”模式,并提出具体实施策略,以期为零售企业提供参考。 一、引言 “七星创客”模式是一种以用户推荐和团队建设为核心的商业模式,通过设定推荐奖励、团队业绩奖和伯乐奖等方式,激励用户积极参与推荐和团队建