我看了前人的题解和讨论,一直没有理解离散的概念。
在昨晚洗澡的时候,突然醒悟,然后拿两个矩形模拟重叠的各个状态,验证猜想。
废话不多说,以下为逻辑解析(热水能促进思维,哈哈)

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
1,结果必然有一个重叠局域被最多的矩形覆盖,这个区域我叫它answer矩形。
2,取该区域的任意一点,这个点必然被最多的矩形覆盖。
3,我们取answer矩形的哪个点呢,、我们取左下角的点,坐标是X(znswer),Y(znswer).因为其XY必是N个矩形的的左下角的XY组合.
4,对于X(znswer),Y(znswer),用离散角度再说明以下,answer矩形的左下脚的X(answer),必是N个矩形中的某一个矩形的左下脚的X
     answer矩形的左下脚的Y(answer),必是N个矩形中的某一个矩形的坐下脚的Y。
5,对于上面的(4)话语不能理解,请使用两个矩形相交,自行脑补,或者留下你的疑惑。
6,使用n*n  (第一个n表示x的可能数量,第二个n表示y的可能数量)种可能,列出所有可能的点,并一一判断这个点是不是我们要找到的点。遍历思想。
7,如何判断这个点呢?让该点和n个矩形一一比较,如果被包含,计数加1,再比较下一个,比到第n个,结束,计数保存,并归零。

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------



#include<stdio.h>
int main()
{
    int n;
    int sz[50][4] = { 0 };
    scanf("%d", &n);
    for (int j = 0; j < 4; j++) {
        for (int i = 0; i < n; i++) {
            scanf("%d", &sz[i][j]);
        }
    }//录入信息
    int tmp=0;
    for(int i=0;i<n;i++){
        for(int j=0;j<n;j++){
            int count=0;
            for(int k=0;k<n;k++){
                if((sz[i][0]>=sz[k][0])&&(sz[i][0]<sz[k][2])){
                    if((sz[j][1]>=sz[k][1])&&(sz[j][1]<sz[k][3])){
                        count++;
                    }
                }
            }
            tmp<count?tmp=count:tmp;
           
        }
    }//离散穷举逻辑,
     
     
     printf("%d\n", tmp);
    return 0;


-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------