CF2022E2 CF2022E1 Billetes MX

5个4000比特大状态置换算法的设计与分析 下面是 5 个概念性、实验性的 4000 位可逆置换设计。它们都保证是双射,但未经过密码分析,不可直接用于生产系统。风格分别覆盖:三维 SPN、Feistel、可逆元胞自动机、ARX、宽轨迹/Keccak 式结构。 这 5 个设计分别代表了 SPN、Feistel、元胞自动机、ARX、宽轨迹 Keccak 五种不同风格,覆盖了主流大状态置换的构造思路。再次强调:它们只是实验性概念,若要用于实际协议,必须经过严格安全性分析。 阅读详情

题意
求有多少个 rrr 行 sss 列的矩形满足:
1.其中每个元素 ∈[0,230)\in[0,2^{30})∈[0,230)
2.对于任何 1≤i1≤i2≤r , 1≤j1≤j2≤s1 \le i_1 \le i_2 \le r\ ,\ 1\le j_1 \le j_2 \le s1≤i1​≤i2​≤r , 1≤j1​≤j2​≤s 满足 ai1,j1⊕ai1,j2⊕ai2,j1⊕ai2,j2=0a_{i_1,j_1}\oplus a_{i_1,j_2}\oplus a_{i_2,j_1} \oplus a_{i_2,j_2}=0ai1​,j1​​⊕ai1​,j2​​⊕ai2​,j1​​⊕ai2​,j2​​=0
有 kkk 个初始条件ri,ci,vir_i,c_i,v_iri​,ci​,vi​表示第 rir_iri​ 行 cic_ici​ 列的数为 viv_ivi​
有 qqq 个操作Ri,Ci,ViR_i,C_i,V_iRi​,Ci​,Vi​表示第 RiR_iRi​ 行 CiC_iCi​ 列的数变为 ViV_iVi​
保证(ri,ci)(r_i,c_i)(ri​,ci​)与(Rj,Cj)(R_j,C_j)(Rj​,Cj​)互不相同。
输出对于初始状态和qqq个操作后的矩阵方案数。

思路
首先考虑二进制拆分。
每一行与第一行比较。发现如果要满足条件,则对应的每一列数要么都相等要么都不相等。
考虑限制转化为任意一行与第一行比较相同或者相反,然后考虑假若确定了第一行,其他行的取值方案。
不难发现假若其他行还没有确定的位置,则有两种填法,否则至多有一种填法。
我们找到所有满足其他填了数的行都有 1 种填法(也即是存在合法填法)的第一行填法。
观察其他行填的数的影响,不难发现,对于其他行中任意两个填的数相同或者不同的位置,第一行这两个位置上的数也要满足相同或者不同。
因为二进制拆分了,每位只有0,10,10,1两种取值。所以上述限制就可以直接使用扩展域并查集维护。
每一位的答案乘起来就是整体的答案。
由于并查集是可以支持动态加边的,所以边填数边求解是简单的。
总时间复杂度 O(nlog2nlog2V)O(n log_2^nlog_2^V)O(nlog2n​log2V​)

code

