[CF1216C] White Sheet - 离散化,模拟

Posted mollnn

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[CF1216C] White Sheet - 离散化,模拟相关的知识,希望对你有一定的参考价值。

虽然分类讨论应该是比较推崇的解法,但是我就是喜欢暴力

#include <bits/stdc++.h>
using namespace std;
#define int long long
 
int a[20][20];
map <int,int> mx,my;
int idx,idy;
int x[9],y[9];
 
void fillrect(int x1,int y1,int x2,int y2,int v) {
    //cout<<x1<<" "<<y1<<" "<<x2<<" "<<y2<<endl;
    for(int i=x1;i<=x2;i++)
        for(int j=y1;j<=y2;j++)
            a[i][j]=v;
}
 
signed main() {
    for(int i=1;i<=6;i++) scanf("%d%d",&x[i],&y[i]);
    for(int i=1;i<=6;i++) (x[i]*=2),(y[i]*=2);
    for(int i=1;i<=6;i++) {
        mx[x[i]]++;mx[x[i]-1]++;mx[x[i]+1]++;
        my[y[i]]++;my[y[i]-1]++;my[y[i]+1]++;
    }
    for(map<int,int>::iterator it=mx.begin();it!=mx.end();it++)
        it->second=++idx;
    for(map<int,int>::iterator it=my.begin();it!=my.end();it++)
        it->second=++idy;
    for(int i=1;i<=6;i++) {
        x[i]=mx[x[i]];
        y[i]=my[y[i]];
    }
    fillrect(x[1],y[1],x[2],y[2],1);
    fillrect(x[3],y[3],x[4],y[4],0);
    fillrect(x[5],y[5],x[6],y[6],0);
    int flag=0;
    for(int i=1;i<=idx;i++)
        for(int j=1;j<=idy;j++)
            flag+=a[i][j];
    cout<<(flag?"YES":"NO")<<endl;
    return 0;
}

以上是关于[CF1216C] White Sheet - 离散化,模拟的主要内容,如果未能解决你的问题,请参考以下文章

White Sheet (矩形面积模板) (Codeforces Round #587 (Div. 3) )

Codeforces Round #587 (Div. 3) C. White Sheet

Codeforces Round #587 (Div. 3) C - White Sheet

Codeforces Round #587 C. White Sheet(思维+计算几何)

题解CF1324F Maximum White Subtree

cf1200 D White Lines(二维差分)