Codeforces Round #841 (Div. 2)

斯凯MRP编辑器源码深度解析:从编译打包到模拟器调试 嵌入式开发中,工具链的设计往往决定开发效率与调试体验。早期功能机平台的MRP(Mobile Resource Platform)编辑器源码,正是一个典型范例。它以C语言为基础,通过交叉编译、资源打包、模拟器解释执行等环节,构成一套完整的嵌入式应用开发环境。其中,编辑器不仅承担代码编辑功能,更通过工程管理、资源ID映射、编译命令封装,将源码转化为可运行的.mrp容器文件。模拟器模块则复刻了虚拟机核心逻辑,支持按键事件、定时器与图形绘制,帮助开发者离线验证逻辑正确性。这套源码的设计思路,对理解嵌入式工具链的构建 阅读详情

B Kill Demodogs

分析

显然要选择(i,i)和(i,i+1)两斜线的元素相加

所以答案可以表示为:\sum\limits_{i=1}^n i^2 + \sum\limits_{i=1}^{n-1} (i+1)i

即:2\sum\limits_{i=1}^{n-1} i^2+n^2+\sum\limits_{i=1}^{n-1}i

根据公式\sum\limits_{k=1}^n k^2=1^2+2^2+3^2+...+n^2=\frac{n^3}{3}+\frac{n^2}{2}+\frac{n}{6}=\frac{n(n+1)(2n+1)}{6}

得答案为\frac{(n-1)n(2n-1)}{3}+n^2+\frac{n(n-1)}{2}

但答案不能直接得这个。因为n的范围为1e9,而ull的范围为1e20,答案的第一项中n^3项最大为1e27,会导致溢出,因此要对答案式子进行变换。

能直接将式子中的每个部分直接逐个放到答案ans上吗?不行

因为(n-1)n(2n-1)能被3整除,但分开后不一定能被3整除,进而导致在相乘->取余->相乘的过程中产生误差。

所以要将原式分解为整数相乘相加的形式。

经过一系列因式分解可得式子\frac{n(2n^2+1)}{3}+\frac{n(n-1)}{2}

因为原式第一项的分子(n-1)n(2n-1)能被3整除,而变换后的式子第一项分子相当于减了一个3n^2(3的倍数),还能被3整除。

所以,如果n不能被3整除,则n(2n^2+1)的因子3必然在2n^2+1中存在;否则因子3一定在n中存在。

至此,可以使用long long进行程序实现。

代码实现

#include<bits/stdc++.h>
#define ll long long
#define rep(i,j,k) for(int i=j;i<=k;i++)
using namespace std;
void solve(){
	ll n;
	ll ans=0;
	cin>>n;

	if(n%3==0){
		ans=2*n*n+1;
		ans=ans%1000000007;
		ans*=n/3;
		ans=ans%1000000007;
	}
	else{
		ans=(2*n*n+1)/3;
		ans=ans%1000000007;
		ans*=n;
		ans=ans%1000000007;
	}
	ans+=(n-1)*n/2;
	ans=ans%1000000007;

	ans=ans*2022;
	ans=ans%1000000007;
	cout<<ans<<"\n";
}
int main(){
	ios_base::sync_with_stdio(false);
	cin.tie(0);
	cout.tie(0);
	int t;
	cin>>t;
	while(t--){
		solve();
	}
	return 0;
} 

C. Even Subarrays

分析

容易看出,不符合要求的区间段异或结果为k^2(k=0,1,2...)。长度为n的子区间段总数为\frac{n(n+1)}{2},所以总数减去不符合要求的区间段个数就是答案ans。

小知识:异或前缀和。若sum5=a_{1}\oplus a_{2}\oplus a_{3}\oplus a_{4}\oplus a_{5},sum2=a_{1}\oplus a_{2},则a_{3}\oplus a_{4}\oplus a_{5}=sum5\oplus sum2

在算异或前缀和的过程中处理答案。步骤:①算出当前位置的异或前缀和x;②暴力查找x分别与所有平方数的异或结果是否出现过(num=cut[x^平方数]),出现次数为numi,ans-=numi;③更新cnt数组,cnt[x]++;

代码实现

#include<bits/stdc++.h>
#define ll long long
#define rep(i,j,k) for(int i=j;i<=k;i++)
using namespace std;
int cnt[1000006];
int sum[1000006];
vector<int>sqr;
void solve(){
	ll n, ans=0;
	memset(cnt,0,sizeof(cnt));
	cnt[0]++;
	cin>>n;
	ans=n*(n+1)/2;
	rep(i,1,n){
		cin>>sum[i];
		sum[i] ^= sum[i-1];
		for(auto x : sqr){
			ans -= cnt[sum[i]^x];
		}
		cnt[sum[i]]++;
	}
	cout<<ans<<"\n";
}
int main(){
	ios_base::sync_with_stdio(false);
	cin.tie(0);
	cout.tie(0);
	for(int i=0;i*i<=400005;i++){
		sqr.push_back(i*i);
	}
	int t;
	cin>>t;
	while(t--){
		solve();
	}
	return 0;
} 