#include<bits/stdc++.h>
using namespace std;
#define int long long
void read(int &n){
	n=0;short f=1;char ch=getchar();
	while(ch<'0'||ch>'9'){if(ch=='-') f=-1;ch=getchar();}
	while('0'<=ch&&ch<='9'){n=(n<<1)+(n<<3)+(ch^48);ch=getchar();}
	n=n*f;
}//快读
void write(int n){
	if(n<0){printf("-");write(-n);return;}
	if(n<10){putchar(char(n+'0'));return;}
	write(n/10);
	putchar(char(n%10+'0'));
}//快输
#define mod (1000000007)
int T;
int n,m,k,q;
int r[100005],c[100005],val[100005];
int R[100005],C[100005],Val[100005];
int ans[100005],fa[200005],vis[200005]/*别忘记开两倍空间*/;
int fi[100005],col[100005],led,cnt,sum;
//fi表示第i行的其中一个数方便计算
//col表示第i行与第一行的相同与否
//led表示是否合法,cnt表示有几列没有确定,sum表示有几行没有确定
int find(int x){
	if(fa[x]!=x) fa[x]=find(fa[x]);
	return fa[x];
}//并查集
int fpow(int x,int y){
	int res=1;
	while(y){
		if(y&1) res=res*x%mod;
		x=x*x%mod;
		y>>=1;
	}
	return res;
}//快速幂
void solve(int op){
	for(int i=1;i<=m;i++){
		fa[2*i]=2*i;
		fa[2*i-1]=2*i-1;
		vis[2*i]=0;
		vis[2*i-1]=0;
	}
	for(int i=1;i<=n;i++){
		fi[i]=0;
		col[i]=-1;
	}
	cnt=2*m;sum=n-1;led=1;//初始化
	//k个初始条件
	for(int i=1;i<=k;i++){
		if(r[i]==1&&vis[find(2*c[i])]==0){
			cnt-=2;
			vis[find(2*c[i])]=vis[find(2*c[i]-1)]=1;
		}
		if(fi[r[i]]==0){
			fi[r[i]]=c[i];
			col[r[i]]=(val[i]>>op)&1;
			if(r[i]!=1) sum--;
		}
		else{
			int u=fi[r[i]],v=c[i];
			if(((val[i]>>op)&1)==col[r[i]]){
				if(find(u*2)!=find(v*2)){
					if(!vis[find(u*2)]||!vis[find(v*2)]) cnt--;
					vis[find(u*2)]|=vis[find(v*2)];
					fa[find(v*2)]=find(u*2);
				}
				if(find(u*2-1)!=find(v*2-1)){
					if(!vis[find(u*2-1)]||!vis[find(v*2-1)]) cnt--;
					vis[find(u*2-1)]|=vis[find(v*2-1)];
					fa[find(v*2-1)]=find(u*2-1);
				}
				if(find(u*2-1)==find(u*2)) led=0;
				if(find(v*2-1)==find(v*2)) led=0;//不合法
			}
			else{
				if(find(u*2)!=find(v*2-1)){
					if(!vis[find(u*2)]||!vis[find(v*2-1)]) cnt--;
					vis[find(u*2)]|=vis[find(v*2-1)];
					fa[find(v*2-1)]=find(u*2);
				}
				if(find(u*2-1)!=find(v*2)){
					if(!vis[find(u*2-1)]||!vis[find(v*2)]) cnt--;
					vis[find(u*2-1)]|=vis[find(v*2)];
					fa[find(v*2)]=find(u*2-1);
				}
				if(find(u*2-1)==find(u*2)) led=0;
				if(find(v*2-1)==find(v*2)) led=0;
			}
		}
	}
	ans[0]=ans[0]*fpow(2,cnt/2+sum)%mod*led%mod;//计算答案别忘记cnt要除二
	//q个操作
	for(int i=1;i<=q;i++){
		if(R[i]==1&&vis[find(2*C[i])]==0){
			cnt-=2;
			vis[find(2*C[i])]=vis[find(2*C[i]-1)]=1;
		}
		if(fi[R[i]]==0){
			fi[R[i]]=C[i];
			col[R[i]]=(Val[i]>>op)&1;
			if(R[i]!=1) sum--;
		}
		else{
			int u=fi[R[i]],v=C[i];
			if(((Val[i]>>op)&1)==col[R[i]]){
				if(find(u*2)!=find(v*2)){
					if(!vis[find(u*2)]||!vis[find(v*2)]) cnt--;
					vis[find(u*2)]|=vis[find(v*2)];
					fa[find(v*2)]=find(u*2);
				}
				if(find(u*2-1)!=find(v*2-1)){
					if(!vis[find(u*2-1)]||!vis[find(v*2-1)]) cnt--;
					vis[find(u*2-1)]|=vis[find(v*2-1)];
					fa[find(v*2-1)]=find(u*2-1);
				}
				if(find(u*2-1)==find(u*2)) led=0;
				if(find(v*2-1)==find(v*2)) led=0;
			}
			else{
				if(find(u*2)!=find(v*2-1)){
					if(!vis[find(u*2)]||!vis[find(v*2-1)]) cnt--;
					vis[find(u*2)]|=vis[find(v*2-1)];
					fa[find(v*2-1)]=find(u*2);
				}
				if(find(u*2-1)!=find(v*2)){
					if(!vis[find(u*2-1)]||!vis[find(v*2)]) cnt--;
					vis[find(u*2-1)]|=vis[find(v*2)];
					fa[find(v*2)]=find(u*2-1);
				}
				if(find(u*2-1)==find(u*2)) led=0;
				if(find(v*2-1)==find(v*2)) led=0;
			}
		}
		ans[i]=ans[i]*fpow(2,cnt/2+sum)%mod*led%mod;
	}
}
signed main(){
	read(T);
	while(T--){
		read(n);read(m);read(k);read(q);
		for(int i=1;i<=k;i++) read(r[i]),read(c[i]),read(val[i]);
		for(int i=1;i<=q;i++) read(R[i]),read(C[i]),read(Val[i]);
		for(int i=0;i<=q;i++) ans[i]=1;//答案初始化
		for(int i=0;i<30;i++) solve(i);//每一位计算
		for(int i=0;i<=q;i++) write(ans[i]),puts("");
	}
	return 0;
}
基于单片机的继电器参数测试系统设计 由于原有测试系统在参数设置上过于单一,在对继电器测试过程中需要多次进行器件连接,导致对其测试准确度下降,会造成继电器的二次损伤,基于单片机研究继电器参数测试系统的设计方法。在硬件设计上,构建二级模式集散控制框架,利用单片机进行数据采集和处理,满足实时继电器参数数据的同步控制;设计双极性反向比例输出电路,分别利用电极电阻对继电器两侧电压进行放大,实现继电器实时电压的检测。实验结果:以两组类型断电器为测试对象,分别连接示波器进行真实数据采集,在本文系统的应用下所得参数测试结果,与真实的数据相一致,具有实际应用效 阅读详情

