csp-s模擬測試 56~65

 

csp-s模擬測試 56

 

A. Merchant

對於一個肯定的集合,只多是先減後增、單調增、>0部分的單調減node

減的最優出如今0,check下函數

沒有就直接二分值域,對於x,選出最大的m個函數值驗證。測試

nth_element能夠作到O(n)ui

 

B. Equation

式子能夠化成與自身和x1有關,分奇偶討論x1前的符號。spa

邊的貢獻在其子樹,BIT維護dfs序差分前綴和,區間修改,單點查詢(get祖先鏈上的信息)。code

 

C. Rectangle

鴿.blog

 

 


 

csp-s模擬測試64

A. trade

反悔貪心:element

a<b<c,在b賣a可能不最優,如這狀況。那麼咱們留給c一個反悔的機會。get

發現b-a+c-b=c-a,這就很好了。直接加兩個b,一個b用來抵消在b賣a轉而在取出位置賣a,一個用於單純賣b。hash

 

反悔貪心難在構造反悔操做,實際上是基於性質。

因此拿到題必定要推性質,不管是dp仍是貪心,都能對簡化問題有幫助。

 

B. sum

考試的時候沒有打表,沒看出來規律。

發現$S_{n,m}$能夠由$S_{n-1,m},S_{n,m-1}$遞推,轉移O(1)。

而後把詢問轉換詢問[m,n],莫隊解決。

 

C. building

大模擬。

並查集維護連通關係,把矩形看做點,相鄰關係看做邊,發現點數-邊數(合併次數)=連通塊數,這個式子的前提是無環,並查集保證了這一點。

題解所說相鄰關係與K同階,不太會證,口胡一下就是

矩形有兩邊長爲1,稱爲短邊,反之長邊。全部矩形長邊上的相鄰關係之和不會超過K個,每一個矩形短邊上至多有兩個。然而對於很混亂的狀況,胡了胡了。

這樣的話就容許咱們枚舉相鄰關係,若是咱們能快速的找到相鄰關係,複雜度就有保障。

考場上打了$x_1==x_2$的部分分。不太會處理橫豎交錯的。

 

正解:用一堆vector維護一堆信息,分類不漏就行。

快速查找相鄰關係用lower_bound

Get到新姿式:假如我要在struct node{int l,r;}類型的vector中找到大於等於x的第一個下標

bool cmpr(const Node &a,int b){return a.r<b;}
int p1=lower_bound(h[d-1].begin(),h[d-1].end(),L,cmpr)-h[d-1].begin();

注意cmpr的參數順序

 

 

 

 

 

 

 


 

csp-s模擬測試65

指望得分:60+100+8

實際得分:60+60+10

 

A. Simple

考試的時候沒細看範圍

觀察到n很小,必定有陰謀

若是枚舉y,對於一個y可算出c在[1,q]內有多少正整數x,然而會重複。

用最小y去統計c就行了。

可知$y\in [0,min( \frac {n} {gcd(n,m)},\left \lfloor \frac{q}{m} \right \rfloor)]$

記得加上$x=0,y=i$除去$x=0,y=0$

 

B. Walk

這題考場上寫了個hash表dp,不是菊花圖很優秀

dp方法相似Park,因爲這題沒有up down之分,兒子只用dp一遍,然而考場上傻了,作了兩遍,常數爆炸。

正解:枚舉gcd,加入全部是gcd倍數的邊,求森林最長鏈。稍卡常。

 

最近的低錯在另個裏。

相關文章
相關標籤/搜索