CF1216X
由于rating限制,和慎老师用小号打了一场div 3
从A到F都没啥思维含量。。感觉最难想的就是C了??
CF1216C
考完以后想hack一下这道题,然后发现满屏都是分类讨论
我大概是写不动 orz
有一个想法就是求出第一个黑块和白块的交S1,第二个黑块和白块的S2,两个交的交S3,然后如果 S1+S2-S3=白块面积 白块就被完全覆盖了
#include<iostream>
#include<cstring>
#include<cstdio>
#include<algorithm>
#define LL long long
using namespace std;
int a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x;
int main()
{
scanf("%d%d%d%d",&a,&b,&c,&d);
scanf("%d%d%d%d",&e,&f,&g,&h);
scanf("%d%d%d%d",&i,&j,&k,&l);
m=max(a,e), n=max(b,f), o=min(c,g), p=min(d,h);
q=max(a,i), r=max(b,j), s=min(c,k), t=min(d,l);
u=max(m,q), v=max(n,r), w=min(o,s), x=min(p,t);
LL s1=0,s2=0,s3=0,s4=0;
if(o>m && p>n) s1=((LL)o-m)*(p-n);
if(s>q && t>r) s2=((LL)s-q)*(t-r);
if(w>u && x>v) s3=((LL)w-u)*(x-v);
if(s1+s2-s3==((LL)c-a)*(d-b)) printf("NO");
else printf("YES");
}
虽然它有30个变量(==)应该还是比大讨论好一点吧