这是nike什么系列? 一个css 矩形头部为三角形切了一个三角形

扫描线(4)
Problem Description
Sample Input
Sample Output
这题就是要把矩形差分成如下形式:
然后进行矩形面积并:
谨记问题转化后各数组的大小。
#include&cstdio&
#include&cstring&
#include&cstdlib&
#include&cmath&
#include&cctype&
#include&iostream&
#include&functional&
#include&algorithm&
#define MAXN (50000+10)
#define MAXT (MAXN*5)
#define MAXXi (50000+10)
#define Lson (x&&1)
#define Rson ((x&&1)^1)
int hpos[MAXN];
int x[MAXN*4]={0};
struct SegMent
int x1,x2,h,
SegMent(){}
SegMent(int _x1,int _x2,int _h,int _type):x1(_x1),x2(_x2),h(_h),type(_type){}
friend bool operator&(const SegMent a,const SegMent b){return a.h&b.h;}
struct SegMent_array
SegMent a[MAXN*8];
SegMent_array():size(0)
memset(a,0,sizeof(a));
bool add(int x1,int x2,int y1,int y2)
if (x1==x2||y1==y2) return 0;
a[++size]=SegMent(x1,x2,y1,1);
a[++size]=SegMent(x1,x2,y2,-1);
struct SegMentTree
long long sum[MAXT],cnt[MAXT],len[MAXT];
void fillchar(int _n)
M=1;while (M-2&n) M&&=1;
memset(sum,0,sizeof(sum));
memset(cnt,0,sizeof(cnt));
memset(len,0,sizeof(len));
for (int i=M+1;i&=M+n;i++) len[i]=x[i-M+1]-x[i-M];
for (int i=M-1;i&=1;i--) len[i]=len[i&&1]+len[(i&&1)^1];
void pushup(int x)
sum[x]=(cnt[x])?(len[x]):((x&M)?(sum[Lson]+sum[Rson]):0);
void update(int x)
pushup(x);x&&=1;
void insert(int l,int r,long long c)
l=l-1+M;r=r+1+M;
int ll=l,rr=r;
for (;l^r^1;l&&=1,r&&=1)
if (~l&1) {cnt[l+1]+=c; pushup(l+1);}
if (r&1) {cnt[r-1]+=c; pushup(r-1);}
cout&&endl&&&Push:&&&ll&&' '&&rr&&
update(ll);update(rr);
void print()
for (int i=1;i&=2*M;i++) if (sum[i]) cout&&i&&':'&&sum[i]&&' ';
for (int i=1;i&=2*M;i++) if (cnt[i]) cout&&i&&':'&&cnt[i]&&' ';
int main()
freopen(&Hdu3265.in&,&r&,stdin);
while (scanf(&%d&,&n)!=EOF)
for (int i=1;i&=n;i++)
int x1,y1,x2,y2,x3,y3,x4,y4;
scanf(&%d%d%d%d%d%d%d%d&,&x1,&y1,&x2,&y2,&x3,&y3,&x4,&y4);
a.add(x1,x3,y1,y4);
a.add(x3,x2,y1,y3);
a.add(x1,x4,y4,y2);
a.add(x4,x2,y3,y2);
x[i*4-3]=x1;x[i*4-2]=x2;x[i*4-1]=x3;x[i*4]=x4;
sort(x+1,x+4*n+1);
size=unique(x+1,x+4*n+1)-(x+1);
for (int i=1;i&=i++) cout&&x[i]&&' ';
for (int i=1;i&=i++) hpos[x[i]]=i;
t.fillchar(size-1);
sort(a.a+1,a.a+1+a.size);
cout&&'s';
for (int i=1;i&=a.i++) cout&&a.a[i].x1&&' '&&a.a[i].x2&&' '&&a.a[i].h&&' '&&a.a[i].type&&
long long ans=0;
for (int i=1;i&=a.i++)
ans+=t.sum[1]*((long long)a.a[i].h-a.a[i-1].h);
t.insert(hpos[a.a[i].x1],hpos[a.a[i].x2]-1,a.a[i].type);
cout&&a.a[i].x1&&' '&&a.a[i].x2&&' '&&a.a[i].h&&' '&&a.a[i].type&&
cout&&ans&&
t.print();
cout&&ans&&
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:777346次
积分:16717
积分:16717
排名:第492名
原创:926篇
转载:16篇
评论:31条
(3)(33)(13)(10)(3)(1)(1)(9)(34)(23)(14)(20)(10)(14)(17)(5)(17)(15)(21)(20)(58)(20)(6)(14)(24)(18)(15)(9)(5)(4)(9)(1)(13)(13)(3)(5)(10)(6)(18)(35)(53)(28)(13)(38)(20)(18)(12)(66)(36)(24)(65)(4)扫二维码下载作业帮
拍照搜题,秒出答案,一键查看所有搜题记录
下载作业帮安装包
扫二维码下载作业帮
拍照搜题,秒出答案,一键查看所有搜题记录
把一个长方形去掉一个角,再画一条线,分成两个三角形怎么分?急&
人生的寶岣
扫二维码下载作业帮
拍照搜题,秒出答案,一键查看所有搜题记录
为您推荐:
其他类似问题
扫描下载二维码

我要回帖

更多关于 三角形内接矩形 的文章

 

随机推荐