首页 > 其他分享 >2024.11.20 NOIP模拟 - 模拟赛记录

2024.11.20 NOIP模拟 - 模拟赛记录

时间:2024-11-20 18:18:09浏览次数:1  
标签:2024.11 20 前缀 int sum 差分 数组 dif 模拟

异或(xor

每次所加三角形的范围如图所示:

image

这道题做法较多,我是通过两组差分与前缀和来做的。

首先需要一个三角形差分,使每一次在差分数组中修改时,影响到的范围是一个三角形,比如这样(红色点为 \((x,y)\),即 \((r,c)\)):

image

假设我们真正需要修改的三角形是橙色部分:

image

那么联系到正常差分,很容易想到在 \((x+l,y+l)\) 的位置减去多出的值:

image

然而,左下方还多出了一块矩形,而这不是我们想要的,所以我们可以再额外维护一个矩形的二维差分来抵消这部分多出的贡献(像正常二维差分一样在这块矩形区域内全部减去多出的贡献即可):

image

最后,对所有差分数组求前缀和,矩形差分数组的前缀和很好求,而三角形差分数组的前缀和则要额外注意。根据差分数组影响的三角形范围倒推可以得知,深蓝色部分的三角前缀和应该是这一部分的和:

image

其中深蓝色块的三角前缀和等于紫色块的三角前缀和加上深灰色部分,即(\(sum\) 表示三角前缀和,\(dif\) 表示差分数组):

\[sum_{i,j}=sum_{i-1,j-1}+\sum_{k=1}^{i-1}dif_{k,j} \]

然后就做出来了,时间复杂度 \(O(N^2)\):

#include<cstdio>
#include<algorithm>
#define LL long long
using namespace std;

const int N=1005;
int n,q;
LL tr_dif[N][N],sq_dif[N][N];
LL tr_sum[N][N],sq_sum[N][N];
//triangle, square 

inline void Add(int x,int y,int l,int s)
{
	tr_dif[x][y]+=s;
	if(x+l<=n&&y+l<=n) tr_dif[x+l][y+l]-=s;
	if(x+l<=n) sq_dif[x+l][y]-=s;
	if(x+l<=n&&y+l<=n) sq_dif[x+l][y+l]+=s;
	return;
}

void Calc_sum()
{
	for(int i=1;i<=n;i++)
		for(int j=1;j<=n;j++)
			sq_sum[i][j]=sq_dif[i][j]+sq_sum[i-1][j]+sq_sum[i][j-1]-sq_sum[i-1][j-1];
	for(int j=1;j<=n;j++)
	{
		LL tmp=0;
		for(int i=1;i<=n;i++)
		{
			tmp+=tr_dif[i][j];
			tr_sum[i][j]=tr_sum[i-1][j-1]+tmp;
		}
	}
	return;
}

int main()
{
	freopen("xor.in","r",stdin);
	freopen("xor.out","w",stdout);
	
	scanf("%d%d",&n,&q);
	for(int i=1;i<=q;i++)
	{
		int x,y,l,s;
		scanf("%d%d%d%d",&x,&y,&l,&s);
		Add(x,y,l,s);
	}
	Calc_sum();
	LL ans=0;
	for(int i=1;i<=n;i++)
		for(int j=1;j<=n;j++)
			ans^=tr_sum[i][j]+sq_sum[i][j];
	printf("%lld\n",ans);
	return 0;
}

对于每一行维护一个差分的做法时间复杂度是 \(O(QN)\) 的,似乎也可以卡一卡。

游戏(game

标签:2024.11,20,前缀,int,sum,差分,数组,dif,模拟
From: https://www.cnblogs.com/jerrycyx/p/18558947

相关文章

  • [CSP-S 2024] 染色
    还是决定把这个题做了考场上设计的状态,推了一个小时没推出来下午推了一会,发现这是个刷表状态,填表没法做,转移无处下手但是考CSP的时候我貌似并不知道什么叫刷表设\(f_{i,j,k}\)表示当前到\(i\),上一个填的红色位置在\(j\),蓝色位置在\(k\),暴力刷表转移是3D/0D的,需要排......
  • git 报错 Connection reset by 20.205.243.160 port 22 解决
    在某天愉快地拉取代码时突然发现拉不了了:$gitpullkex_exchange_identification:read:ConnectionresetbypeerConnectionresetby20.205.243.160port22fatal:Couldnotreadfromremoterepository.Pleasemakesureyouhavethecorrectaccessrightsandthe......
  • 实时多模态 AI 的 N 种新可能丨实时互动和大模型专场@RTE2024回顾
      在本届RTE2024大会上,来自产业界和学术界的多位专家深入探讨了实时互动和大模型技术的最新进展及其潜在应用。 西湖心辰联合创始人俞佳、声网AI算法工程师乔齐、MiniMax资深音频算法专家张博闻、商汤科技数字文娱解决方案负责人焦文奎以及面壁智能算法VP翟忠武等......
  • 1-2模块电源电路(11.20)
    DCDC模块电源常用电路:变换器作用:进行电压转换、保证所需的相关输出电容恒流:C三角U=IT;电感恒压:L三角I=UT;V0/Vim=D(1-D);三种非隔离开关电源:降压、升压、升降压电路三种隔离开关电源:反激型变换器、正激型变换器、桥式变换器、反激型:实现多路输出、输出波形电流、控制输......
  • 2024.11.20总结
    本文于github博客同步更新。A:一个数可以被操作当且仅存在一列的顶部元素为它且存在一列的底部元素为它,初始扫一遍,将合法的元素以顶部所在列为关键字扔到小根堆里,每次找到最小的元素添加,然后检查将新露出来的元素是否存在匹配,若结束时未填完即为无解。B:要么在非环边上砍一刀,......
  • 2000度超高温下材料三维应变测量技术及其应用
    在航空航天、能源和化工等工业领域,许多机件是在高温下长期服役的,如发动机、锅炉设备等,它们对材料的高温力学性能提出了很高的要求。高温力学性能是指高温下物料因抵抗外力作用而产生各种变形和应力的能力。正确地评价材料、合理地使用材料、研究新的耐高温材料,为上述工业发展和......
  • NOIP2024 前集训:NOIP2024加赛 6
    前言music《身骑白马》我爱谁跨不过从来也不觉得错自以为抓着痛就能往回忆里躲偏执相信着受诅咒的水晶球阻挡可能心动的理由而你却靠近了逼我们视线交错原地不动或向前走突然在意这分钟眼前荒沙弥漫了等候耳边传来孱弱的呼救追赶要我爱的不保留......
  • P7115 [NOIP2020] 移球游戏
    link这道题我觉得是我做到过极好的构造题了,思路和优化的方法都比较有特点,对数据点范围的分析已经对数据的给分也比较恰到好处。之前做了这道题,特此写一篇题解。首先要批判一下给的小样例,对解题很容易起到反作用。所以构造题不能只看样例,要自己去手搓一下,这样才方便去做。本题我......
  • 《技术规划与技术平台开发管理赋能》公开课(2024年12月20-21日)
    【课程背景】随着国内外高科技领域的产品竞争越来越激烈,产品和解决方案的创新尤其是核心技术的自主创新已成为中国企业乃至整个中国商业社会转型的重要手段。公司的技术战略是基于战略高度对产品机遇和技术发展趋势的前瞻性认识,如果没有这种前瞻性的认识,产品、平台和技术就会在......
  • NOIP 模拟 8
    A星际联邦直接贪,对于每个点,连前缀max,后缀min,再把前缀max和后缀min连,直接跑kruskal就行,因为对\(i\)连,确保了最小,然后再连确保了连通性。正解是无脑菠萝,维护不在同一连通块的最值和次值就行。#include<bits/stdc++.h>#defineintlonglong#definefifirst#define......