相关推荐

【机械臂算法】基于最小惯性参数集的动力学辨识仿真实践

本文深入探讨了机械臂动力学参数辨识的核心挑战与解决方案,重点阐述了基于最小惯性参数集的理论与方法。通过分析PUMA560实例,详细介绍了利用QR分解法或符号推导法获取可辨识参数集,并系统讲解了从激励轨迹设计、仿真数据采集、线性系统求解到模型验证的完整实践流程,为高精度动力学建模与控制奠定了坚实基础。

weixin_29054399的博客 376

视频隐私脱敏工程化:CSRT/KCF追踪算法在本地推理中的实现与边界

在短视频内容合规审查中,动态遮挡(Dynamic Masking)是高频且高耗时的环节。传统手动关键帧打码不仅效率低下,且在目标快速移动或遮挡时极易出现遮罩漂移。本文从计算机视觉工程角度,解析基于CSRT与KCF算法的目标追踪方案在视频隐私处理中的技术路径、性能权衡及落地实践。

Mysssone的博客 192

【算法拾光】链表 哈希表|K个一组翻转链表 + 两数之和

K个一组翻转链表需分段反转,借助哑节点与前驱指针维护连接,避免断链;两数之和利用哈希表实现O(1)查找,空间换时间,高效定位目标组合。前者考察链表指针操作,后者聚焦映射关系构建,均为面试高频题。

wuqingyigexiaoba的博客 297

JSP期末考试复习习题及答案

