博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
nssl1467-U【差分】
阅读量:2022 次
发布时间:2019-04-28

本文共 757 字,大约阅读时间需要 2 分钟。

正题


题目大意

n ∗ n n*n nn的矩阵,每次让一个下三角形内数字加上一定权值。求最后所有位置的异或和


解题思路

我们发现如果我们对于没行做前缀和的话,我们需要修改的位置就是一个竖直下去的一列和斜着的一条,所以我们可以分别对于竖着的和斜着的做一次差分,我们就可以求出该矩形的差分


c o d e code code

#include
#include
#include
#define ll long longusing namespace std;const ll N=2100;ll n,q,a[N][N],b[N][N],s[N][N],ans;int main(){
scanf("%lld%lld",&n,&q); while(q--){
ll x,y,l,s; scanf("%lld%lld%lld%lld",&x,&y,&l,&s); l=min(l,n); a[x][y]+=s;a[x+l][y]-=s; b[x][y+1]+=s;b[x+l][y+l+1]-=s; } for(ll i=1;i<=n;i++) for(ll j=1;j<=n;j++) a[i][j]+=a[i-1][j],s[i][j]+=a[i][j]; for(ll i=1;i<=n;i++) for(ll j=1;j<=n;j++) b[i][j]+=b[i-1][j-1],s[i][j]-=b[i][j]; for(ll i=1;i<=n;i++) for(ll j=1;j<=n;j++) s[i][j]+=s[i][j-1],ans=ans^s[i][j]; printf("%lld",ans);}

转载地址:http://ndwaf.baihongyu.com/

你可能感兴趣的文章
几个移动应用统计平台
查看>>
jQuery的animate函数
查看>>
Phonegap项目中禁用WebViewBounce
查看>>
Mac下使用Phonegap(Apache Cordorva)开发iOS应用
查看>>
互联网金融网站走马观花
查看>>
两个有序数组中查找第K大数
查看>>
20个Linux服务器安全强化建议(三)
查看>>
Sublimetext3将空格转换为Tab
查看>>
Mysql运行模式及1690错误处理
查看>>
phpExcel导出文件时内存溢出的问题
查看>>
Python处理PDF及生成多层PDF
查看>>
主机名修改后导致计划任务失败
查看>>
Eclipse中运行Tomcat遇到的内存溢出错误
查看>>
列出Windows域中所有的机器
查看>>
PHP命名空间学习笔记
查看>>
Python3.6学习笔记(六)
查看>>
Composer使用体验
查看>>
PhpSpreadsheet生成Excel时实现单元格自动换行
查看>>
PHP获取指定函数定义在哪个文件中及行号
查看>>
Wordpress中文章的特色图像Featured Image究竟存在哪里?
查看>>