NOIP模擬 四輪車

2022-05-12 04:42:13 字數 1354 閱讀 7982

在地圖上散落著 n 個車輪,小 j 想用它們造一輛車。要求如下:

1. 一輛車需要四個車輪,且四個車輪構成乙個正方形

2. 車輪不能移動你需要計算有多少種造車的方案(兩個方案不同當且僅當所用車輪不全相同,座標相同的兩個車輪視為不同車輪)。

30%的資料保證 n ≤ 30

100%的資料保證 1 ≤ n ≤ 1000; |x|, |y| < 20000

其實和這個題一樣的思路。就不贅述了。

然而為什麼要發這篇題解,因為這個題地圖範圍更大,二維陣列存不下,於是我又雙叒被map教做人了!!(本週第三次)

所以這篇題解僅僅小小討論一下stl這群坑比

我去訪問有沒有這個點對,以及出現了多少次的時候 我是這樣寫的

我自己用clock測出來跑了4000多ms,我堅信這不科學啊,我寫的一定是正解,肯定是機子太老年了,於是寫完題玩了乙個多小時。。

然後就真的掛了。。

後來呼叫機房幾個dalao也沒瞅出來問題在哪,在我的一番試驗和推測過後,終於找到了!!

大概是我訪問了不存在的元素!!因為map內部是二分查詢吧??查不到,這可涼涼。

正確姿勢 

意思就是,一定要判一下這個元素是不是存在,再取它的個數。這樣從4000+ms ---> 100+ms

還有一些其他存法,比如bitset,因為40000*40000的地圖是肯定開不下的嗷。。

於是而256m的記憶體可以申請的bitset是8*1024*1024*256=2147483648,是能夠開的下的

用的時候偏移一下

這樣比map跑得更快

貼個簡化的**,能避開stl的坑點盡量避開吧

#include

using

namespace

std;  

#define n 1010

#define rt register

intn,ans;  

intx[n],y[n];  

mapint

,int

>,

int>mp;  

template

<

class

t>  

inline

void

read(t &x)  

while

(ch>='0'&&ch<='9')  

x*=f;  

}  int

main()  

}   

printf("%d\n"

,ans/2);     

return

0;  

}  

gdoi2017四輪模擬最後總結

由於太急導致題目沒看清楚,碼了錯的暴力,這個非常虧,做了無用功。mle不用說,太貪心想打多點暴力分,結果空間開大了,直接爆零得不償失。想法不夠精簡,導致實現起來十分困難,浪費的時間沒拿到應有的分。細節沒考慮好,明明注意到了細節,處理了卻沒處理好。有想法卻看漏條件,導致出了偏差,想到並實現了錯誤的方法...

GDOI2017第四輪模擬

gdoi2017第四輪模擬 對於一棵樹,q個操作可以新增節點或改變乙個點的權值,或詢問整棵樹的帶權重心,強制 1 q 3105。考慮如何找帶權重心,顯然是每次往最大權的子樹走,條件是這個子樹的權2大於整棵樹的權值和。那麼就很明顯了,我們要做的是維護以每個點為根的子樹的權值和,以及每個點的兒子中的最大...

NOIP第二輪模擬 牛的雜技

問題描述 farmer john養了n 1 n 50,000 頭牛,她們已經按1 n依次編上了號。fj所不知道的是,他的所有牛都夢想著從農場逃走,去參加馬戲團的演出。可奶牛們很快發現她們那笨拙的蹄子根本無法在鋼絲或晃動的的鞦韆上站穩 她們還嘗試過把自己裝在大炮裡發射出去,但可想而知,結果是悲慘的 最...