以下习题是对于平时课堂小测的整理,如有错误敬请指正! 欢迎一起交流~ 预祝各位小伙伴们考试顺利! Test1 一. 单选题 – 1.(单选题)当用户请求jsp页面时,JSP引擎就会执行该页面的字节码文件响应客户的请求,执行字节码文件的结果是() A. 发送一个JSP源文件到客户端 B. 发送一个Java文件到客户端 C. 发送一个HTML页面到客户端 D. 什么都不做 – 2.(单选题)下列动态网页和静态网页的根本区别描述错误的是( D) A. 静态网页服务器端返回的HTML文件是事先存储好的 B. 动.

技术小白 2万+

从菜鸟到高手:我的Abaqus壳单元S4R、S3R、S8R选择心路历程

第一次打开Abaqus的单元库时,我被琳琅满目的壳单元类型晃花了眼。S4R、S3R、S8R、STRI65、S9R5...这些看似随意的字母数字组合,背后却隐藏着影响仿真精度的关键密码。作为一名从土木工程转行到汽车结构仿真的工程师,我花了三年时间才真正理解如何根据问题特性精准选择壳单元。这段学习历程充满试错与顿悟,今天就用几个关键案例,分享我的壳单元选择方法论。

weixin_42525637的博客 417

排序算法深度笔记(下):非比较类排序的线性突破与工程边界

排序算法时间复杂度额外空间复杂度稳定性是否基于比较选择排序O(N^2)(O(1))不稳定是冒泡排序O(N^2)(O(1))稳定是插入排序O(N^2)(O(1))稳定是归并排序O(N\log N)(O(N))稳定是快速排序O(N\log N)O(log N)不稳定是堆排序O(N\log N)O(1)不稳定是计数排序(O(N + M))O(M))稳定否基数排序O(N)稳定否桶排序平均O(N) / 最坏O(N^2)

2401_87069538的博客 561

跨平台CMake AutoSAR

AutoSAR是汽车行业采用的一种软件架构标准,它旨在提供一个通用的软件平台,使得汽车软件的开发和集成变得更加高效和灵活。总结一下,CMake AutoSAR是一个强大的跨平台工具,为AutoSAR开发提供了便利。通过简单的配置文件和命令,开发人员可以实现高效、灵活的跨平台开发,并加快自动驾驶系统的开发进程。上述示例中,我们定义了一个名为AutoSAR的项目,指定了源代码文件的路径和依赖库的路径。通过简单的配置文件和命令,开发人员可以实现高效、灵活的跨平台开发,并加快自动驾驶系统的开发进程。

EcmFsharp的博客 232

算法日常・每日刷题--<动态规划>42

本题为“不相交的线”,与最长公共子序列问题相似。使用动态规划求解:定义 dp[i][j] 表示 nums1[0:i] 与 nums2[0:j] 的最大不相交连线数。若元素相等,则继承左上值加1;否则取上方或左方最大值。最终返回 dp[m][n],即两数组的最大不相交连线数。时间复杂度 O(mn),空间复杂度 O(mn)。

2503_92261635的博客 20

Go语言爬虫:chromedp 的详细使用

chromedp 是 Go 语言中无头浏览器自动化的终极利器。它能驱动真实的 Chrome 浏览器,处理 JavaScript 渲染、复杂交互和反爬虫机制

数据知道的博客 4492

司法AI系统的架构设计:法律知识图谱如何辅助智能庭审?架构师亲测

简单来说,法律知识图谱是一种采用图数据结构(节点Node + 边Edge/关系Relation)来组织和表达法律领域知识的语义网络。它以。

AI 算法实战派 1088

C语言程序设计题|有序数组插入数字冒泡排序

题目要求将一个数插入有序数组末尾,并用冒泡排序实现整体升序。代码先将输入数存入数组最后位置,再通过双重循环进行冒泡排序,每轮将较大元素向后移动,最终输出11个升序元素。该方法虽时间复杂度为O(n²),但符合题目要求,逻辑清晰,适合初学者理解排序原理。

2301_81429079的博客 692

ResNet改进(50):SKConv和CBAM增强的ResNet模型