D. Valiant's New Map

分析

关键字:二分答案,二维前缀和处理降低check复杂度。

要敢于大胆地断定可以二分答案。(其实看到n*m<=1e6时就该有所反应。1e6乘上log级的二分很难超过1e9的极限)

然后是确定边界,以及怎么check。

边界:l=1,r=mid(n,m)。可以看出r最大为1e3,很小。

check:对于每个mid,先将原数组a[i][j]中令符合条件的元素等于1,不符合条件的元素等于0,然后令开一个数组存二维前缀和,将判断范围由“单个方块”变为“一个区块”。好处是,原来需要对一个区块的每个元素都做一次判断,单次判断的复杂度为O(mid^2),而现在有了橙色的预处理步骤,对一个区块可以直接通过一步简单运算(二维前缀和的运算)判断该区块是否符合要求,复杂度为O(1)。预处理结束后暴力判断整个n*m区域的每个mid*mid的区块。复杂度O(n*m*log(min(n,m))),最大1e7。

PS:

①代码中的注释为一种 二分不容易错 的写法,值得注意。

②二维vector的定义方法,值得记忆。

代码实现

#include<bits/stdc++.h>
#define ll long long
#define rep(i,j,k) for(int i=j;i<=k;i++)
#define fastio() ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
#define V vector<int>
#define VV vector<V>
#define pii pair<int,int>
#define Vpii vector<pii>
using namespace std;
int n,m;
bool check(int mid, VV a){
	VV sum(n+1, V(m+1));
	rep(i,1,n){
		rep(j,1,m){
			if(a[i][j]>=mid) a[i][j] = 1;
			else a[i][j] = 0;
			sum[i][j] = sum[i-1][j] + sum[i][j-1] - sum[i-1][j-1] + a[i][j];
		}
	}
	rep(i,1,n-mid+1){
		rep(j,1,m-mid+1){
			if(sum[i+mid-1][j+mid-1] - sum[i+mid-1][j-1] - sum[i-1][j+mid-1] + sum[i-1][j-1] == mid*mid)
			return true;
		}
	}
	return false;
}
void solve(){
	int l=1,r,mid;
	cin>>n>>m;
	r=min(n,m);
	VV a(n+1,V(m+1));
	rep(i,1,n){
		rep(j,1,m){
			cin>>a[i][j];
		}
	}
	while(l<r){
		mid=(l+r+1)>>1;
		if(check(mid, a)) l=mid;
		else r=mid-1;
	}
	/*
	int ans;
	while(l<=r){
		mid=(l+r)>>1;
		if(check(mid, a)){
			ans=mid;
			l=mid+1;
		}
		else r=mid-1;
	}
	cout<<ans<<"\n";
	*/
	cout<<r<<"\n";
}
int main(){
	fastio();
	int t;
	cin>>t;
	while(t--){
		solve();
	}
	return 0;
}
(论文速读)PTV3: 更简单、更快速、更强大的3D点云处理新突破 该论文提出PointTransformerV3(PTv3),通过简化设计实现3D点云处理的效率突破。该研究摒弃复杂注意力机制,转而采用点云序列化和补丁注意力等高效方法,将感受野从16点扩展到1024点,在保持高精度的同时实现3倍速度提升和10倍内存优化。PTv3在超过20个室内外场景任务中取得SOTA结果,ScanNet语义分割达79.4%mIoU,Waymo检测提升3.3%APH。核心创新包括四种空间填充曲线序列化模式和xCPE位置编码,为3D感知的工业应用提供了高效解决方案。 阅读详情

相关推荐

基于Python+OpenCV中文及符号检测

一、项目背景与意义在图像处理、文档识别、自动翻译等场景中,中文及符号的准确检测是一个重要且复杂的任务。传统的字符检测方法往往对英文等拉丁字母系的识别效果较好,但对中文及特殊符号的识别准确率较低。本项目旨在利用Python编程语言结合OpenCV库,开发一个能够高效、准确地检测图像中中文及符号的系统,为相关领域的研究和应用提供技术支撑。二、技术实现图像预处理:利用OpenCV的图像处理功能,对输入的图像进行灰度化、二值化、滤波去噪等预处理操作,以提高中文及符号检测的准确性[1]。

