日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

usaco window arear(递归求矩形覆盖面积)

發布時間:2023/11/27 生活经验 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 usaco window arear(递归求矩形覆盖面积) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

這種算法挺厲害的。

畫圖很容易理解但是正確性很難證明。

學習了,。

這是到學校的第一份代碼。

新的一學期又開始了。

/*
ID;jinbo wu
TASK:window
LANG:C++
*/
#include<bits/stdc++.h>
using namespace std;
struct node 
{int x0,y0,x,y;int num;
}w[77];
int k;
double ans;
int m;
void solve(int i,int x0,int y0,int x,int y)
{if(x0>=x||y0>=y)return ;for(;i<=75;i++)if(w[i].x0&&w[i].num>w[k].num) break;if(i==76){m+=(y-y0)*(x-x0);return ;}solve(i+1,x0,y0,min(x,w[i].x0),y);solve(i+1,max(x0,w[i].x),y0,x,y);solve(i+1,max(x0,w[i].x0),max(y0,w[i].y),min(x,w[i].x),y);solve(i+1,max(x0,w[i].x0),y0,min(x,w[i].x),min(y,w[i].y0));return ;
}
int main()
{freopen("window.in","r",stdin);freopen("window.out","w",stdout);char a,b,c;int minn=0;int maxn=0;while(~scanf("%c",&c)){if(c=='w'){scanf("%c%c",&a,&b);if(b>='0'&&b<='9')k=b-'0'+55;else if(b>='a'&&b<='z')k=b-'a'+28;elsek=b-'A';scanf(",%d,%d,%d,%d",&w[k].x0,&w[k].y0,&w[k].x,&w[k].y);w[k].num=++maxn;if(w[k].x0>w[k].x)swap(w[k].x0,w[k].x);if(w[k].y0>w[k].y)swap(w[k].y0,w[k].y);}if(c=='b'){scanf("%c%c",&a,&b);if(b>='0'&&b<='9')k=b-'0'+55;else if(b>='a'&&b<='z')k=b-'a'+28;elsek=b-'A';w[k].num=--minn;}if(c=='t'){scanf("%c%c",&a,&b);if(b>='0'&&b<='9')k=b-'0'+55;else if(b>='a'&&b<='z')k=b-'a'+28;elsek=b-'A';w[k].num=++maxn; }if(c=='d'){scanf("%c%c",&a,&b);if(b>='0'&&b<='9')k=b-'0'+55;else if(b>='a'&&b<='z')k=b-'a'+28;elsek=b-'A';w[k].x0=0;}if(c=='s'){m=0;scanf("%c%c",&a,&b);if(b>='0'&&b<='9')k=b-'0'+55;else if(b>='a'&&b<='z')k=b-'a'+28;elsek=b-'A';ans=(w[k].x-w[k].x0)*(w[k].y-w[k].y0);solve(0,w[k].x0,w[k].y0,w[k].x,w[k].y);ans=m/ans*100;printf("%.3f\n",ans);}}
} 


總結

以上是生活随笔為你收集整理的usaco window arear(递归求矩形覆盖面积)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。