动态调整感受野大小- 结合通道和空间注意力模型的核心思想是在ResNet的每个残差块后插入这些注意力模块,使网络能够自适应地关注更重要的特征。模型的核心是类,它在标准ResNet34的基础上:替换了初始卷积层,使用更小的核(3×3)和步长(1)在每个残差块后选择性添加SKConv和CBAM模块# 加载预训练ResNet34# 自定义初始层# 添加注意力机制的残差层通过集成SKConv和CBAM,这个改进的ResNet模型能够更有效地捕捉多尺度特征并关注关键信息区域。

2401_82355416的博客 621

【算法拾光】模拟|外观数列 + 数青蛙

本文总结两道模拟题解法:外观数列通过迭代统计连续数字个数生成下一项,关键在于处理末尾字符;数青蛙则模拟青蛙叫声“croak”状态转移,维护各阶段青蛙数量,记录最大并发数并确保全部完成。共性在于严格遵循流程、细致处理边界与非法情况,锻炼字符串遍历与状态管理能力。

wuqingyigexiaoba的博客 367

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

牛客周赛165C题(前后缀性质,递推,排序,枚举)

题目大意:给定长度为 `n` 的数组,选择 `k ∈ [1,n]`,将前 `k` 个元素整体翻转,后面的元素不变。要求操作后的整个数组非递减,统计满足条件的 `k` 的数量。题目链接:https://ac.nowcoder.com/acm/contest/141721/C。时间复杂度:O(nlogn)

2501_94316951的博客 170

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

【数据结构-3】算法美学之降复杂度

在while循环的循环体内,首先用临时变量保存最后一个位置的数据,再通过for循环把所有元素往后移动一位,最后把tmp中保存的值放到下标为0的位置上去。方法二的思路是:创建新数组,让原数组中后k个数据移动到新数组中前面的位置,让原数组中前numsSize-k个数据移动到新数组中后面的位置,这。这段代码的思路是:三次逆置,第一次逆置前numsSize-k个数据,第二次逆置后k个数据,最后整体逆置。这篇博文分享一道解法不一的算法题,求解过程的目的在于降低算法的时间复杂度,题源力扣。,属于空间换时间的操作。

weixin_44218929的博客 81

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

算法61,判定是否为字符重排

两字符串能互为重排 ⇔。

sheshibenniaodan的博客 199

算法日常・每日刷题--<动态规划>32

给定严格递增的正整数数组,求最长斐波那契子序列长度。使用二维DP,dp[i][j]表示以arr[i]、arr[j]为最后两项的序列长度,初始化均为2。通过哈希表快速查找前一项target = arr[j] - arr[i],若存在且下标小于i,则状态转移:dp[i][j] = dp[k][i] + 1。遍历更新全局最大长度,最终若结果小于3则返回0。时间复杂度O(n²),空间复杂度O(n²)。

2503_92261635的博客 177

算法札记:几何分布在算法题UVA1262的运用

集卡问题求解核心:将集齐n种优惠券的过程分为n个阶段,每个阶段期望购买次数为 $ \frac{n}{k} $(k为剩余种类数),总期望为 $ n \cdot H_n $(调和数)。通过自洽方程推导单阶段期望,无需几何分布或无穷级数,逻辑清晰且适用于大一水平。例如,n=5时期望约11.42,非5。题目要求以带分数形式输出精确结果,算法上需累加分数并化简。

Keven_11的博客 320

不同的二叉搜索树

互不相同的二叉搜索树的种数,以 j (1<=j<=i)为头节点,左子树是 j-1 个数,右子树就是 i - (j - 1) -1 = i - j个数。所以dp[3] = dp[0] * dp[2] + dp[1] * dp[1] + dp[2] * dp[0]头1 = 左子树0节点 * 右子树2节点,二叉搜索树就是排序树,左子树<根节点<右子树,左右子树也满足左子树<根节点<右子树。头2 = 左子树1节点 * 右子树1节点。所以dp[i] += dp[j-1] * dp[i-j]个节点组成且节点值从。

