当前位置:网站首页>B - 代码派对(女生赛)
B - 代码派对(女生赛)
2022-07-06 09:25:00 【是小张张呀 zsy】
B - 代码派对
Sample Input
2
3
3 1 3 1
1 1 2 3
2 1 3 2
5
1 1 4 5
2 1 3 2
2 2 3 3
4 5 4 5
1 2 2 4
Sample Output
0
4
//现在时刻,2021年10月28号00:38我终于ac了,,,,呜呜呜呜
/*解题思路 利用差分和二维前缀和求出每个格子上覆盖的区间数g[i][j]。 如果这个时候求C(g[i][j],3)的和,那么会产生很多的重复,因为同样的三个区间可以覆盖多个格子。 所以我们只保留覆盖区域左上角的那个格子,因为这个格子一定在区间的上边和左边上,所以最后答案为: 总和 - 删掉左边后的和 - 删掉上边后的和 + 删掉上边和左边后的和(前面重复减了这一块,所以加回去)。 */
#include<iostream>
#include<cstdio>
#include <cstring>
#include <algorithm>
#include <cstring>
#define N 1005
using namespace std;
typedef long long ll;
int a1[N][N],a2[N][N],a3[N][N],a4[N][N];
ll c3[100005];
ll wo(int a[N][N])
{
for(int i=1;i<=1000;i++){
for(int j=1;j<=1000;j++){
a[i][j]=a[i][j]+a[i-1][j]+a[i][j-1]-a[i-1][j-1];//求和;
}
}
ll ans=0;
for(int i=1;i<=1000;i++){
for(int j=1;j<=1000;j++){
ans+=c3[a[i][j]]; //一共(包扣)重叠的有ans;
}
}
return ans;
}
int main(){
int T;
c3[3]=1;
cin>>T;
for(int i=4;i<=100000;i++){
c3[i]=(ll)i*(i-1)*(i-2)/6;//如果有i人选同一个格可组队情况
}
while(T--)
{
int n;
cin>>n;
memset(a1,0,sizeof(a1));//每次循环赋值0;
memset(a2,0,sizeof(a2));
memset(a3,0,sizeof(a3));
memset(a4,0,sizeof(a4));
int x1,y1,x2,y2;
for(int i=1;i<=n;i++){
scanf("%d%d%d%d", &x1, &y1, &x2, &y2);//这用cin就超时了,以后比赛再无cin;
a1[x1][y1]++,a1[x2+1][y1]--,a1[x1][y2+1]--,a1[x2+1][y2+1]++;
//二维差分,给以(x1,y1)到(x2,y2)的矩阵都加1;
a2[x1+1][y1]++,a2[x2+1][y1]--,a2[x1+1][y2+1]--,a2[x2+1][y2+1]++;
//每个矩阵减去左边(除了第一行),x1+1;
a3[x1][y1+1]++,a3[x2+1][y1+1]--,a3[x1][y2+1]--,a3[x2+1][y2+1]++;
//每个矩阵减去上边(除了第一列),y1+1;
a4[x1+1][y1+1]++,a4[x2+1][y1+1]--,a4[x1+1][y2+1]--,a4[x2+1][y2+1]++;
//加上多减的;
}
cout<<wo(a1)-wo(a2)-wo(a3)+wo(a4)<<endl;
}
return 0;
}
边栏推荐
- ucore lab 6
- CSAPP shell lab experiment report
- Cost accounting [17]
- cs零基础入门学习记录
- Cost accounting [19]
- ucorelab4
- 动态规划前路径问题
- Printing quality inspection and verification system Industry Research Report - market status analysis and development prospect forecast
- Report on the market trend, technological innovation and market forecast of printing and decorative paper in China
- C语言学习笔记
猜你喜欢
Learning record: Tim - capacitive key detection
差分(一维,二维,三维) 蓝桥杯三体攻击
Es6---es6 content details
What are the software testing methods? Show you something different
How to become a good software tester? A secret that most people don't know
学习记录:如何进行PWM 输出
Learning record: use stm32f1 watchdog
Learning records: serial communication and solutions to errors encountered
C语言必背代码大全
Flex --- detailed explanation of flex layout attributes
随机推荐
学习记录:STM32F103 时钟系统概述工作原理
Es6--- two methods of capturing promise status as failed
C语言必背代码大全
Crawling cat's eye movie review, data visualization analysis source code operation instructions
LeetCode#36. Effective Sudoku
Brief introduction to libevent
Cost accounting [18]
Visual analysis of data related to crawling cat's eye essays "sadness flows upstream into a river" | the most moving film of Guo Jingming's five years
LeetCode#62. Different paths
Medical colposcope Industry Research Report - market status analysis and development prospect forecast
Market trend report, technological innovation and market forecast of pneumonia drugs obtained by Chinese hospitals
China earth moving machinery market trend report, technical dynamic innovation and market forecast
Research Report on printed circuit board (PCB) connector industry - market status analysis and development prospect forecast
JS --- detailed explanation of JS facing objects (VI)
VS2019初步使用
China chart recorder market trend report, technology dynamic innovation and market forecast
Record of force deduction and question brushing
学习记录:使用STM32F1看门狗
C语言数组的概念
差分(一维,二维,三维) 蓝桥杯三体攻击