首页 > 其他分享 >abc253F - Operations on a Matrix

abc253F - Operations on a Matrix

时间:2023-09-16 21:12:40浏览次数:43  
标签:Operations Matrix int ll abc253F ask include id op

F - Operations on a Matrix

初看起来感觉不是很好搞,主要是有赋值操作,我们需要知道的是最近一次在这个行上的赋值操作以及之间的贡献

那么我们离线处理,每个3操作都往前找一个最近的同行2操作,然后两个做差就能得到中间的和。

#include<algorithm>
#include<cstdio>
#include<cstring>
#include<vector>
#include<queue>
#define fo(i,a,b) for (ll (i)=(a);(i)<=(b);(i)++)
#define fd(i,b,a) for (int (i)=(b);(i)>=(a);(i)--)
#define mk(x,y) make_pair((x),(y))
#define A puts("YES")
#define B puts("NO")

using namespace std;
typedef double db;
typedef long long ll;
const ll mo=998244353;
const int N = 2e5 + 5;


struct node {
	int op, l, r, x;
};
node a[N];
int n, m, Q, x, r,id;

struct key {
	int id, x;
};
vector<key> q[N];
vector<key> v[N];

ll c[N], ans[N];
int lowbit(int x) {
	return x & (-x);
}
void upd(int x, ll y) {
	for (;x < N;x += lowbit(x)) c[x] += y;
}
ll ask(int x) {
	ll s = 0;
	for (;x;x -= lowbit(x)) s += c[x];
	return s;
}

int main()
{

#ifdef LOCAL
 		freopen("in.txt", "r", stdin);
    	freopen("out.txt", "w", stdout);
#endif	
	scanf("%d %d %d", &n, &m, &Q);
	fo(i, 1, Q) {
		scanf("%d %d %d", &a[i].op, &a[i].l, &a[i].r);
		if (a[i].op == 1) scanf("%d", &a[i].x);
	}
	fd(i, Q, 1) {
		if (a[i].op == 1) continue;
		if (a[i].op == 2) {
			r = a[i].l;
			for (int j = 0;j < (int)v[r].size();j++) {
				q[i].emplace_back(v[r][j]);
			}
			v[r].clear();
		}
		if (a[i].op == 3) {
			v[a[i].l].emplace_back((key) { i, a[i].r });
		}
	}

	fo(i, 1, Q) {
		if (a[i].op == 1) {
			upd(a[i].l, (ll)a[i].x);
			upd(a[i].r + 1, (ll)-a[i].x);
		}
		if (a[i].op == 2) {
			for (int j = 0;j < q[i].size();j++) {
				x = q[i][j].x;
				id = q[i][j].id;
				ans[id] = (ll)a[i].r - ask(x);

				// printf("%d %d %lld\n", id,a[i].r, ask(x));
			}
		}
		if (a[i].op == 3) {
			ans[i] += ask(a[i].r);
		}
	}

	// return 0;
	fo(i, 1, Q) {
		if (a[i].op == 3) printf("%lld\n", ans[i]);
	}



	



	return 0;
}

 
  

标签:Operations,Matrix,int,ll,abc253F,ask,include,id,op
From: https://www.cnblogs.com/ganking/p/17707309.html

相关文章

  • CF1867D Cyclic Operations
    前言赛时没调出来,赛后调了一个上午,最后发现是有个地方没清零。思路首先对于位置\(i\),我们必须要保证进行的操作中,最后一次出现\(i\),\(i\)的后面一定是\(a_i\)。那么我们考虑统计所有位置上的要求,用有向边链接,那么就会出现一个有环有向图(一定有环,因为点数等于边数)。那么,自......
  • 什么是 Data Matrix 码?
    原文链接:https://www.keyence.com.cn/ss/products/auto_id/barcode_lecture/basic_2d/datamatrix/DataMatrix码(ECC200)类型包括长方形与正方形两种,单元数必须是偶数。这份资料汇集了“二维码”相关知识!为您简明易懂地解说QR码、DataMatrix、PDF417等二维码的机制及规格。下......
  • Codeforces Round 804 (Div. 2) B. Almost Ternary Matrix
    给两个偶数\(n\)和\(m\)。任务是构造任意一个二进制矩阵,\(n\timesm\)。对于任意\((i,j)\),有且仅有两个邻居的颜色与\(a_{i,j}\)不同。邻居的定义为\(|x-x'|+|y-y'|=1\)。观察:任何\(n\timesm\)的矩阵若作为一个大型矩阵的子矩阵不会受到限制。于是构造......
  • [转载]生产追溯打印的二维码为什么选用 Data Matrix 编码格式(附QR码介绍)
    Datamatrix原名Datacode,由美国国际资料公司(InternationalDataMatrix,简称IDMatrix)于1989年发明。Datamatrix是一种矩阵式二维条码,其发展的构想是希望在较小的条码标签上存入更多的资料量。Datamatrix的最小尺寸是目前所有条码中最小的,尤其特别适用于小零件的标识,以及直接印刷......
  • AHB_Matrix
    AHB_Matrix目录AHB_MatrixARM的BUSMatrix的作用AHBBusMatrix以及AHB的局限性ARM的BUSMatrix就是多主(Core,DMA等),多从(内部RAM,APB,外部总线等)的交联和仲裁。目的是为了提高不同主机访问不同外设情况下的带宽,另外一个就是简化BusMaster的协议设计。比如,DMA把片内RAM的数据搬运......
  • D. Matrix Cascade
    D.MatrixCascade仔细想想会觉得这题的限定方式很像物理上波的传播。所以我们建立一个结构体,对于给定的n*n的表格上的每个点,都定义它具有四个属性:val该点初始的值是多少(1/0)under_wave_num该点处于几个波下。可以知道,如果一个点处于某些波的影响下,那么该点正下方的点......
  • CF1864D Matrix Cascade 题解
    首先把式子拆一下,可以知道\(x-i\ge|y-j|\)等价于\(x-y\gei-j\)和\(x+y\gei+j\),注意到每次操作\((i,j)\),影响到的点\((x,y)\)均要满足\(x>i\),那么我们每次就必须要按照从上往下的顺序进行,否则上面的点无法影响到,即从第一行开始操作。又注意到对于\((i,j)\)如果执......
  • CF1864D Matrix Cascade
    思路第一时间想到的是暴力,因为同一行的互不影响,所以第一行的\(1\)一定都需要操作,然后把后续的状态更新,再操作第二行的所有的\(1\),但是很可惜是\(O(n^4)\)的复杂度,必然会TLE。所以思考其他的办法,考虑到可以统计有多少操作更改了这个位置的状态,所以可以使用一个类似前缀和的......
  • JTS-IntersectionMatrix 使用说明
    参考:https://blog.csdn.net/weixin_40294332/article/details/124124928参考2:https://vimsky.com/examples/detail/java-method-com.vividsolutions.jts.geom.IntersectionMatrix.set.html......
  • Shopify 内容玩法之 Discounts 折扣码批量上传:matrixify
     折扣码使用的插件是:Matrixify。这个插件可以批量上传Products,Discounts等数据,可以直接使用excel模板创建数据。Discounts的excel模板,见下表:需要注意的几点:Code和Title保持一致,方便在Discounts列表查看当前折扣码的名称DiscountsValue是减掉的金额您需......