qq_44721738的博客 150

考拉兹猜想 - 7

本文通过引入虚数单位重构Collatz猜想的迭代逻辑,指出偶数减半与奇数“乘3加1”的过程在虚数坐标下等价于归结操作。关键在于:乘3加1使奇数跃升至偶数,随后持续减半,而虚数单位代表“无限减1”,实现无限向有限的转化。无论初始值如何,减半始终主导,最终归结为4-2-1循环。该视角消解了正向思维中的速度竞争疑虑,证明归结是必然结果。

杨铸人的博客 39

SSL证书选RSA还是ECDSA:公钥算法、CA签名与兼容性怎么核对

申请SSL证书时,RSA和ECDSA该怎么选?先分清站点公钥算法、CA签名算法和TLS实际兼容性,再用隔离OpenSSL实验读取两类材料,核对申请、续期和部署交接,避免只看Signature Algorithm就选错。

谁呀!的博客 398

贪心题目:可以到达的最远建筑

为了到达尽可能远的建筑物,在将砖块替换成梯子时,应将高度差最大位置的砖块替换成梯子,此时剩余的砖块数量最多,如果将高度差较小位置的砖块替换成梯子,则剩余的砖块数量较少,能到达的最远建筑物下标不可能更大。开始向后面的建筑物移动,移动过程中维护优先队列存储正高度差,优先队列的队首元素是最大元素,每次遇到正高度差时优先考虑使用砖块,如果砖块数量不够则使用梯子替换最大高度差位置的砖块,直到砖块和梯子都使用完毕时,到达的建筑物即为最远建筑物。如果以最佳方式使用给定的梯子和砖块,返回可以到达的最远建筑物的下标。

stormsunshine的博客 169

从曲线到储层:Techlog/KAPPA 全流程算法、UltraLAB 选型与本地 AI 部署实战

以高频 CPU 保证交互,以充足内存承载多井与多任务,以 NVMe 打通项目和知识库 I/O,再按本地模型、上下文与并发配置 GPU。对 UltraLAB 用户而言,更合理的采购方式是带着真实项目做选型:一组典型井、一套完整解释模板、一个目标大模型、一次多人并发测试。用实测结果确定配置,才能把预算转化为解释效率,而不是闲置算力。软件模块、操作系统与许可条件以厂商当前正式说明为准;硬件建议需结合项目实测。AI 输出只能作为辅助证据,不能替代岩石物理与油藏工程专业审核。

wdf8088的博客 167

【Deep-OC-SORT 01】多轨迹算法Deep-OC-SORT源码分析

本工程基于Deep-OC-SORT核心模块,重构并适配了EmbeddingComputer(外观特征提取)、CMCComputer(相机运动补偿)与OCSort(主跟踪器)三类。前者实现整框/网格模式的特征提取与L2归一化;后者通过稀疏光流或SIFT匹配估计仿射变换,补偿相机运动;主跟踪器融合IoU、外观相似度与方向一致性,支持模块开关与自定义组件,实现高效多目标跟踪。

Jayson 博客 331

【Deep-OC-SORT 05】多轨迹算法Deep-OC-SORT-IoU代价与VDC方向一致性融合过程

本工程在DeepOcSort中实现三路融合关联:IoU(位置重叠)、VDC(速度方向一致性)与外观相似度,通过加权求和生成总相似度,取负作为匈牙利算法的代价。其中,VDC利用轨迹惯性方向与检测方向的点积判断运动一致性,抑制反向误匹配;外观分采用网格化余弦距离并结合动态权重AW,提升遮挡场景下的鲁棒性。支持关闭外观分支(--emb_off),且通过快路径优化加速多数帧处理。最终配对经IoU复核,确保位置合理性,有效减少密集场景下的ID切换。

Jayson 博客 334
上一篇: CF1634E Fair Share
下一篇: P5670 秘籍-反复异或
Water_Problem
博客等级 码龄2年 71粉丝 24原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值