奇奇哥最近在玩一款叫《碼魂3》的遊戲,遊戲中有乙個著名的場景叫環印城箭陣。當你接近這個場景的時候,會忽然從地面下冒出很多幽靈弓箭手向你射出大量弓箭,奇奇哥第一次跑過去的時候被射成了刺蝟。
奇奇哥試了很多次,都沒有通過箭陣,他非常傷心,彷彿失去了靈魂。正在他要放棄的時候,忽然產生了乙個奇妙的想法,如果他引導這些幽靈弓箭手互相攻擊,不就可以通過這個場景了嗎!
奇奇哥嘗試了一下,發現只要前進路線正確(奇奇哥沿直線前進),而且他跑的也足夠快,從左邊冒出來的弓箭手會射到右邊冒出來的弓箭手,右邊冒出來的弓箭手會射到從左邊冒出來的弓箭手,奇奇哥成功找到了攻略箭陣的方法!
但是這樣一條前進路線非常難找,因為必須保證所有弓箭手都被其他弓箭手射死,否則這些弓箭手就會向奇奇哥發起攻擊,所以路線左右兩邊的弓箭手數目必須一致。奇奇哥非常苦惱,面對遊戲中數百個弓箭手,想找到這樣一條路線是非常難的。
請你幫幫奇奇哥,找出一條正確的前進路線,使得路線兩邊的弓箭手數目是一樣的。
第一行是乙個正整數t,表示資料組數( t <= 200000 )
隨後對於每一組資料,第一行是乙個正整數n,表示弓箭手的數量( n是偶數 且 2 <= n <= 200000 )
隨後n行,每行兩個整數x, y,表示第i個弓箭手的位置 (-1000000 <= x, y <= 1000000)
保證任意兩個弓箭手不在同乙個位置,且所有樣例的弓箭手數量之和<=1000000
因為兩點確定一條直線,所以輸出奇奇哥前進路線上任意兩個不同的點(精確到小數點後6位)
146
88410488
7.000000
8.000000
9.000000
4.000000
找一條直線把給出的偶數個座標點平分
先將所有點進行排序,找到最中間兩點,兩點的連線偏移一點點即可滿足題意。
給出的座標點都是整數,偏移量為小數時不會穿過任意一點。
粉色線就是樣例中間兩點連線,黑色是輸出樣例。按著粉色線稍微偏移一點點就是答案。
#include
using
namespace std;
const
int maxn=
1000000007
;typedef
long
long ll;
struct node
w[200005];
bool
cmp(node a,node b)
intmain()
return0;
}
廣東外語外貿大學第16屆程式設計競賽 B 蔥蔥樹
b 蔥蔥樹 1000ms256mb description 這是乙個在工作中的乙個真實樣例!聰哥十分慶幸他加入了acm協會,並成功解決了這個需求,你能解決這個需求嗎?輸入一棵大小為n有根樹,節點編號為1到n且以編號為1的節點為根。這棵樹的結點有0 9的權值。接下來給出q個查詢 每個查詢輸入乙個結點的...
西安電子科技大學第16屆程式設計競賽網路同步賽
牛客網貌似直接複製會變亂碼,真的毒瘤。a 水題直接寫 includeusing namespace std int main cin n int res 0 while n else if flag cout c 直接暴力求出所有值存到陣列裡,排序後輸出第k大的。includeusing names...
西安電子科技大學第16屆程式設計競賽 E題
眾所周知,xieldy最常用的口令是 為了改變這一現狀,他random了乙個01串,並從中擷取了一段作為自己的口令。他選擇的口令滿足以下條件 1.口令串表示的二進位制數在十進位制下可以被表示為3k k 0 2.口令串可以有前導零。現已經random出了01串,他想知道有多少種口令方案可以選擇 不同的...