Gym 100499H cctv 計算幾何

2021-07-08 15:01:17 字數 2534 閱讀 4300

題目大致意思是乙個矩形,裡面有很多小矩形,小矩形是障礙物,問在四個角上能看到的範圍面積。

解題思路:

因為障礙物只有20個所以取出每個三角形靠近觀望點的三個點。然後將這些點去重排序。然後這些點將這個90度角分割開。對於每個區間暴力列舉所有邊,看那條邊和這個角組成的三角形最小儲存。最後將這些值相加即可。

基本思路可以概括為將可見範圍劃分成許多由乙個角和對應邊組成的三角形來求面積。

#include using namespace std;

#define pi acos(-1)

double ex1[1000],ey1[1000],ex2[1000],ey2[1000];

double jiao[1000];

int vis[1000];

double vmax[1000];

struct edge edge[1000];

int main()

edge[i*2-1].h=x1;

edge[i*2-1].fa=1;

edge[i*2].h=y1;

edge[i*2].fa=0;

if(x1!=0) edge[i*2-1].c1=atan(y1/x1)*pp; else edge[i*2-1].c1=90.0;

if(x1!=0) edge[i*2-1].c2=atan(y2/x1)*pp; else edge[i*2-1].c2=90.0;

if(x2!=0) edge[i*2].c1=atan(y1/x2)*pp; else edge[i*2].c1=90.0;

if(x1!=0) edge[i*2].c2=atan(y1/x1)*pp; else edge[i*2].c2=90.0;

jiao[i*3-2]=edge[i*2-1].c1;

jiao[i*3-1]=edge[i*2-1].c2;

jiao[i*3]=edge[i*2].c1;

}jiao[p*3+1]=0.0;//將邊界的邊和0度,45度,90度加入

jiao[p*3+2]=90;

jiao[p*3+3]=45.0;

nn=p*3+3;

edge[p*2+1].h=n;

edge[p*2+1].c1=0.0;

edge[p*2+1].c2=45.0;

edge[p*2+1].fa=1;

edge[p*2+2].h=m;

edge[p*2+2].c1=45.0;

edge[p*2+2].c2=90.0;

edge[p*2+2].fa=0;

sort(jiao+1,jiao+nn+1);

for(int i=1;i<=nn;i++)

if(gg2==90.0)

if(gg1!=0.0&&gg2!=90.0)

if(ss/**以上為以左下角為例之後為重複**求其他點,只是將輸出座標進行了轉換**/

sa=1;

for(int i=1;i<=p;i++)

edge[i*2-1].h=x1;

edge[i*2-1].fa=1;

edge[i*2].h=y1;

edge[i*2].fa=0;

if(x1!=0) edge[i*2-1].c1=atan(y1/x1)*pp; else edge[i*2-1].c1=90.0;

if(x1!=0) edge[i*2-1].c2=atan(y2/x1)*pp; else edge[i*2-1].c2=90.0;

if(x2!=0) edge[i*2].c1=atan(y1/x2)*pp; else edge[i*2].c1=90.0;

if(x1!=0) edge[i*2].c2=atan(y1/x1)*pp; else edge[i*2].c2=90.0;

jiao[i*3-2]=edge[i*2-1].c1;

jiao[i*3-1]=edge[i*2-1].c2;

jiao[i*3]=edge[i*2].c1;

}jiao[p*3+1]=0.0;

jiao[p*3+2]=90;

jiao[p*3+3]=45.0;

nn=p*3+3;

edge[p*2+1].h=n;

edge[p*2+1].c1=0.0;

edge[p*2+1].c2=45.0;

edge[p*2+1].fa=1;

edge[p*2+2].h=m;

edge[p*2+2].c1=45.0;

edge[p*2+2].c2=90.0;

edge[p*2+2].fa=0;

sort(jiao+1,jiao+nn+1);

for(int i=1;i<=nn;i++)

if(gg2==90.0)

if(gg1!=0.0&&gg2!=90.0)

if(ss=gg2)

if(gg2==90.0)

if(gg1!=0.0&&gg2!=90.0)

if(ss=gg2)

if(gg2==90.0)

if(gg1!=0.0&&gg2!=90.0)

if(ss

gym初級 初始gym環境(二)

import gym env gym.make cartpole v0 print env.action space print env.observation space 輸出結果為 discrete 2 box 4,意思是動作空間中的動作是離散 discrete 的2個動作,狀態空間中的狀態是4...

gym訓練記錄

upd 12.18 老年選手也該看看歐洲的acm了,不然以後就再也沒有機會了 problem a 挺牛逼的結論,與y軸平行的直線最多隻會經過 o log c 個點,拿乙個線段樹維護一下每個x對應哪些圓即可。複雜度 o n log n log c o n problem b 對每種圖討論即可 prob...

gym 倒立擺學習

參考資料 import gym 匯入模組 from policynet import policygradient import matplotlib.pyplot as plt import time display reward threshold 1000 render false 建立乙個環...