廣場舞
lq市的市民廣場是乙個多邊形,廣場上鋪滿了大理石的地板磚。
地板磚鋪得方方正正,就像座標軸紙一樣。
以某四塊磚相接的點為原點,地板磚的兩條邊為兩個正方向,一塊磚的邊長為橫縱座標的單位長度,則所有橫縱座標都為整數的點都是四塊磚的交點(如果在廣場內)。
廣場的磚單調無趣,卻給跳廣場舞的市民們提供了絕佳的參照物。每天傍晚,都會有大批市民前來跳舞。
舞者每次都會選一塊完整的磚來跳舞,兩個人不會選擇同一塊磚,如果一塊磚在廣場邊上導致缺角或者邊不完整,則沒人會選這塊磚。
(廣場形狀的例子參考【圖1.png】)
現在,告訴你廣場的形狀,請幫lq市的市長計算一下,同一時刻最多有多少市民可以在廣場跳舞。
【輸入格式】
輸入的第一行包含乙個整數n,表示廣場是n邊形的(因此有n個頂點)。
接下來n行,每行兩個整數,依次表示n邊形每個頂點的座標(也就是說廣場邊緣拐彎的地方都在磚的頂角上。資料保證廣場是乙個簡單多邊形。
【輸出格式】
輸出乙個整數,表示最多有多少市民可以在廣場跳舞。
【樣例輸入】53
3644
11 -104
【樣例輸出】
7【樣例說明】
廣場如圖1.png所示,一共有7塊完整的地板磚,因此最多能有7位市民一起跳舞。
【資料規模與約定】
對於30%的資料,n不超過100,橫縱座標的絕對值均不超過100。
對於50%的資料,n不超過1000,橫縱座標的絕對值均不超過1000。
對於100%的資料,n不超過1000,橫縱座標的絕對值均不超過100000000(一億)。
資源約定:
峰值記憶體消耗 < 256m
cpu消耗 < 1000ms
請嚴格按要求輸出,不要畫蛇添足地列印類似:「請您輸入...」 的多餘內容。
所有**放在同乙個原始檔中,除錯通過後,拷貝提交該原始碼。
注意: main函式需要返回0
注意: 只使用ansi c/ansi c++ 標準,不要呼叫依賴於編譯環境或作業系統的特殊函式。
注意: 所有依賴的函式必須明確地在原始檔中 #include , 不能通過工程設定而省略常用標頭檔案。
提交時,注意選擇所期望的編譯器型別。
**
老實人的做法,僅供參考
// 廣場舞
#include
using
namespace
std;
#define mx 100000001
#define mi -100000001
int n;
class point
long x, y;
bool
operator == (const point& p)
bool
operator
< (const point& p) const
};point pn[1000];
set pset;
class line
line() = default;
point p1, p2;
long kmom, kson, bmom, bson, left, right, top, bottom;
};class square
for(long y=top, i=0; y>=bottom; --y,++i) }}
square() = default;
long left, right, top, bottom;
point **square;
long width, height;
};square xsquare;
point **square;
line ln[1000];
void gline()
}void init()
if(ln[i].bottom==y)
}if(topsum==0||bottomsum==0) return tset;
if(topsum==bottomsum)
return tset;
}}bool isinsquare(point p)
double y = p.y*1.0, x = p.x*1.0;
long sumleft(0), sumright(0);
set tset = getignore(y);
for(int i=0; iif(tset.find(i) != tset.end()) continue;
line xln = ln[i];
double t = (xln.kmom*xln.bson*x + xln.bmom*xln.kson)/(xln.kson*xln.bson);
if(y>xln.top*1.0||y1.0) continue;
if(y>t) else
if(xln.kmom*1.0/xln.kson*1.0>0)
} if(yif(xln.kmom*1.0/xln.kson*1.0
<0) else
if(xln.kmom*1.0/xln.kson*1.0>0) }}
if(sumleft%2 && sumright%2) return
true;
return
false;
}void test_square()}}
}bool xjudge(point p)
long res(0);
long doit()}}
return res;
}int main()
C 第七屆藍橋杯決賽之廣場舞
題目 lq市的市民廣場是乙個多邊形,廣場上鋪滿了大理石的地板磚。地板磚鋪得方方正正,就像座標軸紙一樣。以某四塊磚相接的點為原點,地板磚的兩條邊為兩個正方向,一塊磚的邊長為橫縱座標的單位長度,則所有橫縱座標都為整數的點都是四塊磚的交點 如果在廣場內 廣場的磚單調無趣,卻給跳廣場舞的市民們提供了絕佳的參...
藍橋杯 第七屆決賽 打靶
打靶 小明參加x星球的打靶比賽。比賽使用電子感應計分系統。其中有一局,小明得了96分。這局小明共打了6發子彈,沒有脫靶。但望遠鏡看過去,只有3個彈孔。顯然,有些子彈準確地穿過了前邊的彈孔。不同環數得分是這樣設定的 1,2,3,5,10,20,25,50 那麼小明的6發子彈得分都是多少呢?有哪些可能情...
第七屆藍橋杯決賽路徑之謎
路徑之謎 小明冒充x星球的騎士,進入了乙個奇怪的城堡。城堡裡邊什麼都沒有,只有方形石頭鋪成的地面。假設城堡地面是 n x n 個方格。如圖1.png 所示。按習俗,騎士要從西北角走到東南角。可以橫向或縱向移動,但不能斜著走,也不能跳躍。每走到乙個新方格,就要向正北方和正西方各射一箭。城堡的西牆和北牆...