第七屆藍橋杯決賽試題 廣場舞

2021-08-20 00:11:25 字數 2885 閱讀 8801

廣場舞

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 所示。按習俗,騎士要從西北角走到東南角。可以橫向或縱向移動,但不能斜著走,也不能跳躍。每走到乙個新方格,就要向正北方和正西方各射一箭。城堡的西牆和北牆...