2301_79809972的博客 1119

Codeforces Round #841 (Div. 2) and Divide by Zero 2022(A~E)

Codeforces Round #841 (Div. 2) and Divide by Zero 2022(A~E)

m0_62289613的博客 805

Amesim(五):单个悬架系统搭建

一、组成 单个悬架系统组成包括:端子,质量块*2,弹簧,阻尼器,速度路面反馈,路面激励。 二、搭建 打开Amesim,在 library 选择 1D Mechanical 选择质量模块,添加到skech中,并按 ctrl+r 旋转质量块,将箭头朝上,设置规定的力传递正方向 添加弹簧阻尼器,与质量块连接 添加VX模块,将路面的激励传递转化为速度和位移,传递给悬架系统 在...

林小川的博客 7166

Codeforces Round #429 (Div. 2) 841B Godsend(思维)

首先判断是否总和为奇数,如果是则直接一号赢. 如果是偶数,则有两种,如存在奇数(那么一定是偶数个),那么也是一号一定赢,为什么呢,我们可以想象,一号每一次拿一个奇数,都可以带走非常非常多的偶数,那么偶数一定是不够用的.如果没有奇数,那么就二号赢咯./* xzppp */ #include <bits/stdc++.h> using namespace std; #define FFF freo

blog 494

AHB协议中hreadyout和hready_in的区别

上面这张时序图表明master有两笔写传输,第一笔传输为slave1(s1),传输类型为SEQ,在第一笔传输的第二个周期,也就是第一笔传输的dataphase,此时slave1没有准备好被写数据,因此把s1_hreadyout拉低,但此时slave2已经看到自己的NONSEQ传输了,而且slave2已经是准备好了的。重新拿上面的仿真图看一下,由于前一个周期的s1_hreadyout为低电平,所以s2的hready_in也为低电平,那么该周期s2不会对addr以及控制信号进行采样。就不会出现上面的问题。...

weixin_44101336的博客 2865

论文解析-sciPENN

用这2个CITE-seq共有的protein作为训练集,分别将他们特有的protein作为测试集,评估sciPENN对CITE-seq数据集中缺失的protein丰度预测准确度。来自Seurat 4 的PBMC数据集,样本被注射水疱性口炎病毒 (VSV) 载体 HIV 疫苗,数据集包含每个样本注射疫苗0天、3天、7天的CITE-seq数据。PBMCs作为训练集,MALT作为测试集,利用scRNA-seq测试17个蛋白质表达水平。Monocyte:随机取4个样本作为训练集,剩余4个样本作为测试集。

weixin_46065198的博客 1020

Codeforces Round #841 (Div. 2) and Divide by Zero 2022 A-D

等System test的时候顺便水一篇吧233

春弦的博客 1286

YOLO26改进策略【Neck】| CVPR2025 LCA轻量交叉注意力 跨层级双向引导 + 分层降噪增强,提升微小目标特征表达

简单相加、拼接融合无法建立深浅层双向约束关系,浅层微小目标易被深层背景覆盖,深层全局信息难以修正浅层噪声;普通单路自注意力仅单一层内建模依赖,缺少跨层级特征互引导机制,深浅特征信息割裂;标准多头跨注意力计算量大、参数量高,轻量化单模态检测/分割网络部署困难,无法区分前景目标与背景噪声。为此设计单模态轻量化交叉注意力LCA,构建浅层细节、深层语义双分支双向引导结构,轻量完成跨层级特征交互,同步降噪并强化单模态微小目标特征。

Limiiiing的博客 522

Codeforces Round #841 (Div. 2) and Divide by Zero 2022(A-D)

但是这里我们的给定值是一个固定的值,所以我们并没有必要知道某一个区域中的最小值是多少,而是仅仅需要知道这一个区域的最小值是不是小于给定值就可以了。就这样,对于不是最优解的情况,我们可以使用这一种方法不断变成我们的假设。然后问题就成了这样:给定一个框的大小,求有没有一种框法,使得框柱的数字的最小值是给定值。先凭借知觉,我们观察到,好像中间的数字比较大,所以我们尽可能沿着中间的路走。根据样例,可以猜想,最后把n-1个元素变为1,然后相加起来是最大的。首先,要是真的来枚举这一个区间,是不可行的。

xjsc01的博客 642

9篇2章2节:GBD 数据库的数据申请详解

无论您是初入公共卫生领域的学生、资深的科研工作者,还是政策决策者,GBD数据库都将成为您数据分析与决策支持中不可或缺的重要工具。

MD Code 2597

【Agent从入门到实践】40 容错优化:异常处理、重试机制、降级策略

