2019.01.27【NOIP提高組】模擬 B 組

又是茹科夫組織
今天題目感覺有點難度兩邊分化
對了

第一題11:27分開始運行
評測完上一題再交?
11:30結束,交一道題一分多鐘
您還要我交題麼?怎麼比賽?
T1:
日常簽到題。
因爲ai=ai-1*3 ai+1=ai*3
反正很容易推出a1~i的和小於ai+1
那麼我們可以發現,設前i個數最大組合的編號爲k
那麼第i+1個數加入後,第k+1小即爲第i+1個數
k+2小爲原來的第一小加上第i+1個數
也就是說,k個數 a[i+1] 那k個數(+a[i+1]後的)
且順序不變。因爲都是從前面推過來的。
所以,假設現在枚舉到第3個數
原數列:1 3 4 k=3
第4個數:9
第4+1~4+k個數:1+9 3+9 4+9
即1 3 4 9 10 12 13
還很容易看出k=k*2+1
然後就很簡單了。。。
T2:
不會,暴力度日

必須吐槽C++語言優勢
打出正解,交上去T60
隔壁HGDdl說他暴力就過了,無需優化。???
四處找人問優化
1.把前向星改成預處理,o1判,沒過,70
2.在某大佬提醒下去掉mod,最後計算,沒過,80
3.去掉continue,計算答案時也不mod(然而沒什麼用)
4.由於計算二進制下有多少個1會算重,提到前面算,80
5.去掉判斷,重賦初值,增加變量,改爲位運算,減少運算次數,90,1900ms
6.在另一dl提醒下,將枚舉下一個與枚舉次數交換,限制枚舉次數,90,1600ms
7.最終去掉讀入數組,改爲變量,100,1000+ms。
真是痛快,真多時間。
有人說不是C++優勢
那我問一下,爲什麼前五頁只有倒數第二是pascal?
爲什麼pascal最快才988ms?
超時的pascal爲什麼都是一步一步優化上去的
T3:
不會,暴力度日,加了個優化。

原來是分治
對於當前l,r,我們有兩種情況
1.a,b不跨mid
2.a,b跨過mid
第一種情況可以通過遞歸l,mid和mid+1,r求出
第二種情況題解講的很清楚
數組有三個
p[i]表示mid+1~i的最小值
q[i]表示mid+1~i的最大值
ss[i]表示mid+1~i每個位置上最大值乘最小值的和
注意:數組要開到0和n+1
三個數組下標爲mid的要用0覆蓋
記住:小心算術運算上溢
小心算術運算上溢
小心算術運算上溢

第一題過水,都不怎麼用想,隨便找規律都能找出來
第二三題較第一題難很多
所以肯定一堆100+。

願意打暴力於是撈了個第七
真爽
真爽
真爽

實名譴責第一題

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章