UVA 1468 Restaurant 計算幾何

2021-08-27 18:04:42 字數 899 閱讀 7942

題目大意:給你n個點和乙個m×m的座標紙(座標範圍0-m-1),n個點中前兩個為a和b,要求給出座標紙上滿足以下性質的點的數目——某乙個點滿足條件當且僅當對任意乙個給定點c,它對a曼哈頓距離小於c對a曼哈頓距離 或 它對b曼哈頓距離小於c對b曼哈頓距離。

思路:顯然符合條件的點都在ab之間(因為如果在ab兩側則假設此點在a左側,則此點到a距離小於a,到b距離也小於b,不符合題意)。則對於任意乙個題目輸入的點,它的可行域(即對於此點符合條件的點的集合)如下:

則整個題目給定點的可行域為所有單個點可行域的交集,則大致如下圖:

所以確定每個點的位置後,從a到b掃一遍確定每個點右側的值,在從b到a掃一遍確定每個點左側的值即可,最後答案即為ab之間每乙個x的高度的和(不能超出上下邊界)。

下面是ac**:

#includeusing namespace std;

const int inf=0x3f3f3f3f;

const int maxn=6e4+5;

int h[maxn];

int main()

h[a.first]=-1;

for(int i=a.first+1;ia.first;i--)h[i]=min(h[i],h[i+1]+1);

long long ans=0;

for(int i=a.first;i<=b.first;i++)

printf("%lld\n",ans);

}return 0;

}

uva146 求下乙個排列

題意 給出乙個字串,求其字典序的下乙個排列。思路 本來想用生成可重集排列的 無意間翻到了函式next permutation,這個專門用來求字典序下乙個排列的函式,簡直就是為這道題目而準備的,第一次用這麼短的 交題目。要想學的好,還是得多利用工具。include include includeusi...

HAProxy1 4 6後端Keepalive配置

keepalive 就是通常所稱的長連線,keepalive帶來的好處是可以減少tcp連線的開銷,這對於短response body的請求效果更加明顯。haproxy後端keepalive指的是在haproxy服務完一次與後端的互動 後,不關閉haproxy和後端 的連線,而是維護這個連線以備後續的...

146,流程控制語句

迴圈結構 for,for in,while,do while 選擇結構 if,switch 注 所有語句都必須在大括號裡面。取出範圍裡面所有的值 for v in 1.3 1 2 3注 v是常量!如果不需要用到迴圈中的常量v,可以使用下劃線 進行忽略 for in1.3 在while中,不需要在每乙...