题目背景
wxh0l0910给了rncfx一个N∗M的棋盘,一开始所有各自的颜色都是0,然后共价爷依次进行K次操作,第ii次操作要么是把第Li行到第Ri行的所有格子全部刷成颜色Ci, 要么是把第Li列到第Ri列的所有各自全部刷成颜色Ci。 在依次进行完所有操作后,wxh0l0910向rncfxrncfx提出了一个问题:“有多少个无序的角相邻或者边相邻的格子对,他们的颜色相同?”
输入格式
第一行三个整数N,M,K,q。 q=1表示询问的是多少对边相邻或角相邻的格子颜色相同, 否则询问的是有多少对边相邻的格子。 接下来K行, 第i+1行四个整数Typei,Li,Ri,Ci。 当Typei是0的时候表示第一种操作(行染色),否则是第二种操作(列染色)。
输出格式
一行一个整数表示答案
样例输入
Copy
3 4 3 1
0 2 3 2
1 3 3 0
1 2 2 1
样例输出
Copy
8
样例解释与数据范围
见附件
我们可以从后往前考虑询问,开一开链表就可以知道最后每一排和每一列究竟是由哪一个颜色控制的
然后我们对于边相邻的点,可以枚举每一排,讨论列对其贡献的影响
对于点相邻的点,可以枚举每两排,讨论每两列对其的影响
然后就可以列出各4种情况的式子了
对于这各四种情况,我们可以分颜色讨论贡献,用主席树进行维护
两种限制条件可以看做是一个二元组
可以离线一下对排的第一位排序,也可以对于每一种颜色将坐标离散
这就是为什么YJQ 说这是一道码农题了,反正我是真的不想写