各位小伙伴,咱们的多Agent框架一路优化到现在,决策快、执行效率高、资源用得省,看似啥都行,但只要一遇到网络波动、工具故障、数据异常调用web_search工具时网络超时,整个检索任务直接失败,写作Agent没数据可用向量库连接异常,向量检索直接崩掉,依赖检索结果的Agent全趴窝单个Agent执行出错,整个并行任务流程直接中断,前功尽弃高并发下部分工具调用失败,框架没有备用方案,只能返回任务失败说白了,咱们之前的框架只有正常执行逻辑,没有异常兜底逻辑。

人工智能AI技术 908

Codeforces Round #841 (Div. 2) A-D

Codeforces Round #841 (Div. 2) A. Joey Takes Money B. Kill Demodogs C. Even Subarrays D. Valiant's New Map

ymy的博客 218

2025年06月中国电子学会青少年软件编程(图形化)等级考试试卷(三级)答案 + 解析

2025年06月中国电子学会青少年软件编程(图形化)等级考试试卷(三级)答案 + 解析

伶俐角少儿编程 340

Codeforces Round #841 (Div. 2) (A--D)

Codeforces Round #841 (Div. 2) (A--D)

Turing_Sheep的博客 820

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

Codeforces Round #841 (Div. 2) C. Even Subarrays

Codeforces Round #841 (Div. 2) C. Even Subarrays

yuanxinya_的博客 698

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

Codeforces Round #841 (Div. 2) and Divide by Zero 2022 (A~D)

比赛名称:Codeforces Round #841 (Div. 2) and Divide by Zero 2022。

weixin_62802134的博客 607

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

Codeforces Round #841 (Div. 2) and Divide by Zero 2022 C-D

Codeforces Round #841 (Div. 2) and Divide by Zero 2022 C-D

m0_61857862的博客 290

Codeforces Round #841 (Div. 2) and Divide by Zero 2022

题意:给你长度为n的数组a,问(i,j)对数满足ai^...^aj有偶数个因子。思路:注意到一个数x=p1^a1 * p2^a2 * ...,则因子个数为(a1+1)*(a2+1)*....,只有所有ai为偶数时(此时x是完全平方数),因子个数为奇数。我们用总的对数减去奇数的对数即为答案。我们可以预处理前缀异或和,枚举平方数来统计数量。对于每个前缀异或和sum[i],枚举平方数,若满足sum[i]^(j*j)==sum[k],就说明sum[i]^sum[k]==j*j是非法答案。

qq_62615329的博客 380

C. Even Subarrays 题解【Codeforces Round #841 (Div. 2)】

C. Even Subarrays 题解【Codeforces Round #841 (Div. 2)】

keguaiguai的博客 576

Codeforces Round #841 (Div. 2) D. Valiant‘s New Map

Codeforces Round #841 (Div. 2) D. Valiant's New Map

yuanxinya_的博客 469

Codeforces Round #841 (Div. 2) and Divide by Zero 2022 B. Kill Demodogs

贪心

weixin_62528401的博客 422

【CodeForces】841C. Leha and Function(Codeforces Round #429 (Div. 2))

【题意】定义函数F(n,k)为1~n的集合中选择k个数字,其中最小数字的期望。 给定两个数字集A,B,A中任意数字>=B中任意数字,要求重组A使得对于i=1~n,sigma(F(Ai,Bi))最大。 【算法】数学结论+数学期望+排序 【题解】很无奈,这题放在div2 C,难以推导的期望公式,广为人知的结论,容易观察样例得出的做法,都体现了这道题的不合理性。 F(n,k)=(n+1)/...

weixin_34198762的博客 190

赛后补题:Codeforces Round #841(Div. 2) CF1731C Even Subarrays

Codeforces Round #841(Div. 2) CF1731C Even Subarrays

yingjiayu12的博客 557

Codeforces Round #841 (Div. 2) and Divide by Zero 2022 D. Valiant‘s New Map

Codeforces Round #841 (Div. 2) and Divide by Zero 2022 D. Valiant's New Map 二维ST&二维前缀和

m0_63658130的博客 311

Codeforces Round #429 (Div. 2) 841A Generous Kefa(水)

水题,没什么可说的,判断一下最大值就好./* xzppp */ #include <bits/stdc++.h> using namespace std; #define FFF freopen("in.txt","r",stdin);freopen("out.txt","w",stdout); #define lson MAXN,m,rt<<1 #define rson m+1,r,rt<<1

blog 344
上一篇: D. Make It Round(1759D)
下一篇: Codeforces Round #844 (Div. 1 + Div. 2, based on VK Cup 2022 - Elimination Round) D
mucstdio
博客等级 码龄7年 7粉丝 13原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值