← 资瓷一下
这题我调了半天,发现是 Python3 提交的,然后还是不对,又调了半天,发现数组开小了……
思路
这题可以说是比较氵
我们可以先把两块广告牌染色,都染成 1 ,并且 ans + +
然后再判断卡车的面积中有多少个 1 , ans - -就可以了
我画了张简易图,大家可以参考一下
C++ 代码
#include<bits/stdc++.h>
using namespace std;
int w[1001][1001];
int main(){
int a,b,c,d,ans=0;
for(int i=1;i<=2;i++){
cin>>a>>b>>c>>d;
a+=1000;b+=1000;c+=1000;d+=1000;
for(int j=a;j<c;j++){
for(int k=b;k<d;k++){
w[j][k]=1; //给两块广告牌染色成 1
ans++;
}
}
}
cin>>a>>b>>c>>d;
a+=1000;b+=1000;c+=1000;d+=1000;
for(int j=a;j<c;j++){
for(int k=b;k<d;k++){
if(w[j][k]) ans--; //统计卡车的面积中有有多少 1 ,ans--
}
}
cout<<ans;
return 0;
}
最后的for循环中,为啥都是小于c和小于d??
因为染色时用的是<,最后统计也要用<
666
数组开2000*2000后就超内存了=-=
1001*1001就够了hh
abcd都加了1000,最大值就是2000了哇
不过我这个代码是AC的
你说的有一定的道理我在主页上看到的
我:咋没反应???
狂逃
az
妙啊妙啊